【问题标题】:Using tesseract in Python3 textract library在 Python3 文本库中使用 tesseract
【发布时间】:2016-07-12 22:47:56
【问题描述】:

我想从 PDF 文件中提取文本。我可以成功安装 tesseract(它在终端中工作)和 textract(遵循this 指令)。

但是,当我运行代码时,我得到了一个错误。

text = textract.process(
    '/Users/Text/en.pdf',
    method='tesseract',
    language='eng',
)

错误是:

/usr/local/lib/python3.4/site-packages/textract-1.4.0-py3.4.egg/textract/parsers/pdf_parser.py in extract_tesseract(self, filename, **kwargs)
     62                 page_content = TesseractParser().extract(page_path, **kwargs)
     63                 contents.append(page_content)
---> 64             return ''.join(contents)
     65         finally:
     66             shutil.rmtree(temp_dir)

TypeError: sequence item 0: expected str instance, bytes found

我尝试了几次修改,但它们都无法正常工作,而且我遇到了同样的错误。

  1. return b''.join(contents)
  2. return 之前插入contents = [str(item) for item in contents]
  3. return 之前插入contents = [item.decode("utf-8") for item in contents]

【问题讨论】:

  • 你完全正确——我很抱歉。我在你的修改中不知何故错过了那条线。我在 Slackware Linux 系统上测试了你的示例 - tesseract 3.03 和 leptonica 1.70,它似乎从命令行运行没有问题。你试过吗? tesseract test_text.png out
  • 顺便说一句,我删除了我的回复以避免混淆......
  • @jcoppen 感谢您的检查。实际上,我也在命令行中尝试过。但是由于我提取后需要在Python中编辑文本,所以最方便的方法是在Python中做所有事情。
  • 我相信我曾经尝试过使用 tesseract 包装器,但无法使其正常工作。在这个答案中:stackoverflow.com/questions/29923827/…,我从程序中“手动”调用了 tesseract,然后在 Python 中处理它的输出。不要惊慌 - 代码很长,因为它还包含 GUI 代码。调用在第一类 (RecognizeDigits) - 以out 开头的两行代码。

标签: python-3.x tesseract python-tesseract


【解决方案1】:

实际上,我在Japanese Stackoverflow (スタックオーバーフロー) 中做了同样的问题并得到了解决方案。以下是我翻译的核心部分。 (谢谢,@mjy)。

注意:这种修改至少对英语有效。

  1. pdf_parser.py的第 64 行
    return ''.join(contents) 更改为

    return "".join(item.decode('utf-8') if isinstance(item, bytes) else item for item in contents)
    
  2. 但是,发生了另一个错误。

    NameError: name 'unicode' is not defined

  3. utils.py的第54行,将if isinstance(text, unicode): (...cont...)改为

    if isinstance(text, str):
        return text
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-01
    • 2016-10-09
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    相关资源
    最近更新 更多