我刚刚从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。
注意:普通PDF(包含)纯文本会成功提取。问题似乎是OCR过程本身。
这已在Centos和Ubuntu上测试过 - 同样的问题。
我是否需要更改配置文件,指定更多解析器?什么可能导致这种情况?
谢谢。
答案 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());
}