为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕斯709654 2019-10-06 11:19:09
Python版本2.7我正在寻找有关如何使用PDFMiner和Python从PDF文件提取文本的文档或示例。看来PDFMiner更新了他们的API,我发现的所有相关示例都包含过时的代码(类和方法已更改)。我发现的那些使从PDF文件提取文本的任务更容易的库正在使用旧的PDFMiner语法,因此我不确定如何执行此操作。照原样,我只是在查看源代码,看是否可以解决。
查看完整描述

3 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

这是一个使用当前版本的PDFMiner从PDF文件提取文本的工作示例(2016年9月)


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


def 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 text

PDFMiner的结构最近发生了变化,因此应该可以从PDF文件中提取文本。




查看完整回答
反对 回复 2019-10-06
?
富国沪深

TA贡献1790条经验 获得超9个赞

DuckPuncher的出色回答,对于Python3,请确保您安装pdfminer2并执行以下操作:


import io


from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter

from pdfminer.converter import TextConverter

from pdfminer.layout import LAParams

from pdfminer.pdfpage import PDFPage



def 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


查看完整回答
反对 回复 2019-10-06
?
森栏

TA贡献1810条经验 获得超5个赞

它可以在python v2.7.12和ubuntu 16.04上工作,尽管最好加载带有utf-8编码的pdf文档,因为我的示例pdf存在一些编码问题,因此请在使用utf-8编码后尝试此操作并解决问题...import sys reload(sys) sys.setdefaultencoding('utf-8')

查看完整回答
反对 回复 2019-10-06
  • 3 回答
  • 0 关注
  • 1615 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信