网络编程
位置:首页>> 网络编程>> Python编程>> Python 用三行代码提取PDF表格数据

Python 用三行代码提取PDF表格数据

作者:Python开发者  发布时间:2023-10-08 18:54:57 

标签:Python,提取,PDF

从 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]"

来源:https://mp.weixin.qq.com/s/bCKr6qm31gBICBKkCE3F-Q

0
投稿

猜你喜欢

  • 博主一直在维护一个导出PDF的服务,但是这个服务导出的PDF文件是真的巨大,动辄就上百MB。这里面主要是图片占据了大多数体积,所以考虑在导出
  • IEEE Spectrum 根据以下数据来源,对各大编程语言的使用普及率进行了统计。1)谷歌搜索结果2)谷歌趋势分析3)推特 (这是什么东西
  • 整个重装步骤大致分四个步骤进行,第一步,备份原mysql中的所有数据库。第二步,完全卸载mysql第三步,下载安装新版mysql第四步,导入
  • 有一组4096长度的数据,需要找到一阶导数从正到负的点,和三阶导数从负到正的点,截取了一小段。394.0 388.0 389.0 388.0
  • 1.Http连接基础Http协议承载了互联网上的主要流量,然而说到传输,还要回归到最基本的网络分层模型TCP/IP。TCP/IP是全球计算机
  • 前言现在在疫情阶段,想找一份不错的工作变得更为困难,很多人会选择去网上看招聘信息。可是招聘信息有一些是错综复杂的。而且不能把全部的信息全部罗
  • 本文实例为大家分享了wxPython色环电阻计算器的具体代码,供大家参考,具体内容如下import wx # 导入wxPythonclass
  • 本文记录了mysql 5.7.16安装配置方法,具体内容如下第一步:下载下载地址滚动到下方就能看到了,根据自己的需求下载;我的电脑为64为的
  • Python 编程中使用 time 模块可以让程序休眠,具体方法是time.sleep(秒数),其中“秒数”以秒为单位,可以是小数,0.1秒
  • 前言使用pandas对数据操作,筛选数据时,根据任务要求有时不仅要某列中存在空值的行,并且要删除某列中指定值所在行。1.data.dropn
  • 前言之前我们分享过用Python进行可视化的9种常见方式。其实我们还能让可视化图形逼格更高一些,今天就分享一下如何让可视化秀起来:用Pyth
  • 1、使用ImageField先安装pillow模块pip install pillow2、在app的models中设置class Image
  • 1、Python的数组可分为三种类型:(1) list 普通的链表,初始化后可以通过特定方法动态增加元素。定义方式:arr = [元素](2
  • 本文实例讲述了Python实现的各种常见分布算法。分享给大家供大家参考,具体如下:#-*- encoding:utf-8 -*-import
  • 之前给大家介绍过python高手之路python处理excel文件(方法汇总)  Python操作Excel之xlsx文件&nbs
  • 近期公司准备开发一个计费项目,数据库当然还是选用我最信赖的Oracle了。由于一部分基础数据在一台Win2000 Server的S
  • 译者 | 豌豆花下猫声明 :本文获得原作者授权翻译,转载请保留原文出处,请勿用于商业或非法用途。有许许多多文章写了 Python 中的许多很
  • 1.用一个栈【python中可以用List】就可以解决,时间和空间复杂度都是O(n)# -*- coding: utf8 -*-# 符号表S
  • 为什么是三谈为什么是三谈呢?一是因为这真的是一个被说烂的话题,二是因为太师傅在n年前就写过这篇再谈iframe自适应高度。之所以再提该问题,
  • 与数据库交互的基本语言是sql,数据库每次解析和执行sql语句多需要执行很多步骤。以sql server为例,当数据库收到一条查询语句时,语
手机版 网络编程 asp之家 www.aspxhome.com