【问题标题】:Tika detects Tesseract but doesn't perform any OCRTika 检测到 Tesseract 但不执行任何 OCR
【发布时间】:2017-12-01 12:18:37
【问题描述】:

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

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 上进行了测试——同样的问题。

我是否需要更改配置文件,指定更多解析器?这是什么原因造成的?

谢谢。

【问题讨论】:

  • 仍在寻找解决方案。我是否需要在配置中的某处指定 OCR 部分才能使用它。如果是这样,为什么会显示一条警告消息,指出“Tesseract OCR 已安装并将自动应用?” (如上所述)。
  • 好像和PDF Parser有关。我刚刚遇到了同样的问题 - 解析带有嵌入图像的 .docx 文件会从图像中提取文本,但在 PDF 文件中使用相同的图像不起作用。
  • 嗨@BenRomberg 你能解决这个问题吗?
  • 在较新的 TikaServer 上,这是由标头启用的。但它似乎不起作用

标签: tesseract apache-tika


【解决方案1】:

原来 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());
}

【讨论】:

  • 但是我把这段代码 sn-p 放在哪里呢?它是 tika 源文件夹中的某个文件吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-25
  • 2015-04-04
  • 1970-01-01
  • 1970-01-01
  • 2014-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多