tess4j版本4.0.0-SNAPSHOT。当我将oem设置为2或3时,内存访问无效。

时间:2017-12-26 12:37:15

标签: tesseract tess4j

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,以便在一个案例中进行定制的预处理 - 基础是不可行的。

有问题的图片是这样的: http://malvernetheatre.org/wp-content/uploads/2012/07/Malverne-Community-Theatre-Newspaper-Reviews-14-page-0.jpg

非常感谢任何帮助。提前谢谢了。

0 个答案:

没有答案