c++代码整洁之道pdf_别再问如何用Python提取PDF内容了!

article/2025/6/13 21:02:05

4fb0ea08f7f1835f39673dcc58b84b1d.gif

公众号后台回复 “图书“ ,了解更多号主新书内容

作者:陈熹

来源:早起Python

f1c4ba4ca7e45e81108e0d9e39fc7173.png

导读

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

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

模块安装

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

pip install pdfplumber

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

pip install pymupdf

文字信息提取

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

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

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

import pdfplumber

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

表格信息提取

使用Python提取单个表格和提取单页文字的代码非常类似,用的是.extract_table()b16c5d14912c3536e9802a459a0830c6.png但需要注意的是.extract_table()默认提取指定页面的第一个表格,如果当前页面有多个表格都需要提取,则要直接使用.extract_tables()

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

import pdfplumber
file_path = r'C:\xxxx\practice.PDF'

with pdfplumber.open(file_path) as pdf:
    page = pdf.pages[12]
    print(page.extract_table())

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

import pdfplumber

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

图片提取

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

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

import fitz

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

写在最后

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

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

今天的文章就到这里,原创不易,如果喜欢的话请给我一波三连支持吧(在看、转发、留言)

◆ ◆ ◆  ◆ ◆

麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:

132d46be4d51ee38a6377492f334adae.png

点击下方小程序即可进入购买页面:

数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。

管理员二维码:

5df3206d4c85082f7a8c474d637f7466.png

猜你喜欢

● 麟哥拼了!!!亲自出镜推荐自己新书《数据分析师求职面试指南》

● 厉害了!麟哥新书登顶京东销量排行榜!

● 笑死人不偿命的知乎沙雕问题排行榜

● 用Python扒出B站那些“惊为天人”的阿婆主!

● 你相信逛B站也能学编程吗


http://chatgpt.dhexx.cn/article/BHdKo5lM.shtml

相关文章

Python好书推荐《Python代码整洁之道》——编写优雅的代码

前言 Python是当今最流行的语言之一。相对较新的领域如数据科学、人工智能、机器人和数据分析,以及传统的专业如Web开发和科学研究等,都在拥抱Python。随着时间的推移,Python有可能会发展成一门基础学科,所以,学好Pyt…

读《代码整洁之道》

与《代码大全》类似关注命名,如函数(方法的) 还讨论了,注释,格式,错误处理,边界,单元测试,类,系统,并发编程等 本书讲的编程语言是以 JAVA 为基础…

C++17代码整洁之道

C17代码整洁之道 C代码整洁的基本规范 良好的命名 名称应该自解释使用域中的名称避免使用匈牙利命名法(即名称前加类型)不要通过注释禁用代码 函数 只做一件事情 函数体量要小 当你为函数找到一个富有表现力的名称时,名称中没有连词 圈复杂度低 函数的参数要少 函数尽…

C++代码整洁之道

整洁的代码在团队中无疑是很受欢迎的,可以高效的被其它成员理解和维护,本文参考《C代码整洁之道》和《Google C编码规范》,结合自己的一些想法整理如下: C本身作为面向对象语言,首先介绍下面向对象一般涉及到的开发原…

C++ 代码整洁之道

NOTICE: 这篇文章的框架条目来自《C代码整洁之道:C17可持续软件开发模式实践》,作者: [德] 斯提芬罗特。书籍原名"Clean C: Sustainable Software Development Patterns and Best Practices with C 17"。 NOTICE:未经作者允许禁止转载! 文章目…

SQL中的左连接与右连接,内连接有什么区别

例子,相信你一看就明白,不需要多说 A表(a1,b1,c1) B表(a2,b2) 左连接: select A.,B. from A left outer join B on(A.a1B.a2) 结果是: 右连接: select A.,B. from A right outer join B on(A.a1B.a2) 结果是: 内连接&#xff1a…

sql左连接、右连接结果总结

班级team 表 班级和教师连接表team_teacher – 左连接: – 对于左连接,查询结果中,left左边表格的记录会全部包含 – 再到left右边表格查,如果匹配结果是0或1,对结果总数没影响 – 如果匹配条数大于1,那么结果就增加…

