Python 用三行代码提取PDF表格数据


Posted in Python onOctober 13, 2019

从 PDF 表格中获取数据是一项痛苦的工作。不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取表格数据。

PDF 文件是一种非常常用的文件格式,通常用于正式的电子版文件。它能够很好的将不同的排版格式固定下来,形成版面清晰且美观的展示效果。然而,对于想要从 PDF 中提取信息的人们来说,PDF 是个噩梦,尤其是表格。

大量的学术报告、论文、分析文章都使用 PDF 展示其中的表格数据,但是对于如果想要直接从表格中复制数据则会非常麻烦。不久前,有一位开发者提供了一个可从文字 PDF 中提取表格信息的工具——Camelot,能够直接将大部分表格转换为 Pandas 的 Dataframe。

项目地址:https://github.com/camelot-dev/camelot

Camelot 是什么

据项目介绍称,Camelot 是一个 Python 工具,用于将 PDF 文件中的表格数据提取出来。

具体而言,用户可以像使用 Pandas 那样打开 PDF 文件,然后利用这个工具提取表格数据,最后再指定输出的形式(如 csv 文件)。

代码示例

项目提供的 PDF 文件如图所示,假设用户需要提取这些文字之间的表格 2-1 中的信息。

Python 用三行代码提取PDF表格数据

PDF 文件。我们需要提取表格 2-1。

使用 Camelot 提取表格数据的代码如下:

>>> import camelot
>>> tables = camelot.read_pdf('foo.pdf') #类似于Pandas打开CSV文件的形式
>>> tables[0].df # get a pandas DataFrame!
>>> tables.export('foo.csv', f='csv', compress=True) # json, excel, html, sqlite,可指定输出格式
>>> tables[0].to_csv('foo.csv') # to_json, to_excel, to_html, to_sqlite, 导出数据为文件
>>> tables
<TableList n=1>
>>> tables[0]
<Table shape=(7, 7)> # 获得输出的格式
>>> tables[0].parsing_report
{
 'accuracy': 99.02,
 'whitespace': 12.24,
 'order': 1,
 'page': 1
}

以下为输出的结果,对于合并的单元格,Camelot 在抽取后做了空行处理,这是一个稳妥的方法。

Python 用三行代码提取PDF表格数据

安装方法

项目作者提供了三种安装方法。首先,你可以使用 Conda 进行安装,这是最简单的。

conda install -c conda-forge camelot-py

最流行的安装方法是使用 pip 安装。

pip install camelot-py[cv]

还可以从项目中克隆代码,并使用源码安装。

git clone https://www.github.com/camelot-dev/camelot
cd camelot
pip install ".[cv]"

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pyqt4教程之widget使用示例分享
Mar 07 Python
Centos5.x下升级python到python2.7版本教程
Feb 14 Python
机器学习的框架偏向于Python的13个原因
Dec 07 Python
Python实现的简单读写csv文件操作示例
Jul 12 Python
pycharm在调试python时执行其他语句的方法
Nov 29 Python
详解Python传入参数的几种方法
May 16 Python
Python流程控制 if else实现解析
Sep 02 Python
python编程进阶之类和对象用法实例分析
Feb 21 Python
django 取消csrf限制的实例
Mar 13 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
解决pytorch 交叉熵损失输出为负数的问题
Jul 07 Python
Pandas对每个分组应用apply函数的实现
Dec 13 Python
Python3离线安装Requests模块问题
Oct 13 #Python
详解使用Python下载文件的几种方法
Oct 13 #Python
Python中输入和输出(打印)数据实例方法
Oct 13 #Python
分享8点超级有用的Python编程建议(推荐)
Oct 13 #Python
ipad上运行python的方法步骤
Oct 12 #Python
python字典排序的方法
Oct 12 #Python
python查看数据类型的方法
Oct 12 #Python
You might like
PHP完整的日历类(CLASS)
2006/11/27 PHP
php中常用的预定义变量小结
2012/05/09 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
2010/03/15 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
JS实现FLASH幻灯片图片切换效果的方法
2015/03/04 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
Bootstrap模态框水平垂直居中与增加拖拽功能
2016/11/09 Javascript
jquery实现图片放大点击切换
2017/06/06 jQuery
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
JS实现电话号码的字母组合算法示例
2019/02/26 Javascript
jQuery+ThinkPHP实现图片上传
2020/07/23 jQuery
[41:52]2018DOTA2亚洲邀请赛3月29日 小组赛A组 TNC VS OpTic
2018/03/30 DOTA
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
对Python中内置异常层次结构详解
2018/10/18 Python
对python:threading.Thread类的使用方法详解
2019/01/31 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
2019/06/13 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
历史学专业毕业生求职信
2013/09/27 职场文书
教师实习的自我鉴定
2013/10/26 职场文书
新闻编辑自荐信
2013/11/03 职场文书
《桥》教学反思
2014/04/09 职场文书
祖国在我心中演讲稿300字
2014/05/04 职场文书
明星员工获奖感言
2014/08/14 职场文书
房产协议书范本2014
2014/09/30 职场文书
开平碉楼导游词
2015/02/06 职场文书
外贸业务员岗位职责
2015/02/13 职场文书
工作一年自我鉴定
2019/06/20 职场文书
导游词之介休绵山
2019/12/31 职场文书
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python