Android OCR 使用Tesseract

发布时间: 2016/6/27 13:05:41
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图建造 OCR Applicationandroid 使用 Tesseract 库。

这里是附加的代码 ︰

public class TessOCR {
    private TessBaseAPI mTess;

public TessOCR() {
    // TODO Auto-generated constructor stub

    mTess = new TessBaseAPI();
    String datapath = Environment.getExternalStorageDirectory() + "/tesseract/";
    String language = "sseg";
    File dir = new File(datapath + "tessdata/");
    if (!dir.exists())
        dir.mkdirs();
    mTess.init(datapath, language);


}

public String getOCRResult(Bitmap bitmap) {

    mTess.setImage(bitmap);
    String result = mTess.getUTF8Text();

    return result;
}

public void onDestroy() {
    if (mTess != null)
        mTess.end();
}

当我打电话 new TessOCR() 我 MainAcitivity 它给了我的错误

09-02 16:10:56.677 14225-14225/com.example.pulkitmital.swipetabtoolbar E/AndroidRuntime﹕ 致命异常 ︰ 主要 Process : com.example.pulkitmital.swipetabtoolbar,PID: 14225 java.lang.IllegalArgumentException:数据 path 必须包含子文件夹 tessdata ! 在 com.example.pulkitmital.swipetabtoolbar.TessOCR com.googlecode.tesseract.android.TessBaseAPI.init(TessBaseAPI.java:317) com.googlecode.tesseract.android.TessBaseAPI.init(TessBaseAPI.java:344)。(TessOCR.java:22) 在 java.lang.reflect.Method.invoke (本机方法) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905) java.lang.reflect.Method.invoke(Method.java:372) android.app.ActivityThread.main(ActivityThread.java:5343) android.os.Looper.loop(Looper.java:135) android.os.Handler.dispatchMessage(Handler.java:95) android.os.Handler.handleCallback(Handler.java:746) android.view.View$PerformClick.run(View.java:19884) android.view.View.performClick(View.java:4785) com.example.pulkitmital.swipetabtoolbar.Tab1$3.onClick(Tab1.java:168) com.example.pulkitmital.swipetabtoolbar.Tab1.access$000(Tab1.java:42) com.example.pulkitmital.swipetabtoolbar.Tab1.doOCR(Tab1.java:326)

但该文件夹已存在。

请帮我摆脱这一问题。

解决方法 1:

基本错误是由于忘了添加权限读取外部存储在 manifest 文件。

<uses-permission
        android:name="android.permission.READ_EXTERNAL_STORAGE"
        android:maxSdkVersion="18" />

只是将这行添加到您的 AndroidManifest,它将得到解决。


官方微信
官方QQ群
31647020