Python提取PDF中的图片

article/2025/4/23 22:11:37

 ⚡插播一条老家自产的糖心苹果,多个品种,欢迎选购!有问题随时私信我⚡:

🍎🍎来自雪域高原的馈赠——海拔2000米的大凉山高原生态糖心苹果🍎🍎https://blog.csdn.net/qq_15969343/article/details/126107252


# 2018/08/16更新:

fitz库是pymupdf中的一个模块,操作PDF非常舒服,只需要pip安装即可:

pip install pymupdf

Python提取word中的图片(需要的自取):

Python提取Word中的图片

最近项目需要把word、PDF中的图片专门提取出来保存到另外的文件夹,最终成功实现;

最近项目需要把word、PDF中的图片专门提取出来保存到另外的文件夹,最终成功实现;

最近项目需要把word、PDF中的图片专门提取出来保存到另外的文件夹,最终成功实现;

重要的事情说三遍,详细步骤记录如下:
 


Python提取PDF中的图片

1.导入相关库

2.具体实现

2.1.使用正则表达式查找PDF中的图片

2.2.打印PDF的相关信息

2.3.遍历PDF中的对象,遇到是图像才进行下一步,不然就continue

2.4.将图像存为png格式

2.5.输入pdf路径,即可运行

3.结果预览

3.1.程序结果

3.2.原本的pdf

3.3.提取出来的图片


完整程序获取:

        1.百度网盘下载我提供的工具:Python提取PDF中的图片

        链接:https://pan.baidu.com/s/1Ha6W4U31kPOTufXGh5A31Q?pwd=skfx 提取码:skfx,下载后打开“微信支付.png”使用微信扫码支付:

       获取压缩包密码:

               付款后微信留言购买的资源名称(上方橙色文字),博主会微信回复你解压密码(推荐,不需要加好友):

                         →  → 

               

1.导入相关库

import fitz
import time
import re
import os

2.具体实现

为了方便和其他模块组合,我直接写了个函数完成这个功能,实现如下:

2.1.使用正则表达式查找PDF中的图片

def pdf2pic(path, pic_path):'''# 从pdf中提取图片:param path: pdf的路径:param pic_path: 图片保存的路径:return:'''t0 = time.clock()# 使用正则表达式来查找图片checkXO = r"/Type(?= */XObject)" checkIM = r"/Subtype(?= */Image)"  

2.2.打印PDF的相关信息

    # 打开pdfdoc = fitz.open(path)# 图片计数imgcount = 0lenXREF = doc._getXrefLength()# 打印PDF的信息print("文件名:{}, 页数: {}, 对象: {}".format(path, len(doc), lenXREF - 1))

2.3.遍历PDF中的对象,遇到是图像才进行下一步,不然就continue

并且我们将文件的名字命名为word所在的路径

    # 遍历每一个对象for i in range(1, lenXREF):# 定义对象字符串text = doc.getObjectString(i)isXObject = re.search(checkXO, text)# 使用正则表达式查看是否是图片isImage = re.search(checkIM, text)# 如果不是对象也不是图片,则continueif not isXObject or not isImage:continueimgcount += 1# 根据索引生成图像pix = fitz.Pixmap(doc, i)# 根据pdf的路径生成图片的名称new_name = path.replace('\\', '_') + "_img{}.png".format(imgcount)new_name = new_name.replace(':', '')

2.4.将图像存为png格式

2.5.输入pdf路径,即可运行

if __name__=='__main__':# pdf路径path = r'E:\dogcat\提取图片\计算机视觉算法工程师.pdf'pic_path = r'E:\dogcat\提取图片\测试'# 创建保存图片的文件夹if os.path.exists(pic_path):print("文件夹已存在,请重新创建新文件夹!")raise SystemExitelse:os.mkdir(pic_path)m = pdf2pic(path, pic_path)

3.结果预览

3.1.程序结果

3.2.原本的pdf

3.3.提取出来的图片

都看到这里了,还不赶紧点赞评论收藏走一波? 


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

相关文章

图片怎么转换成PDF,这三个方法轻松搞定!

图片转PDF是指将图片文件转换为PDF文件的过程。PDF(Portable Document Format)是一种文件格式,能够保存文本、图像、表格等多种元素。PDF文件具有跨平台性、可打印性和可搜索性等优点,因此被广泛应用在文档分享、文档存储和文档打…

图片转为pdf怎么弄?发送图片安全高效的格式

图片转为pdf怎么弄?pdf文档作为当下最火的一种文档格式之一,我们在日常生活中会经常使用到它。这种格式的文件保密性高,不易被修改。而将图片转换为pdf格式,不仅方便传输图片,而且还能最大程度保证图片的颜色不被改变。…

如何把图片转换成PDF?4种简单快捷的方法,一键将图片转PDF

分享4种图片转PDF的方法,转换速度快,而且能够保持图片画质清晰,不管是单个图片转换还是多个图片转换,都能满足你! 一、单张图片转PDF 1、照片查看器 直接使用Win10中自带的图片查看器,就能将图片转换为P…

Pycharm远程开发教程

Pycharm远程开发教程 最近项目中使用到了Pycharm的远程开发,记录一下具体的使用方式,本文涉及到的操作均为Pycharm专业版(环境为Win10和Ubuntu16),社区版功能没有这么丰富,使用学生邮箱(.edu后缀)注册Jetbr…

CSS+HTML+JS----开发简单个人网站

