Tesseract“java.lang.IllegalArgumentException。数据路径必须包含子文件夹tessdata”

时间:2014-05-14 02:06:57

标签: android ocr tesseract

我正在尝试在我的Android应用程序中使用tesseract libray for java,如下所示:http://vkedco.blogspot.com/2013/03/vladimir-kulyukin-learning-objectives-1.html

我按照原样遵循说明,但仍然会收到错误消息,说我需要在路径中包含子文件夹tessdata。子文件夹确实存在于我的sdcard / tesseract_languages文件夹中。

有关我应该怎么做才能让它运行的任何建议?

错误详情如下:

05-13 20:54:35.653: E/AndroidRuntime(11715): FATAL EXCEPTION: main
05-13 20:54:35.653: E/AndroidRuntime(11715): Process: com.example.msapp2, PID: 11715
05-13 20:54:35.653: E/AndroidRuntime(11715): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.msapp2/com.example.msapp2.MainActivity}: java.lang.IllegalArgumentException: Data path must contain subfolder tessdata!
05-13 20:54:35.653: E/AndroidRuntime(11715):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
05-13 20:54:35.653: E/AndroidRuntime(11715):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
05-13 20:54:35.653: E/AndroidRuntime(11715):    at android.app.ActivityThread.access$800(ActivityThread.java:135)
05-13 20:54:35.653: E/AndroidRuntime(11715):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。在阅读源代码时,我发现:

public boolean init(String datapath, String language) {
        if (datapath == null)
            throw new IllegalArgumentException("Data path must not be null!");
        if (!datapath.endsWith(File.separator))
            datapath += File.separator;

        File tessdata = new File(datapath + "tessdata");
        if (!tessdata.exists() || !tessdata.isDirectory())
            throw new IllegalArgumentException("Data path must contain subfolder tessdata!");

        return nativeInit(datapath, language);
    }

这意味着不要添加" tessdata"到数据路径。方法init()将添加它。

答案 1 :(得分:0)

我遇到了同样的问题。当我从路径中删除“tessdata”时为我工作,正如yushlx回答的那样。

之前(失败): path =“/ mnt / sdcard / tesseract / tessdata”; 之后(成功): path =“/ mnt / sdcard / tesseract /”;

当然,tessdata文件夹应该位于带有desired.traineddata文件的路径中。