【问题标题】:Tesseract "java.lang.IllegalArgumentException. Data path must contain subfolder tessdata"正方体“java.lang.IllegalArgumentException。数据路径必须包含子文件夹 tessdata”
【发布时间】:2014-05-14 02:06:57
【问题描述】:

我正在尝试在我的 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)

【问题讨论】:

  • 您对此有什么解决方案吗?
  • 我们必须按照this维护文件夹结构。不要忘记在此文件夹中维护语言文件

标签: android ocr tesseract


【解决方案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() 将添加它。

【讨论】:

  • 感谢您的建议。我也阅读了资料,我省略了这个细节。
【解决方案2】:

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

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

当然,tessdata 文件夹应该在所需的.traineddata 文件所在的路径中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多