我已经安装了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。
任何帮助,万分感谢。
答案 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