Python解析PDF表格——PDFPlumber vs Camelot

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python解析PDF表格——PDFPlumber vs Camelot相关的知识,希望对你有一定的参考价值。

参考技术A 题图来自 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无法直接解析出Scorecard.pdf文件中的表格,但实际上要解决此问题也并非难事。调整下思路,可先解析出pdf文件中的文本,让后通过分列来得到表格。

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

对于类似本例中Scorecard.pdf表格排版有错位的情况,也可以按照表格在页面中所处的位置,指定表格识别的范围。所用到的指令:camelot.plot()可以绘制出页面的略图,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表格时的参数设置补充

python pdfplumber用于pdf表格提取

 1 import pdfplumber
 2 
 3 with pdfplumber.open(test.pdf) as pdf:
 4     #page_count = len(pdf.pages())
 5     p0 = pdf.pages[0]
 6     # 获取文本,直接得到字符串,包括了换行符【与PDF上的换行位置一致,而不是实际的“段落”】
 7     #print(p0.extract_text()) 
 8     # 获取本页全部表格,也可以使用extract_table()获得单个表格
 9     for table in p0.extract_tables(): 
10         #得到的table是嵌套list类型,转化成DataFrame更加方便查看和分析 
11         for line in table:
12             print(line)
13 
14 #安装ImageMagick,地址在下面            
15 #http://docs.wand-py.org/en/latest/guide/install.html#install-imagemagick-on-windows
16 #https://blog.csdn.net/blmoistawinde/article/details/82051915

 


以上是关于Python解析PDF表格——PDFPlumber vs Camelot的主要内容,如果未能解决你的问题,请参考以下文章

python里pdfplumber怎么下

python pdfplumber用于pdf表格提取

使用pdfplumber读取PDF

[转]Python 解析 PDF 文本和表格的四大方法介绍

pdfplumber读取拆分pdf内容和表格

pdfplumber读取拆分pdf内容和表格