上个月,我开始在闲暇时间使用Tesseract Library获取有关Android OCR的一些知识。我下载了tess-two项目& android ndk。然后我在ubuntu机器上构建了这个tess-two项目来创建(.so)文件并成功获得了它。我只是将(.so)libs这个tess-two项目用作我的android项目的库。 (我正在开发Windows 8中的项目。)
现在我有一个android项目和tess-two项目称为我的项目的库。然后我完成了编码以获取Image并将其传递给TessBaseAPI对象并在getUTF8Text()
函数中获得转换结果但转换需要太多时间,但每次都返回null。
这是我的AsyncTask.After拍摄后我会在这里传递图片路径
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();
}
}
答案 0 :(得分:1)
您尝试从result
向onPostExecute()
类发送ReadActivity
,因为您从null
返回doInBackground
,所以它为空。所以将返回值更改为一个值或初始化onPostExecute()