作者:陈熹

来源:早起Python

大家好,在之前的办公自动化系列文章中我们已经详细介绍了如何使用python批量处理PDF文件,包括合并、拆分、水印、加密等操作。

今天我们再次回到PDF,详细讲解如何使用python从PDF提取指定的信息。我们将以一份年度报告PDF为例进行介绍,内含大量文字、表格、图片,具体如下

模块安装

首先需要安装两个模块,第一个是pdfplumber,在命令行使用pip安装即可

pip install pdfplumber

第二个是fitz, 它是pymupdf中的一个模块,同样可以使用pip轻松安装

pip install pymupdf

文字信息提取

使用python提取PDF中文字代码思路如下

  1. 利用pdfplumber打开一个 PDF 文件
  2. 获取指定的页,或者遍历每一页
  3. 利用.extract_text()方法提取当前页的文字

现在让我们用上述代码尝试提取示例数据中第12页的文字

import pdfplumberfile_path = r'C:xxxxpractice.PDF'with pdfplumber.open(file_path) as pdf:    page = pdf.pages[11]    print(page.extract_text())

结果如下图所示

接着可以将内容通过导入python-docx并借助wordfile.add_paragraph()写入Word文件中,而这个模块我们已经讲解很多次,此处就不再赘述。

表格信息提取

使用Python提取单个表格和提取单页文字的代码非常类似,用的是.extract_table()

但需要注意的是.extract_table()默认提取指定页面的第一个表格,如果当前页面有多个表格都需要提取,则要直接使用.extract_tables()

例如示例文件中第 13 页有 2 个表格,我们分别利用.extract_table()和.extract_tables()观察输出结果

import pdfplumberfile_path = r'C:xxxxpractice.PDF'with pdfplumber.open(file_path) as pdf:    page = pdf.pages[12]    print(page.extract_table())

结果如下

可以看到是一个嵌套列表,熟悉这种格式的人会理解想到可以pandas或者遍历该嵌套列表后借助openpyxl的sheet.append(list)写入Excel文件中,

import pdfplumberfile_path = r'C:xxxxpractice.PDF'with pdfplumber.open(file_path) as pdf:    page = pdf.pages[12]    print(page.extract_tables())

而.extract_tables()提取当前页所有表格会产生了一个三级嵌套列表,第一层的列表就代表每一个表格,之后也可以利用其他库写入Excel。

图片提取

对于图片提取,现在没有任何一个模块可以做到百分之百的提取。本文只介绍基于fitz模块的代码,基本思路是通过正则查找图片并将其输出

例如提取示例文件中的图片,代码可以这么写

import fitzimport reimport osfile_path = r'C:xxxpractice.PDF'dir_path = r'C:xxx' # 存放图片的文件夹def pdf2pic(path, pic_path):    checkXO = r"/Type(?= */XObject)"    checkIM = r"/Subtype(?= */Image)"    pdf = fitz.open(path)    lenXREF = pdf._getXrefLength()    imgcount = 0    for i in range(1, lenXREF):        text = pdf._getXrefString(i)        isXObject = re.search(checkXO, text)        isImage = re.search(checkIM, text)        if not isXObject or not isImage:            continue        imgcount += 1        pix = fitz.Pixmap(pdf, i)        new_name = f"img_{imgcount}.png"        if pix.n 

结果如下

可以看到成功提取了图片,但PDF中的图片远不止这些,如果你有其他思路或者方法可以在留言区与我交流。

写在最后

最后要说明的是,在上一篇文章及本文中我们剖析了每一行代码。但针对PDF的模块较多,且有些模块功能并不完善,代码也没有类似OFFICE三件套操作那般简洁,因此更多时候以理解为主,不需要完全掌握写,会用会改即可!

当然还是希望大家能够理解Python办公自动化的一个核心就是批量操作-解放双手,并且能与日常办公结合让复杂的工作自动化!

