Tika检测到Tesseract但未执行任何OCR

时间:2017-12-01 12:18:38

标签: tesseract apache-tika

我刚刚从Github的存储库安装了Tika,并尝试OCR包含扫描文档页面的PDF。

java -cp tika-app/target/tika-app-1.17-SNAPSHOT.jar org.apache.tika.cli.TikaCLI /tmp/testing/sample_scanned.pdf

但是,只提取元数据(尽管我事先已经确认安装并使用了Tesseract:

  

警告:Tesseract OCR已安装,并将自动应用于图像文件,除非   您已从默认解析器中排除了TesseractOCRParser。   Tesseract可能会显着减慢内容提取(TIKA-2359)。   截至Tika 1.15(以及之前的版本),Tesseract会自动调用。   在未来的Tika版本中,用户可能需要通过TikaConfig打开TesseractOCRParser。

Full output

注意:普通PDF(包含)纯文本会成功提取。问题似乎是OCR过程本身。

这已在Centos和Ubuntu上测试过 - 同样的问题。

我是否需要更改配置文件,指定更多解析器?什么可能导致这种情况?

谢谢。

1 个答案:

答案 0 :(得分:0)

默认情况下禁用PDF图像提取。来自PDFParserConfig

  

注意:一些适度大小(~4MB)的PDF文档可以包含数千个嵌入图像,总计> 2.5 GB。此外,至少从PDFBox 1.8.5开始,可能会出现令人惊讶的大内存消耗和/或内存不足错误。谨慎设置为true。默认值为false

启用它的一个简单示例:

Parser parser = new AutoDetectParser();
ContentHandler handler = new BodyContentHandler(Integer.MAX_VALUE);
ParseContext parseContext = new ParseContext();
PDFParserConfig pdfConfig = new PDFParserConfig();
pdfConfig.setExtractInlineImages(true);
parseContext.set(PDFParserConfig.class, pdfConfig);
try (InputStream stream = ClasspathUtil.readStreamFromClasspath("test.pdf")) {
    parser.parse(stream, handler, new Metadata(), parseContext);
    System.out.println(handler.toString());
}