高效提取 PDF 中的所有图片:一键批量导出,无损保存超实用!
在日常处理 PDF 文档时,我们经常会遇到需要提取 PDF 内图片的场景:整理文档中的图表、保存白皮书里的高清插图、提取报告中的数据配图、收集课件里的关键图片...... 手动截图不仅模糊、效率极低,还会丢失原图分辨率,有没有更高效、无损的解决方案?
今天给大家分享一个超实用的 PDF 图片批量提取方法,无需安装笨重的专业软件 ,一键即可提取 PDF 中所有页面的图片,原图无损导出、自动按页码分类、支持任意 PDF 格式,完美解决各类 PDF 图片提取需求!
一、适用场景全覆盖
这个方法能轻松应对绝大多数工作、学习中的 PDF 图片提取需求:
- 文档整理:提取 PDF 报告、白皮书、合同中的插图、图表、logo 等素材;
- 学习办公:导出课件、教材、论文里的高清图片,方便二次编辑使用;
- 素材收集:批量保存 PDF 画册、说明书、手册中的图片资源;
- 高效处理:几十页、上百页的 PDF,几秒内完成所有图片提取,告别手动操作。
二、核心优势:简单、高效、无损
相比截图、在线工具等传统方式,这个方案的优势非常突出:✅ 无损提取 :直接提取 PDF 内嵌的原始图片,分辨率 100% 保留,无压缩、无模糊;✅ 批量处理 :自动遍历 PDF 每一页,一次性提取所有图片,无需逐页操作;✅ 智能命名 :图片文件自动按「页码 + 序号」命名,清晰对应原 PDF 位置,方便查找;✅ 自动归档 :自动创建专属文件夹,所有提取的图片统一保存,整洁有序;✅ 格式兼容 :支持 PNG、JPG、JPEG 等所有常见图片格式,无需额外转换;✅ 轻量无依赖:本地运行,无需上传文件到第三方平台,保护文档隐私安全。
三、实现方式:极简高效,零基础可上手
整个实现基于轻量的 PDF 处理工具,核心逻辑简洁清晰,全程无需复杂配置:
- 环境准备:仅需安装一个轻量的 PDF 处理依赖库,占用空间极小,安装秒完成;
- 路径配置:只需指定需要处理的 PDF 文件路径,无需修改其他参数;
- 自动执行:运行后工具会自动打开 PDF,逐页扫描识别内嵌图片;
- 批量导出:自动提取每一张图片的原始数据,按规则命名并保存到指定文件夹;
- 结果反馈:实时显示提取进度,最终统计总图片数量,清晰直观。
整个过程无需编写复杂代码、无需理解专业原理,三步即可完成:准备环境→指定文件→执行导出,零基础用户也能轻松上手。
四、实际效果展示
- 运行后自动创建
pdf_images文件夹,所有图片规整存放; - 文件名格式:
page页码_img序号.格式,一眼就能找到对应页面的图片; - 无论 PDF 有多少页、多少张图片,都能快速完成提取,大文件也不卡顿;
- 导出的图片和 PDF 中原图完全一致,可直接用于编辑、打印、展示。
五、总结
这款 PDF 图片提取方案,完美解决了日常办公学习中批量、无损、高效提取 PDF 图片的痛点,摒弃了截图的模糊和在线工具的隐私风险,本地运行、自动处理、结果清晰。
无论是少量图片提取,还是大批量文档处理,都能轻松胜任,是提升工作学习效率的实用小工具,强烈推荐大家收藏使用!
实现代码:
#pip install pymupdf
import fitz
import os
# 创建保存图片的文件夹
if not os.path.exists("pdf_images"):
os.mkdir("pdf_images")
# 打开 PDF
pdf_path = "./txt/图平台白皮书.pdf"
pdf = fitz.open(pdf_path)
# 统计
total_images = 0
# 遍历每一页
for page_index in range(len(pdf)):
current_page = page_index + 1 # 真实页码(从1开始)
page = pdf[page_index]
image_list = page.get_images(full=True)
# 如果本页有图片,先输出提示
if image_list:
print(f"\n📄 第 {current_page} 页 找到 {len(image_list)} 张图片")
# 遍历当前页的所有图片
for img_index, img in enumerate(image_list, 1):
xref = img[0]
base_image = pdf.extract_image(xref)
image_bytes = base_image["image"]
image_ext = base_image["ext"]
# 保存图片(文件名自带页码)
image_path = f"pdf_images/page{current_page}_img{img_index}.{image_ext}"
with open(image_path, "wb") as f:
f.write(image_bytes)
# 输出每张图片的位置
print(f" ✅ 已保存:第 {current_page} 页 第 {img_index} 张图片 → {image_path}")
total_images += 1
print(f"\n🎉 提取完成!总共提取:{total_images} 张图片")
print(f"📁 所有图片保存在:pdf_images 文件夹")
结果输出:
📄 第 1 页 找到 1 张图片
✅ 已保存:第 1 页 第 1 张图片 → pdf_images/page1_img1.png
📄 第 4 页 找到 1 张图片
✅ 已保存:第 4 页 第 1 张图片 → pdf_images/page4_img1.jpeg
📄 第 6 页 找到 10 张图片
✅ 已保存:第 6 页 第 1 张图片 → pdf_images/page6_img1.jpeg
✅ 已保存:第 6 页 第 2 张图片 → pdf_images/page6_img2.jpeg
✅ 已保存:第 6 页 第 3 张图片 → pdf_images/page6_img3.jpeg
✅ 已保存:第 6 页 第 4 张图片 → pdf_images/page6_img4.jpeg
✅ 已保存:第 6 页 第 5 张图片 → pdf_images/page6_img5.jpeg
✅ 已保存:第 6 页 第 6 张图片 → pdf_images/page6_img6.jpeg
✅ 已保存:第 6 页 第 7 张图片 → pdf_images/page6_img7.jpeg
✅ 已保存:第 6 页 第 8 张图片 → pdf_images/page6_img8.jpeg
✅ 已保存:第 6 页 第 9 张图片 → pdf_images/page6_img9.jpeg
✅ 已保存:第 6 页 第 10 张图片 → pdf_images/page6_img10.jpeg
📄 第 7 页 找到 2 张图片
✅ 已保存:第 7 页 第 1 张图片 → pdf_images/page7_img1.png
✅ 已保存:第 7 页 第 2 张图片 → pdf_images/page7_img2.png
📄 第 8 页 找到 1 张图片
✅ 已保存:第 8 页 第 1 张图片 → pdf_images/page8_img1.jpeg
📄 第 10 页 找到 1 张图片
✅ 已保存:第 10 页 第 1 张图片 → pdf_images/page10_img1.jpeg
📄 第 13 页 找到 1 张图片
✅ 已保存:第 13 页 第 1 张图片 → pdf_images/page13_img1.jpeg
📄 第 14 页 找到 1 张图片
✅ 已保存:第 14 页 第 1 张图片 → pdf_images/page14_img1.jpeg
......
图片存储情况路径:
更多学习资料尽在 老虎网盘资源