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