如何使用Python提取pdf表格及文本,并保存到excel | 您所在的位置:网站首页 › 如何在excel中导出特定的数据并保存到桌面 › 如何使用Python提取pdf表格及文本,并保存到excel |
来自公众号:Python大数据分析 pdf是一种便携式文档格式,由Adobe公司设计。因为不受平台限制,且方便保存和传输,所以pdf非常受欢迎。 目前市场上有很多pdf工具,大部分是阅读类,也有支持对pdf的修改、转换等功能,但这部分工具不少是收费的。 这次介绍一个开源python工具库-pdfplumber,可以方便地获取pdf的各种信息,包括文本、表格、图表、尺寸等。 pdfplumber在github上有英文官方文档,后面我们会捡重点讲解,先看下如何用pdfplumber提取pdf表格? 以NBA 2020-2021 常规赛数据作为范例,pdf表格如下: 第一步:使用pdfplumber提取表格文本 # 导入pdfplumber import pdfplumber # 读取pdf文件,保存为pdf实例 pdf = pdfplumber.open("E:\\nba.pdf") # 访问第二页 first_page = pdf.pages[1] # 自动读取表格信息,返回列表 table = first_page.extract_table() table输出: 第二步:整理成dataframe格式,保存为excel import pandas as pd # 将列表转为df table_df = pd.DataFrame(table_2[1:],columns=table_2[0]) # 保存excel table_df.to_excel('test.xlsx') table_df输出: 一个小小的脚本,不到十行代码,便将pdf表格提取并转化为dataframe格式,最终保存到excel。 有个初步认知后,接下来详细讲讲pdfplumber的安装、导入、api接口等信息。 pdfplumber简介前面已经介绍过pdfplumber的用途,也用一个小案例展示了如何提取表格,我觉得对于pdfplumber只需要了解三点就可以。 1、它是一个纯python第三方库,适合python 3.x版本 2、它用来查看pdf各类信息,能有效提取文本、表格 3、它不支持修改或生成pdf,也不支持对pdf扫描件的处理 Github地址https://github.com/jsvine/pdfplumber pdfplumber安装和导入同其他python库一样,pdfplumber支持使用pip安装,在命令行输入: pip install pdfplumber如果遇到安装慢的问题,可以替换镜像源,会快很多。 pdfplumber安装后,用import导入即可使用: import pdfplumber .... pdfplumber简单使用pdfplumber中有两个基础类,PDF和Page。看字面意思能猜出,前者是处理整个文档,后者是处理页面。 「pdfplumber.PDF类」 属性描述.metadata获取pdf基础信息,返回字典.pages一个包含pdfplumber.Page实例的列表,每一个实例代表pdf每一页的信息。「pdfplumber.Page类」 这是pdfplumber的核心功能,对pdf的大部分操作都是基于这个类,包括提取文本、表格、尺寸等。 这里暂不一一列举它的属性和方法。 通过一个简单的案例,就可以明白它们的作用。示例pdf文档,共两页: 读取pdf # 导入pdfplumber import pdfplumber # 读取pdf文件,返回pdfplumber.PDF类的实例 pdf = pdfplumber.open("e:\\nba2.pdf")获取该pdf文档的信息 # 通过pdfplumber.PDF类的metadata属性获取pdf信息 pdf.metadata输出: 这些是pdf的基础信息,包括作者、来源、日期等。 总页数 # 通过pdfplumber.PDF类的metadata属性获取pdf页数 len(pdf.pages)读取第一页的页宽、页高等信息 # 第一页pdfplumber.Page实例 first_page = pdf.pages[0] # 查看页码 print('页码:',first_page.page_number) # 查看页宽 print('页宽:'first_page.width) # 查看页高 print('页高:'first_page.height)输出: 读取第一页的文本 # 读取文本 text = first_page.extract_text() print(text)输出: 读取第二页的表格 import pandas as pd # 第二页pdfplumber.Page实例 first_page = pdf.pages[1] # 自动读取表格信息,返回列表 table = first_page.extract_tables() # 将列表转为df table_df = pd.DataFrame(table_2[1:],columns=table_2[0]) table_dfpdfplumber提取表格有很多的细节需要处理,这里给到的范例表格线框比较规范,所以能很简单的提取,但对于线框不完全(包含无线框)的表格,其效果就差了不少。 在实际项目所需处理的pdf文档中,线框完全及不完全的表格都比较多,为了能够理解pdfplumber实现表格抽取的原理和方法,我们需要去细究相关参数的设置。 正如案例所示,pdfplumber.Page对象的.extract_table()方法可以提取表格,返回从页面上最大的表中提取的文本,以列表列表的形式显示,结构为row -> cell。 「表格抽取参数设置」 默认情况下,extract_table使用页面的垂直和水平线(或矩形边缘)作为单元格分隔符。该方法可以通过table_settings参数进行高度自定义。可能的设置及其默认值: { "vertical_strategy": "lines", "horizontal_strategy": "lines", "explicit_vertical_lines": [], "explicit_horizontal_lines": [], "snap_tolerance": 3, "join_tolerance": 3, "edge_min_length": 3, "min_words_vertical": 3, "min_words_horizontal": 1, "keep_blank_chars": False, "text_tolerance": 3, "text_x_tolerance": None, "text_y_tolerance": None, "interp_tolerance": 3, "interp_x_tolerance": None, "interp_y_tolerance": None, }pdfplumber支持对图表进行可视化调试,能输出图像,显示如何提取表。 pdfplumber的独特之处python中有很多库可以处理pdf,比如PyPDF2、pdfminer等,那pdfplumber的优势在哪呢? 首先,pdfplumber能轻松访问有关PDF对象的所有详细信息,且用于提取文本和表格的方法高级可定制,使用者可根据表格的具体形式来调整参数。 最关键的是pdfplumber作者持续在维护该库,而同样受欢迎的PyPDF2已经不再维护了。 为了答谢广大粉丝,我们每个月都有送书活动,最近有两次送书: 学 Python,销量1000000本的蟒蛇书来啦! 你要的职场“摸鱼”神器来了!送书5本! 推荐阅读:入门: 最全的零基础学Python的问题 | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 | 从万众期待到口碑扑街!唐探3令人失望 | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python《天天酷跑》游戏!AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!| 再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|年度爆款文案1).卧槽!Pdf转Word用Python轻松搞定!2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密 4).80行代码!用Python做一个哆来A梦分身 5).你必须掌握的20个python代码,短小精悍,用处无穷 6).30个Python奇淫技巧集 7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货 8).再见Python!我要学Go了!2500字深度分析!9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片点阅读原文,领AI全套资料! |
CopyRight 2018-2019 实验室设备网 版权所有 |