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

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://www.mzph.cn/news/410103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[html] 你知道什么是粘性布局吗?

[html] 你知道什么是粘性布局吗? MDN 是这样解释的:Sticky positioning can be thought of as a hybrid of relative and fixed positioning. A stickily positioned element is treated as relatively positioned until it crosses a specified thresh…

vim编辑模式_sublime vim模式和快捷键

vim的四种模式及模式切换vim一共有4个模式&#xff1a;正常模式 (Normal-mode) 插入模式 (Insert-mode)命令模式 (Command-mode)可视模式 (Visual-mode)正常模式启动vim后默认处于正常模式。不论位于什么模式&#xff0c;按下<Esc>键(有时需要按两下&#xff09;都会进入…

windows下启动activemq闪退

本地测试activemq时,双击bin下的activemq.bat,命令行出现闪现问题 解决:在当前目录启动命令行 输入 activemq-admin.bat start 可以正常启动 原因暂时还不知道 转载于:https://www.cnblogs.com/jiushixihuandaqingtian/p/11393557.html

win7下注册s2008

今天打开vs居然提示获取了&#xff0c;按照xp的办法没法注册&#xff0c;真是纠结啊。结果点击卸载按钮就给卸载了。不得不重新安装。 百度一搜&#xff0c;才知道升级注册的按钮被屏蔽了。╮(╯▽╰)╭&#xff0c;网上有如下代码搜索窗口并把它显示出来。 关键函数如下&#…

python读取txt文件_python实现读写txt文件的几种方法

一、读写模式&#xff1a;w&#xff1a;向文件中写入内容&#xff0c;w会清空原来文本内容a&#xff1a;向文件中追加内容r&#xff1a;从文件中读取内容wb&#xff1a;以二进制形式写入内容。rb&#xff1a;以二进制形式读文件内容ab&#xff1a;以二进制形式追加内容a、r、w&…

[html] html5的Notification桌面通知如何请求权限?

[html] html5的Notification桌面通知如何请求权限&#xff1f; Notification.requestPermission(callback);个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

python代码转换为pytorch_pytorch使用 to 进行类型转换方式

在程序中&#xff0c;有多种方法进行强制类型转换。本博文将介绍一个非常常用的方法&#xff1a;to()方法。我们通常使用它来进行GPU和CPU的类型转换&#xff0c;但其实也可以用来进行torch的dtype转换。常见方法&#xff1a;tensor.to(‘cuda:0)先看官网介绍&#xff1a;**Per…

Oracle 时区(TimeZone )-- DST

Daylight Savings Time (DST) 指 定一个时区的时候&#xff0c;可以使用数字(-05:00)&#xff0c;缩写(EST)或者地区名称(US/Eastern)。 在多数情况下&#xff0c;它们的效果是一样的。但是在DST的处理过 程中&#xff0c;如果使用地区名称来指定时区&#xff0c;ORACLE会自动进…

centos7升级openssh

注意&#xff1a; openssl版本(openssl版本要大于1.0.1&#xff0c;zlib版本要大于1.1.4) 一、安装依赖包 yum -y install gcc make perl # zlib zlib-devel yum install -y gcc openssl-devel pam-devel rpm-buildyum install telnet-ser…

java 复制对象_Java程序员必备:序列化全方位解析

前言 相信大家日常开发中&#xff0c;经常看到Java对象“implements Serializable”。那么&#xff0c;它到底有什么用呢&#xff1f;本文从以下几个角度来解析序列这一块知识点~什么是Java序列化&#xff1f;为什么需要序列化&#xff1f;序列化用途Java序列化常用API序列化的…

[html] history和hash两种路由方式的最大区别是什么?

[html] history和hash两种路由方式的最大区别是什么&#xff1f; hash 只在当前URL内刷新&#xff0c;history支持多个URL个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端…

decimal类型对象里面定义什么类型_奥斯塔罗 单身开启桃花雷达 现阶段的我适合什么类型的对象?...

相信单身朋友总好奇下一位对象是否出现了&#xff1f;或是这么多人我该如何察觉下一位对象呢&#xff1f;如果单身的你正寻找对象中那就跟奥斯老师一起来看看下一位对象的个性与特征吧&#xff01;&#xff1c;&#xff1c;直觉选一张牌&#xff1e;>牌l选择到这组牌的朋友&…

Centos中查找文件、目录、内容

1、查找文件 find / -name filename2、查找文件夹&#xff08;目录&#xff09; find / -name path -type d3、查找内容 find . | xargs grep -ri content3.1、只显示文件名称 find . | xargs grep -ril content 只显示文件名称转载于:https://www.cnblogs.com/xiaohaojs/p/114…

[html] 在网格布局中都有哪些概念呢?比如:网格线

[html] 在网格布局中都有哪些概念呢&#xff1f;比如&#xff1a;网格线 容器&#xff1a;采用网格布局的区域项目&#xff1a;容器内部采用网格定位的子元素行&#xff1a;容器里面的水平区域列&#xff1a;容器里面的垂直区域单元格&#xff1a;行和列的交叉区域网格线&#…

win7系统怎么拷贝到u盘_Win7系统电脑无法识别U盘启动盘怎么办?

U盘想必大家不会陌生&#xff0c;通常会用来存储一些资料便于移动办公&#xff0c;有些小伙伴也会将其变更成U盘启动盘&#xff0c;帮助电脑重装系统。但是有用户反馈U盘插入电脑后无法识别启动&#xff0c;这要怎么办呢&#xff1f;其实很简单&#xff0c;下面小编就给大家带来…

GStreamer基础教程07 - 播放速率控制

摘要 在常见的媒体播放器中&#xff0c;通常可以看到快进&#xff0c;快退&#xff0c;慢放等功能&#xff0c;这部分功能被称为“特技模式&#xff08;Trick Mode&#xff09;”&#xff0c;这些模式有个共同点&#xff1a;都通过修改播放的速率来达到相应的目的。 本文将介绍…

python老鼠书名字_芜湖学习python公司推荐

芜湖学习python公司推荐苏州翔锐信息科技有限公司&#xff0c;成立于2011年&#xff0c;是一家人工智能教育公司&#xff0c;目前团队规模200人&#xff0c;覆盖用户已超600万。我们致力于借助科技的技术力量&#xff0c;以认知科学作基础&#xff0c;研究人的学习行为和学习过…

数据库日志

很多时候需要追踪记录的变更情况&#xff0c;AX里有数据库日志来完成这件事情&#xff0c;操作路径为:系统管理->设置->数据库日志.如果按照向导添加后没看到相应的记录&#xff0c;可以尝试如下方法&#xff0c;选中生命科学电子签名。系统管理->设置->系统->配…

[html] 字体图标加载出来成了小方块,是什么原因呢?如何解决?

[html] 字体图标加载出来成了小方块&#xff0c;是什么原因呢&#xff1f;如何解决&#xff1f; css样式没有引用吧个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题…

Nginx的应用之安装配置

一、Nginx简述 Nginx是一个开源且高性能、可靠的Http Web服务、代理服务。 开源: 直接获取源代码 高性能: 支持海量并发 可靠: 服务稳定 我们为什么选择 Nginx服务 Nginx非常轻量 功能模块少 (源代码仅保留http与核心模块代码,其余不够核心代码会作为插件来安装) 代码模块化 (易…