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脚本
Sep 01 Python
深入理解Python中的元类(metaclass)
Feb 14 Python
Python中的类与对象之描述符详解
Mar 27 Python
Python中int()函数的用法浅析
Oct 17 Python
Python实现矩阵转置的方法分析
Nov 24 Python
Python制作动态字符图的实例
Jan 27 Python
详解Python字典的操作
Mar 04 Python
Python 的字典(Dict)是如何存储的
Jul 05 Python
利用Python实现Shp格式向GeoJSON的转换方法
Jul 09 Python
python机器学习库xgboost的使用
Jan 20 Python
Python3 filecmp模块测试比较文件原理解析
Mar 23 Python
Python turtle实现贪吃蛇游戏
Jun 18 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
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
2008/11/18 PHP
php_xmlhttp 乱码问题解决方法
2009/08/07 PHP
ionCube 一款类似zend的PHP加密/解密工具
2010/07/25 PHP
解析php开发中的中文编码问题
2013/08/08 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
thinkPHP5框架接口写法简单示例
2019/08/05 PHP
DHTML Slide Show script图片轮换
2008/03/03 Javascript
ext实现完整的登录代码
2008/08/08 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
jQuery实现仿百度帖吧头部固定导航效果
2015/08/07 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
2015/08/13 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
AngularJS日期格式化常见操作实例分析
2018/05/17 Javascript
axios 封装上传文件的请求方法
2018/09/26 Javascript
JS实现的点击按钮图片上下滚动效果示例
2019/01/28 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
vuex的使用和简易实现
2021/01/07 Vue.js
[01:08:43]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第一场 1月9日
2021/03/11 DOTA
python列表去重的二种方法
2014/02/14 Python
python处理圆角图片、圆形图片的例子
2014/04/25 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
用Python画一个LinkinPark的logo代码实例
2019/09/10 Python
解决django-xadmin列表页filter关联对象搜索问题
2019/11/15 Python
Python hashlib和hmac模块使用方法解析
2020/12/08 Python
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
医院总经理职责
2013/12/26 职场文书
不服从上级领导安排的检讨书
2014/09/14 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
公司慰问信范文
2015/03/23 职场文书
如何使用SQL Server语句创建表
2022/04/12 SQL Server
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers