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 提取文件的小程序
Jul 29 Python
在类Unix系统上开始Python3编程入门
Aug 20 Python
Python2.7下安装Scrapy框架步骤教程
Dec 22 Python
基于python实现聊天室程序
Jul 27 Python
Python 绘制酷炫的三维图步骤详解
Jul 12 Python
在pycharm中配置Anaconda以及pip源配置详解
Sep 09 Python
Python函数的默认参数设计示例详解
Dec 01 Python
python pptx复制指定页的ppt教程
Feb 14 Python
如何清空python的变量
Jul 05 Python
python给视频添加背景音乐并改变音量的具体方法
Jul 19 Python
详解Python 最短匹配模式
Jul 29 Python
Python基础之条件语句详解
Jun 16 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 setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
php实现图片缩放功能类
2013/12/18 PHP
PHP使用feof()函数读文件的方法
2014/11/07 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
Yii CDBCriteria常用方法实例小结
2017/01/19 PHP
基于jQuery的获取标签名的代码
2012/07/16 Javascript
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
SWFObject基本用法实例分析
2015/07/20 Javascript
js实现将选中值累加到文本框的方法
2015/08/12 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
js输入框使用正则表达式校验输入内容的实例
2017/02/12 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
原生js实现轮播图
2017/02/27 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
使用vue打包时vendor文件过大或者是app.js文件很大的问题
2018/06/29 Javascript
微信小程序实现的一键复制功能示例
2019/04/24 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
2015/05/02 Python
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
Python读写及备份oracle数据库操作示例
2018/05/17 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
环境科学专业大学生自荐信格式
2013/09/21 职场文书
校园摄影活动策划方案
2014/02/05 职场文书
小学生期末评语大全
2014/04/21 职场文书
乡文化站暑期培训方案
2014/08/28 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
运动会宣传语
2015/07/13 职场文书