【发布时间】: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
我尝试了几次修改,但它们都无法正常工作,而且我遇到了同样的错误。
return b''.join(contents)- 在
return之前插入contents = [str(item) for item in contents] - 在
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