
PDF 文件中通常包含重要的图片信息,例如图表、流程图、扫描件等。对于开发者来说,掌握如何使用 Python 从 PDF 文件中提取图片,不仅能让图片内容得到复用(例如自动生成报告或制作演示文档),还可以将这些图片进一步应用于机器学习、图片识别(OCR)或文档分析等任务中。
本文将详细介绍如何使用Python和 Spire.PDF for Python 库从 PDF 文件中高效地提取图片。主要包括以下内容:
准备工作:安装与环境配置
在开始使用 Spire.PDF 提取图片之前,请确保你的开发环境已准备好。
安装 Python 环境
请确保计算机上已安装 Python。建议使用最新的稳定版本,以获得更好的兼容性与性能表现。
安装 Spire.PDF for Python
Spire.PDF 是一款功能强大的 PDF 操作库,支持创建、编辑、合并、签名、提取内容等多种操作。
安装该库最简单的方式是通过 pip 包管理器。打开命令提示符或终端,运行以下命令即可完成安装:
pip install Spire.PDF
使用 Python 从 PDF 中提取图片
Spire.PDF for Python 提供了 PdfImageHelper 类,用于从 PDF 文档中提取图片信息。通过简单的几行代码,即可从指定页面或整个文档中批量获取嵌入的所有图片。
示例 1:提取指定页面中的图片
以下示例展示如何从 PDF 文件的第一页中提取所有图片,并将它们保存到本地文件夹中。
from spire.pdf.common import *
from spire.pdf import *
# 创建 PdfDocument 实例
pdf = PdfDocument()
# 加载 PDF 文件
pdf.LoadFromFile("示例文件.pdf")
# 获取第一页
page = pdf.Pages[0]
# 创建 PdfImageHelper 实例
imageHelper = PdfImageHelper()
# 获取该页的图片信息列表
imageInfo = imageHelper.GetImagesInfo(page)
# 遍历所有图片并保存
for i in range(0, len(imageInfo)):
    imageInfo[i].Image.Save(f"输出/图片-{i}.png")
# 释放资源
pdf.Dispose()
代码说明:
- 加载 PDF 文件: 使用 LoadFromFile() 方法读取目标 PDF。
- 访问页面: 通过索引访问指定的 PDF 页面。
- **提取图片信息:**创建 PdfImageHelper 实例后,调用 GetImagesInfo() 方法获取该页的图片信息列表,返回 PdfImageInfo 对象集合。
- **保存图片文件:**遍历页面中检测到的所有图片,通过 PdfImageInfo[].Image.Save() 方法将其保存至本地。
输出结果:
程序会将 PDF 第一页中的所有图片提取出来,并按顺序保存为 图片-0.png、图片-1.png 等文件。

示例 2:提取整个 PDF 文件中的所有图片
如果希望一次性获取整个 PDF 文件中的所有图片,只需遍历文件的所有页面,并依次从每一页中提取图片。
from spire.pdf.common import *
from spire.pdf import *
# 创建 PdfDocument 实例
pdf = PdfDocument()
# 加载 PDF 文件
pdf.LoadFromFile("示例文件.pdf")
# 创建 PdfImageHelper 实例
imageHelper = PdfImageHelper()
# 遍历所有页面
index = 0
for i in range(0, pdf.Pages.Count):
    page = pdf.Pages[i]
    imageInfo = imageHelper.GetImagesInfo(page)
    for j in range(0, len(imageInfo)):
        imageInfo[j].Image.Save(f"输出/全文图片-{index}.png")
        index += 1
# 关闭文档
pdf.Close()
输出结果:
代码会自动遍历整个 PDF 文档,将每页中的所有图片依次保存为单独文件。这对于需要批量提取文档中图片内容的场景非常实用。

提取PDF图片时的格式选择
Spire.PDF 支持将提取的图片保存为多种常见的图片格式,如 PNG、JPG、BMP、TIFF 等。
你可以根据需要选择合适的保存格式,不同格式在用途上各有优劣:
| 格式 | 适用场景 | 特点说明 | 
|---|---|---|
| JPG/JPEG | 照片、扫描文档 | 占用空间小,但多次压缩可能导致质量下降 | 
| PNG | 图表、截图、网页图片 | 支持透明背景,画质高但体积较大 | 
| BMP | Windows 临时文件、图片编辑 | 几乎无压缩,体积较大,不适合网络传输 | 
| TIFF | 档案保存、打印、OCR 输入 | 支持多页,适合长期存档或文本识别 | 
| EMF | 矢量图编辑 | 可在 Illustrator、Inkscape 等软件中继续编辑 | 
如果你的目标是高质量图表或透明背景图片,建议选择 PNG;若是扫描件或照片类型的内容,可选 JPG 来平衡质量与体积。
常见问题解答
Q1:Spire.PDF for Python 是免费的吗?
A1: Spire.PDF 提供免费版和商业版两种。免费版可处理最多 10 页的 PDF 文件;若需要解除限制或用于商业项目,可该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。试用许可证。
Q2:可以只提取指定页码范围的图片吗?
A2:当然可以。只需指定要提取的页码索引即可。例如,以下代码可提取第 2 至第 5 页的图片(注意页码索引从 0 开始):
for i in range(1,5):page = pdf.Pages[i] imageInfo = imageHelper.GetImagesInfo(page) # 按前述方法保存图片 Q3:是否可以从提取的图片中识别文字?
A3:可以。对于扫描 PDF 文件,可在提取图片后,结合 Spire.OCR for Python库对图片执行 OCR 识别,从而提取文字内容。
详细步骤可参考教程:Python 从图片中提取文字。
总结
通过 Python 实现 PDF 图片提取,不仅能更高效地复用文件中的视觉内容,还能为数据分析、报告生成及 OCR 识别等自动化任务提供支持。借助 Spire.PDF for Python,开发者能够以简洁的代码快速完成单个页面或整个 PDF 文件中的图片提取,从而让 PDF 数据的利用更加灵活和智能。
此外,作为一个多功能的 PDF 文档处理库,Spire.PDF 不仅能提取图片,还能实现以下高级功能:
 



 
					



