因此,在Chris Mattman(他很棒,非常有帮助!)的一些反馈之后,我解决了这个问题。
他的回应:
由于 Tika Python 充当 REST 服务器的瘦客户端,因此您只需要确保 REST 服务器以为 TesseractOCR 设置正确标志的类路径配置启动,请参见此处:
http://wiki.apache.org/tika/TikaOCR
虽然我之前读过这篇文章,但直到后来和一些进一步的阅读,我才发现这个问题。TesseractOCR 本身不支持 PDF 的 OCR 转换 - 因此,Tika 也不支持,因为 Tika 依赖于 Tesseract 对 PDF 转换的支持(此外,tika-python也不支持)
我的解决方案:
我结合了subprocess、ImageMagick (CLI) 和Tika在 python 中一起工作,首先将 PDF 转换为 TIFF,然后允许 Tika/Tesseract 对文件执行 OCR 转换。
笔记:
- 对于大型 PDF,此过程非常缓慢
- 需要:tika-python、tesseract、imagemagick
编码:
from tika import parser
import subprocess
import os
def ConvertPDFToOCR(file):
meta = parser.from_file(fil, 'http://localhost:9998/tika')
# Check if parsed content is NoneType and handle accordingly.
if "content" in meta and meta['content'] is None:
# Run ImageMagick via subprocess (command line)
params = ['convert', '-density', '300', u, '-depth', '8', '-strip', '-background', 'white', '-alpha', 'off', 'temp.tiff']
subprocess.check_call(params)
# Run Tika again on new temp.tiff file
meta = parser.from_file('temp.tiff', 'http://localhost:9998/tika')
# Delete the temporary file
os.remove('temp.tiff')
return meta['content']