Python PDF转文本丢失内容、排版错乱问题求助
PDF转文本时出现数值丢失、排版错乱问题,求排查方向或解决方案
大家好,我最近在用Python开发PDF转文本的功能,目前用了pdfminer和PyPDF2实现了基础转换,但遇到了一些棘手的问题:
- 部分场景下会出现内容丢失:比如段落中间的数值(像
600,95)完全没出现在转换结果里 - 还有排版错乱的情况:段落里的数值会跑到段落末尾,和原本的文本结构不符
我想请教各位:
- 有没有人遇到过类似的问题?
- 这种情况是不是和PDF文件的类型(比如扫描件生成的PDF、矢量PDF)有关?
我附上了PDF原文截图、转换结果截图(原文段落中包含"XX 600,95 XX",转换后仅保留"XX XX",或变为"XX XX 600,95"),以及我使用的代码,盼能得到大家的帮助或相关排查思路。
我的实现代码
from pdfminer.converter import PDFPageAggregator from pdfminer.layout import LAParams, LTTextBox, LTTextLine from pdfminer.pdfdocument import PDFDocument from pdfminer.pdfinterp import PDFPageInterpreter, PDFResourceManager from pdfminer.pdfpage import PDFPage, PDFTextExtractionNotAllowed from pdfminer.pdfparser import PDFParser from PyPDF2 import PdfFileReader from urllib.request import urlopen from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import TextConverter from pdfminer.layout import LAParams from pdfminer.pdfpage import PDFPage from io import StringIO, BytesIO def readPDF(pdfFile): rsrcmgr = PDFResourceManager() retstr = StringIO() codec = 'utf-8' laparams = LAParams() device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams) interpreter = PDFPageInterpreter(rsrcmgr, device) password = "" maxpages = 0 caching = True pagenos=set() for page in PDFPage.get_pages(pdfFile, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True): interpreter.process_page(page) device.close() textstr = retstr.getvalue() retstr.close() return textstr if __name__ == "__main__": scrape = open("file location", 'rb') pdfFile = BytesIO(scrape.read()) outputString = readPDF(pdfFile) print(outputString) pdfFile.close()
内容的提问来源于stack exchange,提问作者RDeep
相关产品推荐
相关产品推荐

