如何利用Python抓取PDF中的某些内容

如何利用Python抓取PDF中的某些内容,第1张

你的问题事实上包含几部分:

将 PDF 转化为纯文本格式

抽取其中部分内容

格式化写入到 excel 中

转换 PDF 有很多库可以完成,如下是通过 pdfminer 的示例:

from cStringIO import StringIO

from pdfminerpdfinterp import PDFResourceManager, PDFPageInterpreter

from pdfminerconverter import TextConverter

from pdfminerlayout import LAParams

from pdfminerpdfpage import PDFPage

def convert_pdf_2_text(path):

rsrcmgr = PDFResourceManager()

retstr = StringIO()

device = TextConverter(rsrcmgr, retstr, codec='utf-8', laparams=LAParams())

interpreter = PDFPageInterpreter(rsrcmgr, device)

with open(path, 'rb') as fp:

for page in PDFPageget_pages(fp, set()):

interpreterprocess_page(page)

text = retstrgetvalue()

deviceclose()

retstrclose()

return text

需要指出的是,pdfminer 不但可以将 PDF 转换为 text 文本,还可以转换为 HTML 等带有标签的文本。上面只是最简单的示例,如果每页有很独特的标志,你还可以按页单独处理。

题图来自 Camelot: List o’ 10 Intriguing Mythical Places

为获取LEED认证项目的评分表明细,可以从USGBC的项目页面上爬取,或者从pdf格式的项目评分表中解析得到。以 重庆某LEED EM:OB v2009 Gold项目 为例,USGBC上公布的 LEED项目得分表 其格式并不统一,利用XPath爬取后需要进一步清洗处理。相对而言,LEED项目所对应的 项目评分表PDF文件 的数据更为规范完整。因此考虑尝试解析出PDF文件中的表格,以便后续分析。

Python 处理PDF文件的程序包,pdfminer、tabula、pdfplumber、camelot……查询资料表明,似乎普遍认为pdfminer的效果不怎么好,而tabula需要java支持 ,想偷懒于是只试了pdfplumber和camelot。

安装过程不赘述,直接来看运行结果。

pdfplumber无法直接解析出Scorecardpdf文件中的表格,但实际上要解决此问题也并非难事。调整下思路,可先解析出pdf文件中的文本,让后通过分列来得到表格。

利用pdfplumber的extract_text()命令可解析出pdf文件中的文本,但由于本次需要解析的得分表pdf文件的排版的原因,左右两个表格的文本行并未完全对齐,因此如果直接解析完整页面上的文本的话,文字会出错。先用corp()命令指定识别范围,然后再extract_text(),识别得到的文本列表如下所示。

对于类似本例中Scorecardpdf表格排版有错位的情况,也可以按照表格在页面中所处的位置,指定表格识别的范围。所用到的指令:camelotplot()可以绘制出页面的略图,table_area参数可以指定表格识别的范围。

又及,Camelot原来是亚瑟王和圆桌骑士们的宫殿所在地,和Asgard的Valhalla一样,也是传说中的圣域。搜索camelot程序安装包时无意中学到的,涨知识了。

[1] Python:解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比

[2] 用Python提取pdf文件中的表格数据

[3] python读取pdf文件

[4] Github: pdfplumber

[5] Camelot: PDF Table Extraction for Humans

[6] ImageMagick Installation

[7] ImageMagick之PDF转换成(image)

[8] LEED 2009 for Existing Buildings: Operations & Maintenance

[9] Camelot - Wikipedia

[10] List o’ 10 Intriguing Mythical Places

[11] Camelot识别pdf表格时的参数设置补充

方法一:使用虚拟打印机pdf factory即可,而且其他格式文件只要是能够打印,选择这个虚拟打印机,都可以做成PDF文件,很简单实用;

方法二:用其他虚拟打印机转成PDF文件。

方法三:使用专门的转换软件,把文件转成PDF文件。

可以先把pdf转成txt再读取,使用转换工具就行了

推荐一款免费的在线转换工具给你:转转大师pdf转换器

百度搜索进入网站后,到电子书转换里面选择转成txt,在线转换后再使用就行了

以上就是关于如何利用Python抓取PDF中的某些内容全部的内容,包括:如何利用Python抓取PDF中的某些内容、Python解析PDF表格——PDFPlumber vs Camelot、python怎么转成pdf等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9588345.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存