如何使用 TikaConfig 和 Tika 命令行实用程序启用 TesseractOCRParser?
How do you enable the TesseractOCRParser using TikaConfig and the Tika command line utility?
我已经安装了 apache Tika 1.8,它 运行 非常完美,只是 OCR 部分不工作。我安装了 Tesseract,它也能正常工作。
当我尝试发送带有图像的 pdf 时,我得到以下信息。
警告:Tesseract OCR 已安装并将自动应用于图像 f
除非
您已经从默认解析器中排除了 TesseractOCRParser。
Tesseract 可能会显着降低内容提取速度 (TIKA-2359)。
从 Tika 1.15(和之前的版本)开始,Tesseract 被自动调用。
在未来版本的 Tika 中,用户可能需要通过以下方式打开 TesseractOCRParser
TikaConfig.
Can I configure the TikaConfig using the command line utility ? Or do I have to clone the project and update poms and rebuild. I really do not want to have to do that.
这里有一些关于如何使用命令行实用程序和 TikaConfig 的信息,但我不知道如何使用它启用 TesseractOCRParser。
任何帮助,不胜感激。
好的所以在这个 post 的帮助下 Apache Tika Forum 谢谢大家。
我设法让它工作了。
这是一个黑客,但它有效。我所做的是提取 Tika-app Jar 文件。然后找到 PDFParser.properties 并像这样更改以下属性
extractInlineImages true
extractUniqueInlineImagesOnly false
ocrStrategy ocr_and_text_extraction
然后定位TesseractOCRConfig.properties。
并将这个 属性 更改为 1..
enableImageProcessing=1
保存以上属性文件。再拉上拉链。
并使用新的压缩 jar 文件,它现在将从 pdf 文件的图像中提取文本和文本。
我尝试了 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,因为,如上文所述 link,"by default, extracting inline images is turned off because some rare PDFs contain thousands of inline images per page, and it has a big hit on performance, both memory usage and time".
现在所有内容(图像文件的 OCR、图像或基于图像的 PDF 中的图像的 OCR,以及基于文本的 PDF 的自然文本提取)都适用于 java 应用程序 tika。我找到了很多关于如何在 java 服务器 tika 上运行它的文档,但在 java 应用程序 tika 上却很少,所以我希望这可以节省一些人我花了几个小时来解决这个问题(让我知道)。
我建议使用 ocrStrategy auto
这会尝试提取然后返回到 OCR
我已经安装了 apache Tika 1.8,它 运行 非常完美,只是 OCR 部分不工作。我安装了 Tesseract,它也能正常工作。 当我尝试发送带有图像的 pdf 时,我得到以下信息。
警告:Tesseract OCR 已安装并将自动应用于图像 f 除非 您已经从默认解析器中排除了 TesseractOCRParser。 Tesseract 可能会显着降低内容提取速度 (TIKA-2359)。 从 Tika 1.15(和之前的版本)开始,Tesseract 被自动调用。 在未来版本的 Tika 中,用户可能需要通过以下方式打开 TesseractOCRParser TikaConfig.
Can I configure the TikaConfig using the command line utility ? Or do I have to clone the project and update poms and rebuild. I really do not want to have to do that.
这里有一些关于如何使用命令行实用程序和 TikaConfig 的信息,但我不知道如何使用它启用 TesseractOCRParser。
任何帮助,不胜感激。
好的所以在这个 post 的帮助下 Apache Tika Forum 谢谢大家。
我设法让它工作了。 这是一个黑客,但它有效。我所做的是提取 Tika-app Jar 文件。然后找到 PDFParser.properties 并像这样更改以下属性
extractInlineImages true
extractUniqueInlineImagesOnly false
ocrStrategy ocr_and_text_extraction
然后定位TesseractOCRConfig.properties。 并将这个 属性 更改为 1..
enableImageProcessing=1
保存以上属性文件。再拉上拉链。 并使用新的压缩 jar 文件,它现在将从 pdf 文件的图像中提取文本和文本。
我尝试了 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,因为,如上文所述 link,"by default, extracting inline images is turned off because some rare PDFs contain thousands of inline images per page, and it has a big hit on performance, both memory usage and time".
现在所有内容(图像文件的 OCR、图像或基于图像的 PDF 中的图像的 OCR,以及基于文本的 PDF 的自然文本提取)都适用于 java 应用程序 tika。我找到了很多关于如何在 java 服务器 tika 上运行它的文档,但在 java 应用程序 tika 上却很少,所以我希望这可以节省一些人我花了几个小时来解决这个问题(让我知道)。
我建议使用 ocrStrategy auto
这会尝试提取然后返回到 OCR