内连接,左连接和右连接作用

在数据库查询中,经常会遇到多表连接来查询数据,下面来说一下他们的连接方法和作用 内连接:内连接是很常用的一个连接方法,用来查询两个表或者多个表之间相同的数据,例如: 查询的是他们之间相同的数据 内…

SQL中的连接(左、右、内连接)

目录 左连接(LEFT JOIN或LEFT OUTER JOIN): 右连接(RIGHT JOIN或RIGHT OUTER JOIN): 内连接(INNER JOIN也叫等值连接): 全连接(FULL JOIN)&…

SQL内连接,左连接,右连接区别及联系

目录 数据库建表及其内容 内连接(默认连接) 左连接 右连接 总结: 数据库建表及其内容 stu表 班级表(class) 内连接(默认连接) SELECT stu.stuname , classname FROM class INNER JOIN stu…

SQL中左连接和右连接的理解误区

SQL中左连接和右连接的理解误区: 1.左右外连接中,怎么区分哪个表当左表,哪个表当右表? 2.什么时候用左连接,什么时候用右连接? 首先,重新捋一遍二者概念: 左连接的语法&#xff…

SQL语句什么是左连接、右连接、内连接?

1、左连接 以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分。 左表(table1)全部保留,右表(table2)关联不上用n…

sql的左连接,右连接,内连接

环境: SQL工具(如Navicat,SQLyog) MySQL驱动 全局总结: 左连接:关注左边,右边没有就为空。右连接:关注右边,左边没有就为空。内连接:返回交集 必备: 两张或多张表格 一&#x…

Linux系统之iostat命令的基本使用

Linux系统之iostat命令的基本使用 一、iostat命令介绍二、iostat命令帮助1.1 iostat的帮助信息1.2 iostat的选项解释 三、iostat命令的基本使用3.1 查看iostat工具版本3.2 直接使用iostat命令3.3 间隔5秒查看3次信息3.4 只查看磁盘状态3.5 以k或M为单位显示信息 四、查看磁盘I/…

Linux实时监控iostat命令详解

概述&#xff1a; iostat 主要用于输出CPU和磁盘I/O相关的统计信息。 格式&#xff1a; iostat [选项] [<时间间隔>] [<次数>] 如图 参数&#xff1a; -c 显示CPU使用情况 -d 显示磁盘使用情况 -N 显示磁盘阵列(LVM) 信息 -n 显示NFS 使用情况 -k 以 KB 为单位显…

服务器 iostat命令详解

iostat是I/O statistics&#xff08;输入/输出统计&#xff09;的缩写&#xff0c;iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况&#xff0c;同时也会汇报出CPU使用情况。iostat也有一个弱点&#xff0c;就是它不能对某个进程进行深入分析&#…

Linux中iostat命令参数详解

iostat主要用于监控系统设备的IO负载情况&#xff0c;iostat首次运行时显示自系统启动开始的各项统计信息&#xff0c;之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以根据需求指定相应的次数和时间。 一、使用iostat 1命令&#xff1a; 各参数含义 Device:部…

转:linux iostat命令详解

转过来学习学习。 Linux系统中的 iostat是I/O statistics&#xff08;输入/输出统计&#xff09;的缩写&#xff0c;iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况&#xff0c;同时也会汇报出CPU使用情况。同vmstat一样&#xff0c;iostat也有一个…

iostat linux,centos安装iostat命令的方法详解

在centos系统中,可以使用yum命令安装iostat。 开始,想当然地运行命令: 复制代码 代码示例: #yum install iostat 出现如下图所示的提示: 经搜索后,知道使用yum安装iostat,需要安装的其实是sysstat。 例如: 复制代码 代码示例: #yum install sysstat 出现如下图所示的安装…

iostat 命令详解(二)

iostat 命令详解(二) iostat常用命令如下: 1,iostat 2,iostat -xk 1 1 3,iostat -dk 1 1 查看吞吐量 总结: