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抓取某汽车网数据解析html存入excel示例
Dec 04 Python
python实现zencart产品数据导入到magento(python导入数据)
Apr 03 Python
初学Python函数的笔记整理
Apr 07 Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 Python
Python只用40行代码编写的计算器实例
May 10 Python
Python之多线程爬虫抓取网页图片的示例代码
Jan 10 Python
对Python中type打开文件的方式介绍
Apr 28 Python
Python设计模式之工厂方法模式实例详解
Jan 18 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
Apr 27 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 Python
python实现坦克大战
Apr 24 Python
python 利用Pyinstaller打包Web项目
Oct 23 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 获得汉字拼音首字母的函数
2009/08/01 PHP
PHP文件上传原理简单分析
2011/05/29 PHP
PHP页面间参数传递的四种方法详解
2013/06/09 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
2017/06/16 PHP
JavaScript日期时间格式化函数分享
2014/05/05 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
详解Javascript动态操作CSS
2014/12/08 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
tab栏切换原理
2017/03/22 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
2019/04/17 Javascript
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
python生成IP段的方法
2015/07/07 Python
Python实现字符串逆序输出功能示例
2017/06/24 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
python的pytest框架之命令行参数详解(上)
2019/06/27 Python
Django实现跨域请求过程详解
2019/07/25 Python
python中对_init_的理解及实例解析
2019/10/11 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
PyCharm中关于安装第三方包的三个建议
2020/09/17 Python
python 装饰器重要在哪
2021/02/14 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
2021/03/03 Python
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
英文留学推荐信范文
2014/01/25 职场文书
销售人员获奖感言
2014/02/05 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
学校学雷锋活动总结
2014/06/26 职场文书
荆州古城导游词
2015/02/06 职场文书
保护环境建议书作文300字
2015/09/14 职场文书
导游词之吉林吉塔
2019/11/11 职场文书