Python 提取 PDF 中的表格数据


1、环境说明

操作系统 : Winodws

语言 : Python 3.8.5

IDE : PyCharm 2019.3.5 (Professional Edition)

框架 1 : pdfplumber 0.5.28 官网

框架 2 : camelot 0.8.2 官网

说明 : 这两个框架近期还算活跃,很多框架都1年以上没有活跃,就不考虑了。
PS : PyCharm 在 Windows 操作系统下,使用虚拟环境 安装依赖包,可能会报错,可以尝试 参考,通过安装后缀名为 .whl 的文件,实现离线安装。


PS : 测试用的 pdf 文档 下载地址

在这里插入图片描述

2、pdfplumber

代码

import pandas as pd
import pdfplumber

pdf = pdfplumber.open("D:\\Cache\\foo.pdf")
page = pdf.pages[0]
table = page.extract_table()
df = pd.DataFrame(table)
df.to_excel("D:\\Cache\\foo.xlsx", header=False, index=False)

测试结果

在这里插入图片描述

优缺点分析

优点:
1、因为这个框架,不是专门设计用来提取 表格数据,所以可以通过 text 对数据进行搜索,根据关键字只提取目标数据;
2、准确率高;(暂时没发现有数据错误提取的情况)
缺点:
1、表格 title 复杂,导致提取结果提取不全;(title 一般没那么重要,大多数情况下可以忍受)
2、提取数据导出到 Excel 或者 CSV 需要使用 pandas 框架,学习成本更高一点,不过也还可以接受;

3、camelot

代码

import camelot

# read the pdf file
tables = camelot.read_pdf('D:\\Cache\\foo.pdf', pages='1-end')

# json, excel, html, sqlite
tables.export('D:\\Cache\\foo.xlsx', f='excel')

测试结果

在这里插入图片描述

PS : 测试过程中,发现会出现数据错误提取的情况。因为涉及用户数据,没办法截图提供。

优缺点分析

优点:
1、直接导出到 Excle 或者 CSV 中,无需引入其他框架,编程简单;
2、导出数据 Excel 排版漂亮,根据页码 + 表格编号创建 sheet;
缺点:
1、没办法对数据进行搜索,只能根据页码进行数据提取;
2、存在错误读取数据的情况;(根据数据提取结果,酌情考虑框架的选择)


4、总结

两个框架各有优缺点。
情况一 : pdf 文档中所有表格全部提取,并且表格比较简单,提取过程中不会出错的情况下, camelot 绝对是最优选。
情况二 : 只提取固定的表格数据,推荐使用 pdfplumber 。

  • 6
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值