Tesseract在android中返回null

Tesseract在android中返回null,android,android-ndk,ocr,tesseract,Android,Android Ndk,Ocr,Tesseract,上个月,我开始利用业余时间利用Tesseract库了解Android OCR。我下载了tesstwo项目&安卓ndk。然后我在一台ubuntu机器上构建了tess 2项目来创建(.so)文件,并成功地得到了它。我只是使用带有(.so)libs的tesstwo项目作为我的android项目的库。(我正在windows 8中开发我的项目) 现在,我有一个android项目和tess两个项目,它们被称为我项目的库。然后我完成了编码以获取图像并将其传递给TessBaseAPI对象,并在getUTF8Te

上个月,我开始利用业余时间利用Tesseract库了解Android OCR。我下载了tesstwo项目&安卓ndk。然后我在一台ubuntu机器上构建了tess 2项目来创建(.so)文件,并成功地得到了它。我只是使用带有(.so)libs的tesstwo项目作为我的android项目的库。(我正在windows 8中开发我的项目)

现在,我有一个android项目和tess两个项目,它们被称为我项目的库。然后我完成了编码以获取图像并将其传递给TessBaseAPI对象,并在
getUTF8Text()
函数中获取转换结果,但转换需要花费太多时间,但每次都返回null

这是我的任务。拍完照片后,我会将图像路径传递到这里

公共类任务扩展了异步任务
{
私有上下文;
TessBaseAPI=新的TessBaseAPI();
@凌驾
受保护的字符串doInBackground(字符串…参数)
{
文件externalStorageDirectory=Environment
.getExternalStorageDirectory();
baseAPI.init(externalStorageDirectory.getAbsolutePath()+
“/ocrsample/tesseract/”,“eng”,仅限TessBaseAPI.OEM_tesseract_);
从ImagePath(picturePath)检查;
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
意图i=新意图(mcontext,ReadActivity.class);
i、 putExtra(“结果”,result);
mcontext.startActivity(i);
baseAPI.clear();
}
private void inspectFromImagePath(字符串picturePath)
{
baseAPI.setPageSegMode(PageSegMode.PSM_单块);
setImage(新文件(picturePath));
String text=baseAPI.getUTF8Text();
bitmap.recycle();
}
}

您尝试将
结果
onPostExecute()
发送到
ReadActivity
类,因为您从
doInBackground
返回了
null
。因此,将返回值更改为一个值或在
onPostExecute()中初始化结果

public class Task extends AsyncTask<String, String, String> 
{
    private Context mcontext;
    TessBaseAPI baseAPI=new TessBaseAPI();

    @Override
    protected String doInBackground(String... params) 
    {
        File externalStorageDirectory = Environment
                .getExternalStorageDirectory();
                baseAPI.init(externalStorageDirectory.getAbsolutePath()+
                "/ocrsample/tesseract/", "eng",TessBaseAPI.OEM_TESSERACT_ONLY);
        inspectFromImagePath(picturePath);
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        Intent i = new Intent(mcontext, ReadActivity.class);
        i.putExtra("result", result);
        mcontext.startActivity(i);
        baseAPI.clear();
    }

    private void inspectFromImagePath(String picturePath) 
    {
        baseAPI.setPageSegMode(PageSegMode.PSM_SINGLE_BLOCK);
        baseAPI.setImage(new File(picturePath));
        String text = baseAPI.getUTF8Text();
        bitmap.recycle();
    }
}