2

我有一个我试图让 Tika 解析的 PDF。PDF 不是 OCR。正方体已安装在我的机器上。

我使用 ImageMagik 将 file.tiff 转换为 file.pdf,所以我正在解析的 tiff 文件是从 PDF 直接转换而来的。

Tika 解析 TIFF 没有问题,但返回 PDF 的“无”内容。是什么赋予了?我正在使用 Tika 1.14.1、tesseract 3.03、leptonica-1.70

这是代码...

from tika import parser

# This works
print(parser.from_file('/from/file.tiff', 'http://localhost:9998/tika'))

# This returns "None" for content
print(parser.from_file('/from/file.pdf', 'http://localhost:9998/tika'))
4

3 回答 3

3

因此,在Chris Mattman(他很棒,非常有帮助!)的一些反馈之后,我解决了这个问题。

他的回应:

由于 Tika Python 充当 REST 服务器的瘦客户端,因此您只需要确保 REST 服务器以为 TesseractOCR 设置正确标志的类路径配置启动,请参见此处:

http://wiki.apache.org/tika/TikaOCR

虽然我之前读过这篇文章,但直到后来和一些进一步的阅读,我才发现这个问题。TesseractOCR 本身不支持 PDF 的 OCR 转换 - 因此,Tika 也不支持,因为 Tika 依赖于 Tesseract 对 PDF 转换的支持(此外,tika-python也不支持)

我的解决方案:

我结合了subprocessImageMagick (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']
于 2018-01-08T15:48:01.617 回答
2

您可以启用 X-Tika-PDFextractInlineImages': 'true' 并直接从 pdf 中的图像中提取文本。无需转换。花了一段时间才弄清楚,但效果很好。

from tika import parser
headers = {
'X-Tika-PDFextractInlineImages': 'true',
}
parsed = parser.from_file("Citi.pdf",serverEndpoint='http://localhost:9998/rmeta/text',headers=headers)
print(parsed['content'])
于 2018-10-17T19:34:20.453 回答
0

下载 tika 服务器的最新 jar 并使用 Aswathi Mohankumar Nambiar 解决方案。为我工作!注意:在运行脚本之前,您必须手动启动最新的 tika 服务器,因为 python 脚本要启动 Tika 1.14.1 服务器

于 2021-10-21T09:24:37.330 回答