使用 Tesseract 的 Android OCR

标签 android android-studio ocr tesseract

我正在尝试使用 Tesseract 库在 android 中构建一个 OCR 应用程序。

附上代码:

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();
}

当我在 MainAcitivity 中调用 new TessOCR() 时出现错误

09-02 16:10:56.677 14225-14225/com.example.pulkitmital.swipetabtoolbar E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.example.pulkitmital.swipetabtoolbar, PID: 14225 java.lang.IllegalArgumentException: Data path must contain subfolder tessdata! at com.googlecode.tesseract.android.TessBaseAPI.init(TessBaseAPI.java:344) at com.googlecode.tesseract.android.TessBaseAPI.init(TessBaseAPI.java:317) at com.example.pulkitmital.swipetabtoolbar.TessOCR.(TessOCR.java:22) at com.example.pulkitmital.swipetabtoolbar.Tab1.doOCR(Tab1.java:326) at com.example.pulkitmital.swipetabtoolbar.Tab1.access$000(Tab1.java:42) at com.example.pulkitmital.swipetabtoolbar.Tab1$3.onClick(Tab1.java:168) at android.view.View.performClick(View.java:4785) at android.view.View$PerformClick.run(View.java:19884) at android.os.Handler.handleCallback(Handler.java:746) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5343) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)

但是文件夹已经存在了。

请帮我解决这个问题。

最佳答案

替换这一行:

mTess.init(datapath, language);

与:

mTess.init(datapath + "tessdata/", language);

关于使用 Tesseract 的 Android OCR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32351027/

相关文章:

php - PHP/jQuery/JavaScript 中的免费 OCR 处理 API

android - Android 2.2 库存浏览器中的抗锯齿

android - 如何在一天中的特定时间停止服务?

android - 如何以编程方式将调用屏幕置于最前面?

java - Android Java 应用程序带有 C++ 纯头库?

android - 带工具的原因是什么 :context in parent layout?

java - 使用 OCR 从图像文件中读取文本的 API

python - pytesseract OCR python 错误-示例代码

android - 如何知道图像是否太暗以至于需要使用 OpenCv 进行闪光

android - 在全屏模式下隐藏标题?