python-langchain框架(3-7-提取pdf中的图片 )

一、适用场景全覆盖

这个方法能轻松应对绝大多数工作、学习中的 PDF 图片提取需求:

  1. 文档整理:提取 PDF 报告、白皮书、合同中的插图、图表、logo 等素材;
  2. 学习办公:导出课件、教材、论文里的高清图片,方便二次编辑使用;
  3. 素材收集:批量保存 PDF 画册、说明书、手册中的图片资源;
  4. 高效处理:几十页、上百页的 PDF,几秒内完成所有图片提取,告别手动操作。

二、核心优势:简单、高效、无损

相比截图、在线工具等传统方式,这个方案的优势非常突出:✅ 无损提取 :直接提取 PDF 内嵌的原始图片,分辨率 100% 保留,无压缩、无模糊;✅ 批量处理 :自动遍历 PDF 每一页,一次性提取所有图片,无需逐页操作;✅ 智能命名 :图片文件自动按「页码 + 序号」命名,清晰对应原 PDF 位置,方便查找;✅ 自动归档 :自动创建专属文件夹,所有提取的图片统一保存,整洁有序;✅ 格式兼容 :支持 PNG、JPG、JPEG 等所有常见图片格式,无需额外转换;✅ 轻量无依赖:本地运行,无需上传文件到第三方平台,保护文档隐私安全。

三、实现方式:极简高效,零基础可上手

整个实现基于轻量的 PDF 处理工具,核心逻辑简洁清晰,全程无需复杂配置:

  1. 环境准备:仅需安装一个轻量的 PDF 处理依赖库,占用空间极小,安装秒完成;
  2. 路径配置:只需指定需要处理的 PDF 文件路径,无需修改其他参数;
  3. 自动执行:运行后工具会自动打开 PDF,逐页扫描识别内嵌图片;
  4. 批量导出:自动提取每一张图片的原始数据,按规则命名并保存到指定文件夹;
  5. 结果反馈:实时显示提取进度,最终统计总图片数量,清晰直观。

整个过程无需编写复杂代码、无需理解专业原理,三步即可完成:准备环境→指定文件→执行导出,零基础用户也能轻松上手。

四、实际效果展示

  • 运行后自动创建pdf_images文件夹,所有图片规整存放;
  • 文件名格式:page页码_img序号.格式,一眼就能找到对应页面的图片;
  • 无论 PDF 有多少页、多少张图片,都能快速完成提取,大文件也不卡顿;
  • 导出的图片和 PDF 中原图完全一致,可直接用于编辑、打印、展示。

五、总结

这款 PDF 图片提取方案,完美解决了日常办公学习中批量、无损、高效提取 PDF 图片的痛点,摒弃了截图的模糊和在线工具的隐私风险,本地运行、自动处理、结果清晰。

无论是少量图片提取,还是大批量文档处理,都能轻松胜任,是提升工作学习效率的实用小工具,强烈推荐大家收藏使用!

实现代码:

|----------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #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

......

图片存储情况路径:

相关推荐
Ulyanov2 小时前
音视频分离与音频处理核心技术深度解析 从MP4到高品质音乐文件的完整技术实现
python·音视频
萝卜白菜。2 小时前
TongWeb8.0 JNDI缓存
开发语言·python·缓存
xiaoshuaishuai82 小时前
PyCharm性能调优
ide·python·pycharm
@atweiwei2 小时前
用 Rust 构建 LLM 应用的高性能框架
开发语言·后端·ai·rust·langchain·llm
&&Citrus2 小时前
【CPN 学习笔记(三)】—— Chap3 CPN ML 编程语言 上半部分 3.1 ~ 3.3
笔记·python·学习·cpn·petri网
Dream of maid2 小时前
Python(11) 进程与线程
开发语言·python
安迪小宝3 小时前
4.2 GIS × LangChain 的完整技术路线
langchain
财经资讯数据_灵砚智能3 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年4月7日
大数据·人工智能·python·信息可视化·语言模型·自然语言处理·ai编程
Yqlqlql3 小时前
# Python : Word 文档标注工具
python