Tesseract在android中返回null

时间:2014-02-23 08:49:35

标签: android android-ndk ocr tesseract

上个月,我开始在闲暇时间使用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();
    }
}

1 个答案:

答案 0 :(得分:1)

您尝试从resultonPostExecute()类发送ReadActivity,因为您从null返回doInBackground,所以它为空。所以将返回值更改为一个值或初始化onPostExecute()

中的结果