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列表去重的二种方法
Feb 14 Python
跟老齐学Python之大话题小函数(1)
Oct 10 Python
使用Python的urllib2模块处理url和图片的技巧两则
Feb 18 Python
windows下安装Python和pip终极图文教程
Mar 05 Python
python抓取网页中链接的静态图片
Jan 29 Python
Python XML转Json之XML2Dict的使用方法
Jan 15 Python
python实现抽奖小程序
Apr 15 Python
pycharm实现在虚拟环境中引入别人的项目
Mar 09 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 Python
python名片管理系统开发
Jun 18 Python
Python基于time模块表示时间常用方法
Jun 18 Python
使用BeautifulSoup4解析XML的方法小结
Dec 07 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
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
php使用websocket示例详解
2014/03/12 PHP
PHP实现的简单组词算法示例
2018/04/10 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
textarea中的手动换行处理的jquery代码
2011/02/26 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
jquery实现页面百叶窗走马灯式翻滚显示效果的方法
2015/03/12 Javascript
jQuery的基本概念与高级编程
2015/05/14 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
JavaScript中的时间处理小结
2016/02/24 Javascript
jquery mobile界面数据刷新的实现方法
2016/05/28 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
[41:21]夜魇凡尔赛茶话会 第三期02:看图识人
2021/03/11 DOTA
[50:44]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第二场 2月22日
2021/03/11 DOTA
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
Python 读取位于包中的数据文件
2020/08/07 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
pandas 按日期范围筛选数据的实现
2021/02/20 Python
分享29个基于Bootstrap的HTML5响应式网页设计模板
2015/11/19 HTML / CSS
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
生物制药专业求职信
2014/03/11 职场文书
2014年业务工作总结
2014/11/17 职场文书
慰问信模板
2015/02/14 职场文书
单位同意报考证明
2015/06/17 职场文书
四十年同学聚会致辞
2015/07/28 职场文书
2016年学校招生广告语
2016/01/28 职场文书