pdf是一种便携式文档格式,由Adobe公司设计。因为不受平台限制,且方便保存和传输,所以pdf非常受欢迎。 目前市场上有很多pdf工具,大部分是阅读类,也有支持对pdf的修改、转换等功能,但这部分工具不少是收费的。 这次介绍一个开源python工具库-pdfplumber,可以方便地获取pdf的各种信息,包括文本、表格、图表、尺寸等。 pdfplumber在github上有英文官方文档,后面我们会捡重点讲解,先看下如何用pdfplumber提取pdf表格? 以NBA 2020-2021 常规赛数据作为范例,pdf表格如下: 第一步:使用pdfplumber提取表格文本 # 导入pdfplumberimport pdfplumber# 读取pdf文件,保存为pdf实例pdf = pdfplumber.open('E:\\nba.pdf') # 访问第二页first_page = pdf.pages[1]# 自动读取表格信息,返回列表table = first_page.extract_table()table 输出: 第二步:整理成dataframe格式,保存为excel
输出: 一个小小的脚本,不到十行代码,便将pdf表格提取并转化为dataframe格式,最终保存到excel。 有个初步认知后,接下来详细讲讲pdfplumber的安装、导入、api接口等信息。 pdfplumber简介前面已经介绍过pdfplumber的功能,也用一个小案例展示了如何提取表格,我觉得对于pdfplumber只需要了解三点就可以。 1、它是一个纯python第三方库,适合python 3.x版本 Github地址https://github.com/jsvine/pdfplumber pdfplumber安装和导入同其他python库一样,pdfplumber支持使用pip安装,在命令行输入: pip install pdfplumber 如果遇到安装慢的问题,可以替换镜像源,会快很多。 pdfplumber安装后,用import导入即可使用:
pdfplumber简单使用pdfplumber中有两个基础类,PDF和Page。看字面意思能猜出,前者是处理整个文档,后者是处理页面。 pdfplumber.PDF类
pdfplumber.Page类 通过一个简单的案例,就可以明白它们的作用。
# 导入pdfplumberimport pdfplumber# 读取pdf文件,返回pdfplumber.PDF类的实例pdf = pdfplumber.open('e:\\nba2.pdf')
输出: 这些是pdf的基础信息,包括作者、来源、日期等。
# 通过pdfplumber.PDF类的metadata属性获取pdf页数len(pdf.pages)
输出:
# 读取文本text = first_page.extract_text()print(text) 输出:
pdfplumber提取表格有很多的细节需要处理,这里给到的范例表格线框比较规范,所以能很简单的提取,但对于线框不完全(包含无线框)的表格,其效果就差了不少。 在实际项目所需处理的pdf文档中,线框完全及不完全的表格都比较多,为了能够理解pdfplumber实现表格抽取的原理和方法,我们需要去细究相关参数的设置。 正如案例所示,pdfplumber.Page对象的 表格抽取参数设置 { '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, 'intersection_tolerance': 3, 'intersection_x_tolerance': None, 'intersection_y_tolerance': None,} pdfplumber支持对图表进行可视化调试,能输出图像,显示如何提取表。 pdfplumber的独特之处python中有很多库可以处理pdf,比如PyPDF2、pdfminer等,那pdfplumber的优势在哪呢? 首先,pdfplumber能轻松访问有关PDF对象的所有详细信息,且用于提取文本和表格的方法高级可定制,使用者可根据表格的具体形式来调整参数。 最关键的是pdfplumber作者持续在维护该库,而同样受欢迎的PyPDF2已经不再维护了。 |
|
来自: 新用户18985384 > 《Python》