3

我已经安装了 apache Tika 1.8,它运行良好,除了 OCR 部分不工作。我安装了 Tesseract,它也可以正常工作。当我尝试发送带有图像的pdf时,我得到以下信息。

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

我可以使用命令行实用程序配置 TikaConfig 吗?还是我必须克隆项目并更新 pom 并重建。我真的不想这样做。

这里有一些关于如何使用命令行实用程序和 TikaConfig 的信息,但我无法弄清楚如何使用它启用 TesseractOCRParser。

任何帮助,非常感谢。

4

3 回答 3

2

好的,在Apache Tika 论坛上的这篇文章的帮助下谢谢你们。

我设法让它工作。它是一个黑客,但它有效。我所做的是提取 Tika-app Jar 文件。然后找到 PDFParser.properties 并像这样更改以下属性

extractInlineImages true 
extractUniqueInlineImagesOnly false 
ocrStrategy ocr_and_text_extraction

然后找到 TesseractOCRConfig.properties。并将这一属性更改为 1..

enableImageProcessing=1

保存上述属性文件。重新拉上拉链。并使用您的新压缩 jar 文件,它现在将从 pdf 文件中的图像中提取文本和文本。

于 2018-08-03T09:00:49.503 回答
2

我尝试了 user3250052 的方法,但我无法以可执行的方式重新压缩 jar 文件。那是由于我自己对 Java 的缺乏经验,但无论如何,在调用 tika 时调用自定义 tika 配置文件是不那么老套的方法:

java -jar tika-app.jar --config=tika-config.xml image.pdf

这就是我的 tika-config.xml 的样子:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<properties>
  <!--for example: <mimeTypeRepository resource="/org/apache/tika/mime/tika-mimetypes.xml"/>-->
  <service-loader dynamic="true" loadErrorHandler="IGNORE"/>
  <encodingDetectors>
    <encodingDetector class="org.apache.tika.detect.DefaultEncodingDetector"/>
  </encodingDetectors>
  <translator class="org.apache.tika.language.translate.DefaultTranslator"/>
  <detectors>
    <detector class="org.apache.tika.detect.DefaultDetector"/>
  </detectors>
  <parsers>
    <parser class="org.apache.tika.parser.DefaultParser"/>
    <parser class="org.apache.tika.parser.pdf.PDFParser">
      <params>
        <param name="extractInlineImages" type="bool">true</param>
      </params>
    </parser>
  </parsers>
</properties>

要构建该配置文件,首先我运行:

java -jar tika-app.jar --dump-current-config

这将为您转储默认配置。我把它放入 tika-config.xml 并添加:

<parser class="org.apache.tika.parser.pdf.PDFParser">
  <params>
    <param name="extractInlineImages" type="bool">true</param>
  </params>
</parser>

我从https://cwiki.apache.org/confluence/display/tika/PDFParser%20(Apache%20PDFBox)收集到的(选项 1)。

即使默认情况下启用了 tesseract(因此 OCR 将在图像文件上开箱即用),如果没有设置该选项,PDF 也不会获得 OCRed,因为如上面的链接中所述,“默认情况下,提取内联图像是关闭的,因为一些罕见的 PDF 每页包含数千个内联图像,它对性能、内存使用和时间都有很大影响”。

现在一切(图像文件的 OCR、图像或基于图像的 PDF 中的图像 OCR,以及基于文本的 PDF 的自然文本提取)都可以与 java 应用程序 tika 一起使用。我找到了很多关于让它在 java 服务器 tika 上工作的文档,但在 java 应用程序 tika 上却很少,所以我希望这可以节省我花费几个小时来解决这个问题的时间(让我知道)。

于 2020-02-25T23:58:20.047 回答
0

我建议使用ocrStrategy auto

这会尝试提取然后返回到 OCR

于 2020-06-16T17:04:10.983 回答