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 10 Python
python自定义类并使用的方法
May 07 Python
Python3处理文件中每个词的方法
May 22 Python
Python列表推导式与生成器表达式用法示例
Feb 08 Python
深入浅析Python 中 is 语法带来的误解
May 07 Python
python os模块简单应用示例
May 23 Python
Python 调用 Windows API COM 新法
Aug 22 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
Apr 07 Python
python 等差数列末项计算方式
May 03 Python
python+django+selenium搭建简易自动化测试
Aug 19 Python
python性能测试工具locust的使用
Dec 28 Python
Python实战之疫苗研发情况可视化
May 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
基于php下载文件的详解
2013/06/02 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
2016/10/03 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
extjs 为某个事件设置拦截器
2010/01/15 Javascript
javascript循环变量注册dom事件 之强大的闭包
2010/09/08 Javascript
分享20款好玩的jQuery游戏
2011/04/17 Javascript
js实现连个数字相加而不是拼接的方法
2014/02/23 Javascript
jQuery使用toggleClass方法动态添加删除Class样式的方法
2015/03/26 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
强大的 Angular 表单验证功能详细介绍
2017/05/23 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
vue slots 组件的组合/分发实例
2018/09/06 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
vscode 插件开发 + vue的操作方法
2020/06/05 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
Python的Django框架中URLconf相关的一些技巧整理
2015/07/18 Python
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
python中的计时器timeit的使用方法
2017/10/20 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
2018/10/26 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
预订奥兰多和佛罗里达州公园门票:FloridaTix
2018/01/03 全球购物
梵蒂冈和罗马卡:Omnia Card Pass
2018/02/10 全球购物
在线购买澳大利亚设计师手拿包和奢华晚装手袋:Olga Berg
2019/03/20 全球购物
上课看小说检讨书
2014/02/22 职场文书
企业理念标语
2014/06/09 职场文书
2014年中学生检讨书大全
2014/10/09 职场文书
股权转让协议书
2014/12/07 职场文书
师德承诺书2015
2015/04/28 职场文书
《清澈的湖水》教学反思
2016/02/17 职场文书
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers