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 相关文章推荐
Python中多线程及程序锁浅析
Jan 21 Python
Python自定义scrapy中间模块避免重复采集的方法
Apr 07 Python
Python实现字符串的逆序 C++字符串逆序算法
May 28 Python
利用Python如何批量更新服务器文件
Jul 29 Python
Django 数据库同步操作技巧详解
Jul 19 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
Aug 06 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
Aug 12 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
python网络编程之五子棋游戏
May 14 Python
如何基于Python爬取隐秘的角落评论
Jul 02 Python
python如何建立全零数组
Jul 19 Python
python使用多线程查询数据库的实现示例
Aug 17 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把小数转成整数3种方法
2014/06/30 PHP
php构造函数的继承方法
2015/02/09 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
php实现购物车产品删除功能(2)
2020/07/23 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
javascript 多浏览器 事件大全
2010/03/23 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
js构造函数创建对象是否加new问题
2018/01/22 Javascript
JavaScript面向对象的程序设计(犯迷糊的小羊)
2018/05/27 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
Python 数据结构之堆栈实例代码
2017/01/22 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
浅析图片上传及canvas压缩的流程
2020/06/10 HTML / CSS
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
LUISAVIAROMA中国官网:时尚奢侈品牌购物网站
2020/11/01 全球购物
自我推荐书
2013/12/04 职场文书
日语专业个人求职信范文
2014/02/02 职场文书
现场活动策划方案
2014/08/22 职场文书
预备党员转正思想汇报
2014/09/26 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
高一作文之乐趣
2019/11/21 职场文书