我正在尝试使用 pdfminer。我找到了一个代码片段,我想在进一步检查之前尝试一下。此代码的目标是从 .pdf 中提取文本并将其存储在 str 对象中。它工作得很好,它从 pdf 文档中提取文本,当我尝试打印 str 时出现问题。它什么也不打印。str 确实包含文本,print(text[0:10])例如,我可以打印其中的一部分。它还将打印整个内容,print(text[0:len(s)-1])我也可以将其写入文件而不会出现任何问题。只有该print()功能不能单独工作。它是带有 utf-8 编码的标准 str 。当我将 .pdf 的内容写入字节对象,然后将其转换为 str 时,我得到了相同的结果。虽然 python 可以毫无问题地打印字节对象。这也不是 IDE 问题,我在 Spyder 和 VS Code 中都得到了相同的结果。任何建议都会受到欢迎。这是我使用的代码(如果我尝试打印变量 s,没有任何反应):import iofrom pdfminer.converter import TextConverterfrom pdfminer.pdfinterp import PDFPageInterpreterfrom pdfminer.pdfinterp import PDFResourceManagerfrom pdfminer.pdfpage import PDFPagedef extract_text_from_pdf(pdf_path): resource_manager = PDFResourceManager() fake_file_handle = io.StringIO() converter = TextConverter(resource_manager, fake_file_handle) page_interpreter = PDFPageInterpreter(resource_manager, converter) with open(pdf_path, 'rb') as fh: for page in PDFPage.get_pages(fh, caching=True, check_extractable=True): page_interpreter.process_page(page) text = fake_file_handle.getvalue() converter.close() fake_file_handle.close() if text: return textif __name__ == '__main__': s = extract_text_from_pdf('mypdf.pdf')
1 回答
森林海
TA贡献2011条经验 获得超2个赞
答:这段代码可以正常工作。
不知道如何帮助你。您收到的错误信息是什么?您的 .pdf 文件大小是多少?进程是否以退出代码 0 结束?该过程是否永远不会完成并且您必须终止?
我将您的代码放在 PyCharm 中,并在“复杂”pdf 和“简单”pdf 上运行。(在运行它之前我必须采取的唯一步骤是确保安装了 pdfminer,我假设你也这样做了。)
“复杂”的 pdf 花了很长时间(24 页带图形等)。Windows 任务管理器向我保证它正在运行。
“简单”的 pdf 需要几秒钟。
一些打印语句确认每一页都是“得到”的:
for page in PDFPage.get_pages(fh, caching=True, check_extractable=True):
print(type(page))
print(page)
添加回答
举报
0/150
提交
取消