我刚刚安装了Tika从Github的存储库,并试图OCR,一个PDF,其中包含扫描的文档页。
java -cp tika-app/target/tika-app-1.17-SNAPSHOT.jar org.apache.tika.cli.TikaCLI /tmp/testing/sample_scanned.pdf
但是,只提取元数据(尽管我事先得到了安装和使用Tesseract的确认:
警告:除非您将TesseractOCRParser排除在默认解析器之外,否则将安装Tesseract OCR并将其自动应用于图像文件。Tesseract可能会大大减慢内容提取的速度(TIKA-2359)。从Tika 1.15 (和以前的版本)开始,Tesseract被自动调用。在Tika的未来版本中,用户可能需要通过TesseractOCRParser打开TikaConfig。
(全输出)
注意:普通PDF(包含)纯文本已成功提取。问题似乎在于OCR过程本身。
这已经在Centos以及Ubuntu上进行了测试--同样的问题。
是否需要对配置文件进行更改,指定更多的解析器?是什么导致的?
谢谢。
发布于 2017-12-27 15:49:42
原来PDF图像提取在默认情况下是禁用的。来自PDFParserConfig
警告:一些中等大小的PDF文档(~4MB)可以包含数以千计的嵌入式图像,总数超过2.5GB。另外,至少在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());
}
https://stackoverflow.com/questions/47593264
复制相似问题