Tesseract-OCR 无法读取训练数据

问题描述

我将 Tess4J 用于 Java,当我使用认的 tessdata 时它可以工作,但是当我使用 https://github.com/livezingy/tesstrainsh-win 训练新集(使用新字体)时,我收到错误

Failed loading language 'eng'
Tesseract Couldn't load any languages!
Exception in thread "main" java.lang.Error: Invalid memory access
    at com.sun.jna.Native.invokePointer(Native Method)
    at com.sun.jna.Function.invokePointer(Function.java:470)
    at com.sun.jna.Function.invoke(Function.java:404)
    at com.sun.jna.Function.invoke(Function.java:315)
    at com.sun.jna.Library$Handler.invoke(Library.java:212)
    at com.sun.proxy.$Proxy0.TessBaseAPIGetUTF8Text(UnkNown Source)
    at net.sourceforge.tess4j.Tesseract.getoCRText(UnkNown Source)
    at net.sourceforge.tess4j.Tesseract.doOCR(UnkNown Source)
    at net.sourceforge.tess4j.Tesseract.doOCR(UnkNown Source)
    at net.sourceforge.tess4j.Tesseract.doOCR(UnkNown Source)

但我可以使用 eng.traineddataeval.sh

正确测试新训练的 lstmeval

当我打开这两个文件时,它们大不相同,原始训练数据具有可读格式,而新的最初我认为它没有以某种方式损坏,但是能够使用 eval.sh 使我的事情变得不同。

这都是编辑器上的traineddata,左边是新训练的,右边是tess4j自带

Difference between both train

这是我的代码的样子:

 public static void main(String[] args) {
        File imageFile = new File("assets/screenshot_22.png");
        ITesseract instance = new Tesseract();
        try {
            String result = instance.doOCR(imageFile);
            System.out.println("result: " + result);
        } catch (TesseractException e) {
            System.err.println(e.getMessage());
        }
}

我看到一些帖子说你需要设置 do instance.setDataPath("abs-path-to-tessdata") 但这不是问题,我已经尝试过,并且使用不同的 tessdata 得到相同的结果。

感谢任何帮助,提前致谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)