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 相关文章推荐
easy_install python包安装管理工具介绍
Feb 10 Python
Python中的闭包详细介绍和实例
Nov 21 Python
python中range()与xrange()用法分析
Sep 21 Python
python爬虫使用cookie登录详解
Dec 27 Python
Python多重继承的方法解析执行顺序实例分析
May 26 Python
python pandas 对series和dataframe的重置索引reindex方法
Jun 07 Python
Python使用numpy模块创建数组操作示例
Jun 20 Python
Python中矩阵创建和矩阵运算方法
Aug 04 Python
Python3中函数参数传递方式实例详解
May 05 Python
python 连续不等式语法糖实例
Apr 15 Python
python实现AdaBoost算法的示例
Oct 03 Python
numpy array找出符合条件的数并赋值的示例代码
Jun 01 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调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
jquery 图片轮换效果
2010/07/29 Javascript
基于jquery封装的一个js分页
2011/11/15 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
2013/05/03 Javascript
js将控件隐藏的方法及display属性介绍
2013/07/04 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
2015/05/08 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
javascript深拷贝、浅拷贝和循环引用深入理解
2018/05/27 Javascript
vue单页应用的内存泄露定位和修复问题小结
2019/08/02 Javascript
js模拟F11页面全屏显示
2019/09/17 Javascript
微信小程序实现吸顶特效
2020/01/08 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
python统计一个文本中重复行数的方法
2014/11/19 Python
python 网络编程常用代码段
2016/08/28 Python
基于Python log 的正确打开方式
2018/04/28 Python
Python实现图像的垂直投影示例
2020/01/17 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
python3.8.1+selenium实现登录滑块验证功能
2020/05/22 Python
高考考python编程是真的吗
2020/07/20 Python
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
PUMA澳大利亚官方网站:德国运动品牌
2018/10/19 全球购物
SQL Server面试题
2016/10/17 面试题
企业挂职心得体会
2014/09/10 职场文书
实习推荐信格式模板
2015/03/27 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
高中生社会实践心得体会
2016/01/14 职场文书
高中数学教学反思范文
2016/02/18 职场文书
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript