You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过Apache Tika Server获取PDF的hOCR格式OCR输出?

解决Apache Tika Server OCR输出hOCR格式的问题

结合你的环境(Tika 1.22、Tesseract 4.1.0、RHEL7)和遇到的问题,我梳理了几个关键的排查和解决步骤:

1. 修正HTTP请求头的拼写错误

你当前使用的X-Tika-OCRoutputType是错误的,正确的请求头应该是X-Tika-OCR-outputType(注意OCRoutputType之间的连字符)。Tika对请求头的拼写非常敏感,错写会导致配置被直接忽略,进而返回默认的纯文本或普通HTML。

2. 使用正确的端点与Accept头组合

/rmeta端点主要返回元数据+内容的JSON结构,并不适合获取hOCR格式输出。你应该使用/tika端点,同时设置Accept: text/html——因为hOCR本质是带有特定类名的HTML,Tika会将hOCR内容以HTML格式返回。

正确的curl命令如下:

curl -v -X PUT --data-binary @file.pdf \
"http://tika-server:8081/tika" \
-H "Content-Type: application/pdf" \
-H "X-Tika-OCR-outputType: hocr" \
-H "Accept: text/html"

3. 验证Tika Server的OCR配置

如果修正请求头后仍无效果,需要确认Tika Server是否正确启用了OCR功能。你可以创建自定义的tika-config.xml来明确配置OCR参数:

<properties>
  <parsers>
    <!-- 配置PDF解析器,启用图像提取和OCR策略 -->
    <parser class="org.apache.tika.parser.pdf.PDFParser">
      <params>
        <param name="extractInlineImages" type="bool">true</param>
        <!-- 纯图像PDF用OCR_ONLY,混合文本+图像用OCR_AND_TEXT_EXTRACTION -->
        <param name="ocrStrategy" type="string">OCR_ONLY</param>
      </params>
    </parser>
    <!-- 配置Tesseract OCR解析器,指定输出类型为hocr -->
    <parser class="org.apache.tika.parser.ocr.TesseractOCRParser">
      <params>
        <param name="outputType" type="string">hocr</param>
      </params>
    </parser>
  </parsers>
</properties>

启动Tika Server时加载该配置文件:

java -jar tika-server-1.22.jar -c tika-config.xml

4. 验证Tesseract本身的hOCR输出能力

先排除Tesseract的问题,在RHEL7上执行以下命令测试:

# 准备一张测试图片(如test.png)
tesseract test.png test_output hocr

如果生成的test_output.hocr包含<span class='ocr_word'>这类hOCR标签,说明Tesseract功能正常。若没有,需重新安装Tesseract或补充语言包:

sudo yum install tesseract tesseract-langpack-eng

额外注意事项

  • 不要使用Accept: text/hocr,Tika 1.22未注册该媒体类型,会触发报错,使用text/html即可获取标准hOCR内容。
  • 若你的PDF是扫描件(纯图像),务必将PDFParser的ocrStrategy设为OCR_ONLY,否则Tika会尝试提取不存在的文本,导致输出异常。

内容的提问来源于stack exchange,提问作者Amnon

火山引擎 最新活动