tesseract ocr无法读取traineddata

mwg9r5ms  于 2021-06-29  发布在  Java
关注(0)|答案(0)|浏览(303)

我正在使用tess4jforjava,当我使用默认的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 当我打开这两个文件时,它们有很大的不同,原始的trainneddata有一个可读的格式,而新的一个没有。一开始我以为它被破坏了,但是可以使用 eval.sh 让我觉得不一样。
这两个都是编辑器上的培训数据,左边的是新培训的数据,右边的是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());
        }
}

我看到一些人发帖说你需要做些什么 instance.setDataPath("abs-path-to-tessdata") 但这不是问题所在,我已经试过了,结果是相同的,但结果不同 tessdata .
感谢您的帮助,谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题