如何解决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.traineddata
和 eval.sh
lstmeval
当我打开这两个文件时,它们大不相同,原始训练数据具有可读格式,而新的最初我认为它没有以某种方式损坏,但是能够使用 eval.sh
使我的事情变得不同。
这都是编辑器上的traineddata,左边是新训练的,右边是tess4j自带的
这是我的代码的样子:
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 举报,一经查实,本站将立刻删除。