如何使用TikaConfig和Tika命令行实用程序启用TesseractOCRParser?

时间:2018-08-02 13:59:01

标签: apache configuration ocr tesseract tika-server

我已经安装了apache Tika 1.8,并且运行正常,只是OCR部件不起作用。我已经安装了Tesseract,它也可以正常工作。 当我尝试发送带有图像的pdf文件时,我得到以下信息。

警告:已安装Tesseract OCR,它将自动应用于图像f 除非 您已经从默认解析器中排除了TesseractOCRParser。 Tesseract可能会大大减慢内容提取(TIKA-2359)。 从Tika 1.15(和以前的版本)开始,Tesseract被自动调用。 在将来的Tika版本中,用户可能需要通过以下方式打开TesseractOCRParser  TikaConfig。

  

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

这里有一些有关如何使用命令行实用程序和TikaConfig的信息,但是我不知道如何使用它来启用TesseractOCRParser。

任何帮助,万分感谢。

3 个答案:

答案 0 :(得分:1)

我尝试了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的PDF中的图像的OCR,以及基于文本的PDF的自然文本提取)都可以与Java应用tika一起使用。我发现有很多文档可以使它在Java服务器tika上运行,但在Java应用程序tika上却很少,因此我希望这可以节省一些时间,使我花了很多时间来弄清楚(让我知道)。

答案 1 :(得分:0)

好的,在Apache Tika Forum谢谢你的帮助下,这篇帖子

我设法使其正常运行。 它是一个hack,但可以。我所做的是提取了Tika-app Jar文件。然后找到PDFParser.properties并更改以下属性

unique

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

[
  {
    "Id": "1",
    "Path": "/path1"
  },
  {
    "Id": "2",
    "Path": "/path2"
  },
  {
    "Id": "3",
    "Path": "/path3"
  },
  {
    "Id": "4",
    "Path": "/path4"
  }
]

保存以上属性文件。再次将其压缩。 并使用新的压缩jar文件,它将立即从pdf文件中提取文本和图像中的文本。

答案 2 :(得分:0)

我建议使用ocrStrategy auto

这会尝试提取,然后退回到OCR