表哥表姐不要愁5分钟学会用Python

,维维股份,,新华联,,同济堂,,中联重科,年上半年财报密集发布!

遇到财报发布的季节了,表哥表姐发愁啊,为什么都是PDF的,还有这么多,周末的安排又泡汤呢?

很多时候我们需要用到PDF文件中的Excel表格,但是PDF文件有不可编辑性,所以想提取PDF文件中的表格还是需要一番功夫的。这是加班都搞不定的!

不要愁,Python大大又来帮助表哥表姐了。不仅教表哥表姐如何提取表格数据,而且还是自动档,一次编写,批量文件几分钟就搞定。

以下将介绍几种使用Python从PDF中抓取表格的方法。友情提示:仅适用于非扫描图像的PDF。

Tabula-PY

是一个非常好的软件包,它允许您同时扫描PDF,以及将PDF直接转换为CSV文件。

安装后,tabula-py很容易使用。安装后,tabula-py很容易使用。下面我们使用它从讨论Iris数据集的分类的论文中提取所有表格)。

importtabulafile=seminar8.pdftables=tabula.read_pdf(file,pages=all,multiple_tables=True)

存储到表中的结果是一个数据框列表,它对应于PDF文件中找到的所有表。要搜索文件中的所有表,您必须指定参数page=all和multiple_tables=True。

还可以使用tabula-py将PDF文件直接转换为CSV。下面的第一行将找到PDF中的第一个表并将其输出为CSV。如果我们添加参数all=True,我们可以将所有PDF表格写入CSV。

#outputjustthefirsttableinthePDFtoaCSVtabula.convert_into(file,iris_first_table.csv)#outputallthetablesinthePDFtoaCSVtabula.convert_into(file,iris_all.csv,all=True)

tabula-py还可以仅用一行代码读取目录中的所有PDF,并将每个表中的表提取到CSV文件中。

tabula.convert_into_by_batch(/path/to/files,output_format=csv,pages=all)

我们可以执行相同的操作,将表格提取到JSON,如下所示。

tabula.convert_into_by_batch(/path/to/files,output_format=json,pages=all)

Camelot

是从PDF中抓取表格的另一种解决方案。

Camelot确实有一些额外的依赖项,包括GhostScript安装完成后,我们可以像使用tabula-py一样使用Camelot来抓取PDF表格。

file=seminar8.pdftables=camelot.read_pdf(file,pages=1-end)

这将返回TableList对象。要访问index找到的任何表,您可以这样做:

#getthe0th-indexed-tabletabletables[0].df#getthe3rd-indexed-tabletables[3].df

Camelot的一个很酷的功能是,您还可以获得每个表的解析报告,其中包含精确度指标,找到表格的页面以及表格中存在的空白百分比。

tables[0].parsing_reporttables[3].parsing_report

从这里可以看到第0个索引的已识别表基本上是空白。如果查看原始PDF,可以看到该页面未包含表格,因此忽略此空数据框是安全的。

与tabula-py一样,您可以将所有表导出到文件中。Camelot支持(撰写本文时)CSV,JSON,HTML和SQLite。如果选择CSV,默认情况下,Camelot将为每个表创建单独的CSV文件。您可以通过添加参数


转载请注明:http://www.aierlanlan.com/grrz/4803.html