我的回答在您所引用的线程中有点不正确。我发现了错误,却忘记了更新答案。
因为pdfminer的文档非常稀疏,所以我无法完全解释为什么这样做会起作用。希望了解pdfminer库的人能对我们有所帮助。
我所知道的是,您必须
text = retstr.getvalue()在for循环之外进行 *** 作。我只能假定
retstr正在像
final_text+= text在for循环中那样进行更新,因此一旦完成,我们只需
text = retstr.getvalue()要从所有页面中获取文本即可。
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreterfrom pdfminer.converter import TextConverterfrom pdfminer.layout import LAParamsfrom pdfminer.pdfpage import PDFPagefrom cStringIO import StringIOdef convert_pdf_to_txt(path): rsrcmgr = PDFResourceManager() retstr = StringIO() prec = 'utf-8' laparams = LAParams() device = TextConverter(rsrcmgr, retstr, prec=prec, laparams=laparams) fp = file(path, 'rb') interpreter = PDFPageInterpreter(rsrcmgr, device) password = "" maxpages = 0 caching = True pagenos=set() for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages,password=password,caching=caching, check_extractable=True): interpreter.process_page(page) text = retstr.getvalue() fp.close() device.close() retstr.close() return textprint convert_pdf_to_txt("test.pdf")
希望这对您有所帮助!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)