使用Python中的PDFMiner从PDF文件提取文本?

Python版本2.7

我正在寻找有关如何使用PDFMiner和Python从PDF文件提取文本的文档示例。

看来PDFMiner更新了他们的API,我发现的所有相关示例都包含过时的代码(类和方法已更改)。我发现的那些使从PDF文件提取文本的任务更容易的库正在使用旧的PDFMiner语法,因此我不确定如何执行此操作。

照原样,我只是在查看源代码,看是否可以解决。


慕斯709654
浏览 1616回答 3
3回答

呼唤远方

这是一个使用当前版本的PDFMiner从PDF文件提取文本的工作示例(2016年9月)from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreterfrom pdfminer.converter import TextConverterfrom pdfminer.layout import LAParamsfrom pdfminer.pdfpage import PDFPagefrom io import StringIOdef convert_pdf_to_txt(path):    rsrcmgr = PDFResourceManager()    retstr = StringIO()    codec = 'utf-8'    laparams = LAParams()    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)    fp = open(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 textPDFMiner的结构最近发生了变化,因此应该可以从PDF文件中提取文本。

富国沪深

DuckPuncher的出色回答,对于Python3,请确保您安装pdfminer2并执行以下操作:import iofrom pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreterfrom pdfminer.converter import TextConverterfrom pdfminer.layout import LAParamsfrom pdfminer.pdfpage import PDFPagedef convert_pdf_to_txt(path):    rsrcmgr = PDFResourceManager()    retstr = io.StringIO()    codec = 'utf-8'    laparams = LAParams()    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)    fp = open(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 text

森栏

它可以在python v2.7.12和ubuntu 16.04上工作,尽管最好加载带有utf-8编码的pdf文档,因为我的示例pdf存在一些编码问题,因此请在使用utf-8编码后尝试此操作并解决问题...import sys reload(sys) sys.setdefaultencoding('utf-8')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python