怎么在python中使用pdfminer解析pdf文件

怎么在python中使用pdfminer解析pdf文件?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

pdf2txt.py从PDF文件中提取所有文本内容。但不能识别画成图片的文本,这需要特征识别。对于加密的PDF你需要提供一个密码才能解析,对于没有提取权限的PDF文档你得不到任何文本。

怎么在python中使用pdfminer解析pdf文件

dumppdf.py把PDF文件内容变成pseudo-XML格式。这个程序主要用于debug,但是它也可能用于提取一些有意义的内容(比如图片)。

官方主页:https://euske.github.io/pdfminer/

其特征有:1、完全使用python编写。(适用于2.4或更新版本)2、解析,分析,并转换成PDF文档。3、PDF-1.7规范的支持。(几乎)4、中日韩语言和垂直书写脚本支持。5、各种字体类型(Type1、TrueType、Type3,和CID)的支持。6、基本加密(RC4)的支持。7、PDF与HTML转换。8、纲要(TOC)的提取。9、标签内容提取。10、通过分组文本块重建原始的布局。 如果你的Python有安装pip模块,就可以通过命令“python pip install pdfminer”,自动安装pdfminer。

解析pdf文件用到的类:

  • PDFParser:从一个文件中获取数据

  • PDFDocument:保存获取的数据,和PDFParser是相互关联的

  • PDFPageInterpreter处理页面内容

  • PDFDevice将其翻译成你需要的格式

  • PDFResourceManager用于存储共享资源,如字体或图像。

python的工具,安装当然是使用pip安装了。

pipinstallpdfminer

命令行方式

为了使用方便,pdfminer 提供了一个命令行工具来直接转换pdf文件,使用方法如下:

pdf2txt.py<path_to_pdf_file>

编程方式

除了命令行方式以外,对于复杂应用场景,pdfminer 也提供了以编程方式来转换 pdf 文件,主要使用下面几个类来实现:

  • PDFParser: 用来解析pdf文件。

  • PDFDocument:用来保存 PDFParser 解析后的对象。

  • PDFPageInterpreter:用来处理解析后的文档页面内容。

  • PDFResourceManager:pdf 共享资源管理器,用于存储共享资源,如字体或图像。

下面看一个例子:

#!/usr/bin/envpython
#-*-coding:utf-8-*-
frompdfminer.pdfparserimportPDFParser
frompdfminer.pdfdocumentimportPDFDocument
frompdfminer.pdfpageimportPDFPage,PDFTextExtractionNotAllowed
frompdfminer.pdfinterpimportPDFResourceManager,PDFPageInterpreter
frompdfminer.converterimportPDFPageAggregator
frompdfminer.layoutimportLAParams
importStringIO


classPDFUtils():

def__init__(self):
pass

defpdf2txt(self,path):
output=StringIO.StringIO()
withopen(path,'rb')asf:
praser=PDFParser(f)

doc=PDFDocument(praser)

ifnotdoc.is_extractable:
raisePDFTextExtractionNotAllowed

pdfrm=PDFResourceManager()

laparams=LAParams()

device=PDFPageAggregator(pdfrm,laparams=laparams)

interpreter=PDFPageInterpreter(pdfrm,device)

forpageinPDFPage.create_pages(doc):
interpreter.process_page(page)
layout=device.get_result()
forxinlayout:
ifhasattr(x,"get_text"):
content=x.get_text()
output.write(content)

content=output.getvalue()
output.close()
returncontent


if__name__=='__main__':
path=u'/tmp/abc.pdf'
pdf_utils=PDFUtils()
printpdf_utils.pdf2txt(path)

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注恰卡编程网行业资讯频道,感谢您对恰卡编程网的支持。

发布于 2021-03-26 01:49:55
收藏
分享
海报
0 条评论
171
上一篇:怎么在spring boot中利用sonarqube检查技术债务 下一篇:怎么在易语言中使用农历月历组件
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码