c++代码整洁之道pdf_别再问如何用python提取PDF内容了相关推荐

  1. python自动办公 pdf_别再问如何用 Python 提取 PDF 内容了!

    作者|陈熹 头图 | CSDN 下载自东方 IC 来源 | 早起Python(ID:zaoqi-python) 导读 大家好,在之前的办公自动化系列文章中我们已经详细介绍了如何使用Python批量处理 ...

  2. 别再问如何用 Python 提取 PDF 内容了!

    作者 | 陈熹 头图 | CSDN 下载自东方 IC 来源 | 早起Python(ID:zaoqi-python) 导读 大家好,在之前的办公自动化系列文章中我们已经详细介绍了如何使用Python批量 ...

  3. 怎么在python提取别的数据了_别再问如何用python提取PDF内容了!

    作者:陈熹 来源:早起Python 大家好,在之前的办公自动化系列文章中我们已经详细介绍了如何使用python批量处理PDF文件,包括合并.拆分.水印.加密等操作. 今天我们再次回到PDF,详细讲解如 ...

  4. 别再问如何用Python提取PDF内容了!

    公众号后台回复"图书",了解更多号主新书内容 作者:陈熹 来源:早起Python 导读 大家好,在之前的办公自动化系列文章中我们已经详细介绍了????如何使用Python批量处理P ...

  5. python提取pdf内容_别再问如何用Python提取PDF内容了!

    导读 大家好,在之前的办公自动化系列文章中我们已经详细介绍了

  6. 详细总结《代码整洁之道》 - 基础篇

    本文概述 本文详细总结了本书<代码整洁之道>前文部分的知识点.梳理的具体内容如下:命名规范需要注意的地方:如何编写函数里的代码以及函数之间放置的位置:注释需要注意的地方,代码格式以及在某些 ...

  7. 重读【代码整洁之道】

    一.前言 [代码整洁之道]很经典,但也有些过时,翻译上也有些啰嗦,但总体上是好书.通过对本书核心内容的摘抄,结合自己的经验,整理了一些精简的点,这样你就省的去啃那本400多页的书了. 软件质量 = 架 ...

  8. 《代码整洁之道》(Clean Code)- 读书笔记

    一.关于Bob大叔的Clean Code <代码整洁之道>主要讲述了一系列行之有效的整洁代码操作实践.软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关.这一点,无论是敏捷开发流派 ...

  9. 2015年第11本:代码整洁之道Clean Code

    前一段时间一直在看英文小说,在读到<Before I fall>这本书时,读了40%多实在看不下去了,受不了美国人啰啰嗦嗦的写作风格,还是读IT专业书吧. 从5月9日开始看<代码整洁 ...

最新文章

  1. web前端,我的新开始
  2. mysql backup_Mysqlbackup 备份详解(mysql官方备份工具)
  3. java什么数组能村浮点数_c脚本怎样把字节数组转换成浮点数
  4. realloc invalid pointer错误解析
  5. 【转】盖茨给职场新人的10句话
  6. Python布局管理器
  7. 跨浏览器(IE/FF/OPERA)JS代码小结
  8. iOS开发UI篇--仿射变换(CGAffineTransform)使用小结
  9. 济安横断面为什么会有水印_PS差值模式是如何去水印的?你看的懂抖音的沙雕做法?...
  10. 【2019南昌邀请赛赛网络赛K:】MORE XOR(嵌套异或----打表找规律)
  11. 职称计算机 将计算机broad_1下的e盘映射为k盘网络驱动器,职称计算机考试(网络基础)试题及答案操作..doc...
  12. 傅里叶级数与积分方程
  13. java pdf转png格式_如何在Java中将PDF转换为PNG或JPG
  14. 深入浅出XTTS:Oracle数据库迁移升级利器(附PPT)
  15. 苹果笔记本上网很慢怎么回事?macbook无线上网慢的解决方法
  16. 构造方法--带参构造方法
  17. 这些片子你猜到结局了吗?
  18. 互联网校招项目经验备战方法论和要求详解
  19. 原生Android手机管家,谁说安卓一定卡,诺基亚 X7 原生安卓自备手机管家一键优化告别卡顿...
  20. Fire Game FZU - 2150 (水搜索)

热门文章

  1. PyTorch框架学习十八——Layer Normalization、Instance Normalization、Group Normalization
  2. 吴恩达《机器学习》学习笔记十一——应用机器学习的建议
  3. Android手势锁实现
  4. 小甲鱼 OllyDbg 教程系列 (四) : 逆向 VisualSite Designer 之 硬件断点
  5. Lambda 表达式详解~Stream Pipelines
  6. Spring Data JPA 从入门到精通~定义查询方法的配置方法
  7. 个别学生计算机辅导计划,网络学院计算机基础统考辅导计划.doc
  8. java单例方法_Java单例模式
  9. java三态_Java中对象的三种状态
  10. 外设驱动库开发笔记8:GPIO模拟I2C驱动