Python骚操作,提取pdf文件中的表格数据!

简介: Python骚操作,提取pdf文件中的表格数据!

在实际研究中,我们经常需要获取大量数据,而这些数据很大一部分以pdf表格的形式呈现,如公司年报、发行上市公告等。面对如此多的数据表格,采用手工复制黏贴的方式显然并不可取。那么如何才能高效提取出pdf文件中的表格数据呢?



Python提供了许多可用于pdf表格识别的库,如camelot、tabula、pdfplumber等。综合来看,pdfplumber库的性能较佳,能提取出完整、且相对规范的表格。因此,本推文也主要介绍pdfplumber库在pdf表格提取中的作用。

作为一个强大的pdf文件解析工具,pdfplumber库可迅速将pdf文档转换为易于处理的txt文档,并输出pdf文档的字符、页面、页码等信息,还可进行页面可视化操作。使用pdfplumber库前需先安装,即在cmd命令行中输入:

pip install pdfplumber

pdfplumber库提供了两种pdf表格提取函数,分别为.extract_tables( )及.extract_table( ),两种函数提取结果存在差异。为进行演示,我们网站上下载了一份短期融资券主体信用评级报告,为pdf格式。任意选取某一表格,其界面如下:


Python骚操作,提取pdf文件中的表格数据!



关于怎么快速学python,可以加下小编的python学习群:611+530+101,不管你是小白还是大牛,小编我都欢迎,不定期分享干货

每天晚上20:00都会开直播给大家分享python学习知识和路线方法,群里会不定期更新最新的教程和学习方法,大家都是学习python的,或是转行,或是大学生,还有工作中想提升自己能力的,如果你是正在学习python的小伙伴可以加入学习。最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实

接下来,我们简要分析两种提取模式下的结果差异。

(1).extract_tables( )

可输出页面中所有表格,并返回一个嵌套列表,其结构层次为table→row→cell。此时,页面上的整个表格被放入一个大列表中,原表格中的各行组成该大列表中的各个子列表。若需输出单个外层列表元素,得到的便是由原表格同一行元素构成的列表。例如,我们执行如下程序:


Python骚操作,提取pdf文件中的表格数据!

输出结果:


Python骚操作,提取pdf文件中的表格数据!

(2).extract_table( )

返回多个独立列表,其结构层次为row→cell。若页面中存在多个行数相同的表格,则默认输出顶部表格;否则,仅输出行数最多的一个表格。此时,表格的每一行都作为一个单独的列表,列表中每个元素即为原表格的各个单元格内容。若需输出某个元素,得到的便是具体的数值或字符串。如下:


Python骚操作,提取pdf文件中的表格数据!

输出结果:


Python骚操作,提取pdf文件中的表格数据!

在此基础上,我们详细介绍如何从pdf文件中提取表格数据。其中一种思路便是将提取出的列表视为一个字符串,结合Python的正则表达式re模块进行字符串处理后,将其保存为以标准英文逗号分隔、可被Excel识别的csv格式文件,即进行如下操作:


Python骚操作,提取pdf文件中的表格数据!

输出结果:


Python骚操作,提取pdf文件中的表格数据!



尽管能获得完整的表格数据,但这种方法相对不易理解,且在处理结构不规则的表格时容易出错。由于通过pdfplumber库提取出的表格数据为整齐的列表结构,且含有数字、字符串等数据类型。因此,我们可调用pandas库下的DataFrame( )函数,将列表转换为可直接输出至Excel的DataFrame数据结构。DataFrame的基本构造函数如下:

DataFrame([data,index, columns])

三个参数data、index和columns分别代表创建对象、行索引和列索引。DataFrame类型可由二维ndarray对象、列表、字典、元组等创建。本推文中的data即指整个pdf表格,提取程序如下:


Python骚操作,提取pdf文件中的表格数据!

其中,table[1:]表示选定整个表格进行DataFrame对象创建,columns=table[0]表示将表格第一行元素作为列变量名,且不创建行索引。输出Excel表格如下:


