我尝试了 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 上却很少,所以我希望这可以节省我花费几个小时来解决这个问题的时间(让我知道)。