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实现bucket排序算法实例分析
May 04 Python
Python3读取zip文件信息的方法
May 22 Python
Python中list列表的一些进阶使用方法介绍
Aug 15 Python
深入理解NumPy简明教程---数组3(组合)
Dec 17 Python
使用python在本地电脑上快速处理数据
Jun 22 Python
对Python信号处理模块signal详解
Jan 09 Python
Python实现计算字符串中出现次数最多的字符示例
Jan 21 Python
解决python执行不输出系统命令弹框的问题
Jun 24 Python
Python 实现遥感影像波段组合的示例代码
Aug 04 Python
Python 用matplotlib画以时间日期为x轴的图像
Aug 06 Python
使用Python串口实时显示数据并绘图的例子
Dec 26 Python
Python实现FLV视频拼接功能
Jan 21 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中进行身份认证
2006/10/09 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
SuperSlide标签切换、焦点图多种组合插件
2015/03/14 Javascript
jQuery on()方法使用技巧详解
2015/04/16 Javascript
javascript中的3种继承实现方法
2016/01/27 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
浅谈Python NLP入门教程
2017/12/25 Python
python查询mysql,返回json的实例
2018/03/26 Python
Django forms组件的使用教程
2018/10/08 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
2019/07/15 Python
np.random.seed() 的使用详解
2020/01/14 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
django model通过字典更新数据实例
2020/04/01 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
tensorflow pb to tflite 精度下降详解
2020/05/25 Python
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
墨西哥网上超市:Superama
2018/07/10 全球购物
村委会主任先进事迹
2014/01/15 职场文书
西门豹教学反思
2014/02/04 职场文书
《散步》教学反思
2014/03/02 职场文书
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
2022/04/11 Python
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python