Python骚操作,提取pdf文件中的表格数据!

通过以上简单程序,我们便提取出了完整的pdf表格。但需注意的是,面对不规则的表格数据提取,创建DataFrame对象的方法依然可能出错,在实际操作中还需进行核对。

相关文章
|
7天前
|
文字识别 BI
【图片型PDF】批量识别扫描件PDF指定区域局部位置内容,将识别内容导出Excel表格或批量改名文件,基于阿里云OCR对图片型PDF识别改名案例实现
在医疗和政务等领域,图片型PDF文件(如病历、报告、公文扫描件)的处理需求广泛。通过OCR技术识别这些文件中的文字信息,提取关键内容并保存为表格,极大提高了信息管理和利用效率。本文介绍一款工具——咕嘎批量OCR系统,帮助用户快速处理图片型PDF文件,支持区域识别、内容提取、导出表格及批量改名等功能。下载工具后,按步骤选择处理模式、进行区域采样、批量处理文件,几分钟内即可高效完成数百个文件的处理。
49 8
|
12天前
|
人工智能 编解码 文字识别
OCRmyPDF:16.5K Star!快速将 PDF 文件转换为可搜索、可复制的文档的命令行工具
OCRmyPDF 是一款开源命令行工具,专为将扫描的 PDF 文件转换为可搜索、可复制的文档。支持多语言、图像优化和多核处理。
140 17
OCRmyPDF:16.5K Star!快速将 PDF 文件转换为可搜索、可复制的文档的命令行工具
|
28天前
|
机器学习/深度学习 人工智能 文字识别
Zerox:AI驱动的万能OCR工具,精准识别复杂布局并输出Markdown格式,支持PDF、DOCX、图片等多种文件格式
Zerox 是一款开源的本地化高精度OCR工具,基于GPT-4o-mini模型,支持PDF、DOCX、图片等多种格式文件,能够零样本识别复杂布局文档,输出Markdown格式结果。
113 4
Zerox:AI驱动的万能OCR工具,精准识别复杂布局并输出Markdown格式,支持PDF、DOCX、图片等多种文件格式
|
2月前
|
人工智能 文字识别 数据挖掘
MarkItDown:微软开源的多格式转Markdown工具,支持将PDF、Word、图像和音频等文件转换为Markdown格式
MarkItDown 是微软开源的多功能文档转换工具,支持将 PDF、PPT、Word、Excel、图像、音频等多种格式的文件转换为 Markdown 格式,具备 OCR 文字识别、语音转文字和元数据提取等功能。
335 9
MarkItDown:微软开源的多格式转Markdown工具,支持将PDF、Word、图像和音频等文件转换为Markdown格式
|
2月前
|
JavaScript
jquery图片和pdf文件预览插件
EZView.js是一款jquery图片和pdf文件预览插件。EZView.js可以为图片和pdf格式文件生成在线预览效果。支持的文件格式有pdf、jpg、 png、jpeg、gif。
75 16
|
4月前
|
Java Apache Maven
将word文档转换成pdf文件方法
在Java中,将Word文档转换为PDF文件可采用多种方法:1) 使用Apache POI和iText库,适合处理基本转换需求;2) Aspose.Words for Java,提供更高级的功能和性能;3) 利用LibreOffice命令行工具,适用于需要开源解决方案的场景。每种方法都有其适用范围,可根据具体需求选择。
|
4月前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
1277 1
|
4月前
|
JavaScript 前端开发 容器
Vue生成PDF文件攻略:html2canvas与jspdf联手,中文乱码与自动换行难题攻克
Vue生成PDF文件攻略:html2canvas与jspdf联手,中文乱码与自动换行难题攻克
406 0
|
4月前
|
计算机视觉 Python
Python操作PDF文件
Python操作PDF文件
65 1
|
4月前
|
索引 Python
PDF文件页面提取操作小指南
PDF文件页面提取操作小指南
132 4

热门文章

最新文章

推荐镜像

更多