Python: 从 PPT 提取图片和文本

在日常办公和数据处理中,我们经常需要从 PowerPoint 演示文稿中提取素材,比如图片和文本内容。手动复制粘贴不仅效率低,还容易出错。今天,我就来介绍如何使用 Python 轻松实现从 PPT 中提取图片和文本。

准备工作

首先,你需要安装 Spire.Presentation for Python。可以通过 pip 命令进行安装:

复制代码
pip install Spire.Presentation

安装完成后,就可以开始编写代码了。

从 PPT 中提取图片

很多时候,PPT 里的图片是我们需要的素材。下面的代码演示了如何批量提取 PPT 中的所有图片并保存到本地:

复制代码
from spire.presentation.common import *
from spire.presentation import *

# 创建 Presentation 实例
ppt = Presentation()

# 加载 PowerPoint 文档
ppt.LoadFromFile("sample.pptx")

# 遍历文档中的所有图片
for i, image in enumerate(ppt.Images):
    # 提取并保存图片
    ImageName = "ExtractImage/Images_" + str(i) + ".png"
    image.Image.Save(ImageName)

ppt.Dispose()

代码解析:

  • Presentation():创建 PPT 文档对象
  • LoadFromFile():加载需要处理的 PPT 文件
  • ppt.Images:获取文档中所有图片的集合
  • image.Image.Save():将图片保存为 PNG 格式

运行后,所有图片会按顺序保存到 ExtractImage 文件夹下,命名为 Images_0.png、Images_1.png 等。

从 PPT 中提取文本

除了图片,提取文本内容也是常见需求。下面的代码可以遍历每一张幻灯片,提取所有形状中的文字:

复制代码
from spire.presentation import *
from spire.presentation.common import *

# 创建 Presentation 对象
pres = Presentation()

# 加载 PowerPoint 演示文稿
pres.LoadFromFile("Sample.pptx")

text = []
# 遍历每一张幻灯片
for slide in pres.Slides:
    # 遍历每个形状
    for shape in slide.Shapes:
        # 判断形状是否为 IAutoShape 类型(可包含文本)
        if isinstance(shape, IAutoShape):
            # 提取形状中的文本
            for paragraph in shape.TextFrame.Paragraphs:
                text.append(paragraph.Text)

# 将提取的文本写入文件
with open("output/SlideText.txt", "w", encoding='utf-8') as f:
    for s in text:
        f.write(s + "\n")

pres.Dispose()

代码解析:

  • pres.Slides:获取所有幻灯片的集合
  • slide.Shapes:获取每张幻灯片中的所有形状
  • IAutoShape:代表可以包含文本的自动形状类型
  • shape.TextFrame.Paragraphs:获取形状中的段落集合
  • 最终将所有文本写入 SlideText.txt 文件,每行一个段落

注意事项

  1. 资源释放 :使用完 Presentation 对象后,务必调用 Dispose() 方法释放资源,避免内存泄漏。
  2. 文件路径 :确保 PPT 文件路径正确,保存图片和文本的目录需要提前创建或使用代码自动创建。
  3. 文本编码 :写入文本文件时使用 utf-8 编码,可以正确处理中文等非英文字符。
  4. 图片格式 :Save() 方法保存的图片默认为 PNG 格式,如需其他格式可以参考官方文档。
  5. 形状类型 :文本提取时只处理了 IAutoShape 类型,如果文本位于表格、图表等其他形状中,需要额外处理。

总结

通过 Spire.Presentation for Python,我们可以用十几行代码就完成 PPT 中图片和文本的批量提取工作。这个库功能强大且易于使用,非常适合自动化办公场景。希望这篇文章能帮助你提高工作效率!

如果你有更多关于 PPT 自动化处理的需求,比如创建 PPT、修改内容、添加图表等,Spire.Presentation 还提供了更多丰富的功能等待你去探索。

相关推荐
学测绘的小杨2 分钟前
CompassFusion:一个从 GNSS 到 GNSS/INS 组合导航的独立工程包
python
zzzzzz3107 小时前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐7 小时前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
兵慌码乱19 小时前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot20 小时前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海1 天前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱1 天前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
曲幽1 天前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
荣码1 天前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱2 天前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理