TESSDATA_PREFIX设置为命令行tesseract 4.0.0(C:\ Program Files(x86)\ Tesseract-OCR)的tessdata文件夹的父文件夹。命令行tesseract在所有四种OCR引擎模式下产生合理的输出。
这是我的代码:
package tessTest;
import java.util.ArrayList;
import java.util.List;
import net.sourceforge.tess4j.*;
import net.sourceforge.tess4j.ITesseract.RenderedFormat;
public class MainClass {
public static void main(String[] argv) {
ITesseract instance = new Tesseract1();
List<RenderedFormat> formats = new ArrayList<RenderedFormat>();
formats.add(RenderedFormat.PDF);
try {
instance.setPageSegMode(1);
instance.setOcrEngineMode(2);
instance.setTessVariable("textonly_pdf", "1");
instance.createDocuments("D:\\Documents\\Malverne.jpeg",
"D:\\Documents\\testOCR", formats);
} catch (TesseractException e) {
System.err.println(e.getMessage());
}
}
}
使用setOcrEngineMode(1)或setOcrEngineMode(0),它会按预期生成pdf。使用setOcrEngineMode(2)和setOcrEngineMode(3)会导致以下错误:
Exception in thread "main" java.lang.Error: Invalid memory access
at net.sourceforge.tess4j.TessAPI1.TessBaseAPIProcessPages(Native Method)
at net.sourceforge.tess4j.Tesseract1.createDocuments(Tesseract1.java:542)
at net.sourceforge.tess4j.Tesseract1.createDocuments(Tesseract1.java:517)
at net.sourceforge.tess4j.Tesseract1.createDocuments(Tesseract1.java:484)
at tessTest.MainClass.main(MainClass.java:21)
Detected 358 diacritics
contains_unichar_id(unichar_id):Error:Assert failed:in file
c:\projects\github\tesseract-ocr\ccutil\unicharset.h, line 513
这个特定图像似乎是一个问题,因为在其他图像上,OEM 2可以在tess4j 4.0.0中正常工作。我知道对图像进行预处理可能会有所帮助,但是我正在开发一个项目,其中有数千张图片,其中只有一些与此类似,必须由用户进行OCR,以便在一个案例中进行定制的预处理 - 基础是不可行的。
非常感谢任何帮助。提前谢谢了。