今天闲着没事花了几个小时写了个个人网站;在盒子布局上花了点时间。 个人网站共六个静态界面,每个界面都有隐藏的音乐,自动播放。 个人网站分为三个部分,登录界面,主界面,以及分界面。 登陆界面主要核心…

微信机器人开发,个人微信开发

由于自身在机器人方面滚爬多年,现在收藏几个宝藏机器人 推荐一下自己常用的机器人: 不得不吹爆这家伙,适合有技术开发的公司,可以自主开发所需要的功能!十分齐全

个人博客开发流程

成品:见公告》个人博客站点 1:列出博客大纲:用来干什么;为什么要做;怎么做; 2:列出博客的需求点 3:根据需求点整理出对应的技术文档 4:用workbench画出数据字典 5&#x…

微信小程序个人中心页面开发

目录 微信小程序创建项目配置底部导航栏 微信小程序滚动播放内容 微信小程序功能中心模块开发 微信小程序个人中心页面开发 微信小程序获取电话号码 微信小程序显示列表数据 微信小程序显示分页列表 微信小程序添加插屏广告 微信小程序添加激励式广告 最终效果可扫码查看 遇…

PHP简单实现个人网站

一、PHP简单实现个人网站 使用的技术: htmlcssjsjQueryphptable响应式布局 项目目录结构: 二、项目运行结果 1、首页 2、个人文章 3、喜欢的动画 4、喜欢的音乐 5、实现视频播放 三、项目总结与下载链接 本个人网站纯属个人开发,没有用到…

如何开发一个系统

文章目录 前言一、流程二、需求分析1、调研2、画图 三、系统设计1、架构2、模块设计3、画图 四、系统开发1、开发2、协作3、测试 总结体会 前言 作为一名大二学生,参加校内比赛做了一个绩效管理系统,所以写一下如何开发一个系统。 一、流程 制作一个系…

个人微信机器人开发

目前大多数公司中的消息通知使用邮件、短信、钉钉、企业微信等等,而微信或者QQ这种使用量较大的工具,通知和管理机制并不完善。特别是很多利用微信来进行客户管理沟通的人,例如我,只好借助微信机器人来实现通知和管理功能。 本篇…

手把手教你从零基础开始搭建个人网站

曾有不少人问过我怎么搭建自己的博客。其实搭建个人博客的方式有很多,有使用Git Page的,有使用一些博客平台的,也有自己购买网站空间或服务器搭建的,更有大神索性自己开发一套博客程序来用的。本文所介绍的方法全部基于Linux系统服…

手把手从零到有的个人网站开发

前言 很多人都想有一个自己的网站。那么,刚好Romki最近打算开始创建一个自己的个人网站。 就开始和我一起从零开始吧! 一、整个云服务器吧 Romki 这里买的是腾讯的云服务器,具体购买什么鸭子的服务器,如果大家强烈需要&#xff0…

【个人网站开发 · 记录三】制定开发方案阶段 —— 技术角度分析如何去做一个个人网站

前言 当下的自媒体时代,体现在一个爱折腾的程序猿身上,那么最好的方式莫过于 —— 搭建自己的个人网站。网站上可以有自己的个人介绍,技术博客,项目总结,生活分享等等。简直是COOL !(面试神器有…

【个人网站开发 · 记录二】UI设计阶段 —— 设计角度分析如何去做一个个人网站

前言 当下的自媒体时代,体现在一个爱折腾的程序猿身上,那么最好的方式莫过于 —— 搭建自己的个人网站。网站上可以有自己的个人介绍,技术博客,项目总结,生活分享等等。简直是COOL !(面试神器有…

个人网站开发——全栈项目开发日记

文章目录 第一种部署方式(前端打包到后端)打包前端后端 第二种部署方式(Nginx代理-推荐)nginx代理配置访问路径端口后端端口 服务器运行传到服务器在服务器后台运行 功能实现记录axios请求使后端响应数据对访问者ip获取对访问者ip…

c语言:输入字符串,并判断字符串的长度

c语言中表示输入数据的类型,其格式符和意义下表所示。 格式 字符意义 d 输入十进制整数 o 输入八进制整数 x 输入十六进制整数 u 输入无符号十进制整数 f或e 输入实型数(用小数形式或指数形式) c 输入单个字符 s 输入字符串 转义字符 转义字符是一种特殊的字符常量。…

C语言:字符数组的输入输出

目录 用printf输出 用scanf输入 用gets输入 用puts输出 用printf输出 输出方法1&#xff1a;printf 逐个字符输出。 void main(void){ char c[ ] "I am happy"; int i; for(i 0; i < 10; i){ printf("%c", c[i]); } pri…

c语言---字符输入

1 getchar() getchar接受一个字符 可输入任何字符 结束标志由自己决定,需在后面手动补全\0 输入 &#xff1a;abcd d 打印&#xff1a;6 2 fgets() fgets(); 函数原型 char *fgets(char *str, int n, FILE *stream) 输入读取&#…

C语言学习(十一)之字符输入/输出

文章目录 一、单字符I/O&#xff1a;getchar()和putchar()二、缓冲区2.1 什么是缓冲区2.2 为什么需要缓冲区2.3 缓冲区分类2.3.1 完全缓冲I/O2.3.2 行缓冲I/O 三、结束键盘输入3.1 文件、流和键盘输入3.2 文件结尾 四、重定向和文件4.1 重定向输入4.2 重定向输出4.3 组合重定向…