我正在嘗試使用 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
提交
取消