当前位置:

首页 > 编程开发 > Python实现从PPT提取图片和文本

Python实现从PPT提取图片和文本

利用Python可高效提取PowerPoint中的图片和文本。通过Spire.Presentation或python-pptx库,加载PPT文件后遍历幻灯片,提取所有图片保存为PNG格式,同时从文本框、表格、图表中抓取文字并存入文件。需注意释放资源、路径正确及UTF-8编码,以兼容中文。

在日常办公和数据处理中,从PowerPoint演示文稿中提取素材,比如图片和文本内容,是一件频率极高的事情。手动复制粘贴不仅效率低下,还容易出错。用Python来处理这个任务,其实比想象中要简单得多。

Python实现从PPT提取图片和文本

准备工作

先把依赖库装上。这里用到的是Spire.Presentation for Python,用pip就能直接安装:

pip install Spire.Presentation

搞定之后,就可以动手写代码了。

从 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.Sa ve(ImageName)

ppt.Dispose()

代码解析:

  • Presentation():创建一份PPT文档对象。
  • LoadFromFile():加载你要处理的文件。
  • ppt.Images:拿到文档里所有的图片集合。
  • image.Image.Sa ve():将图片保存为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,每个段落独立一行。

注意事项

资源释放:用完后务必调用 Dispose() 清理资源,别让内存泄漏给你添麻烦。

文件路径:确保PPT路径正确,保存目录最好提前创建好,或者让代码自动生成。

文本编码:写入文件时用 utf-8 编码,这样中文和其他非英文字符都能正常显示。

图片格式:Sa ve() 默认存成 PNG。如果想要其他格式,可以去翻翻官方文档。

形状类型:上面的文本提取只处理了 IAutoShape。如果文字在表格、图表等其他形状里,需要额外处理。

方法补充

除了 Spire.Presentation,还有一个更轻量的选择——python-pptx。它专攻 Office Open XML 格式(.pptx),解析起来非常高效。

1. 安装依赖

pip install python-pptx pillow
  • python-pptx:用于解析PPTX文件,提取文本框、表格、形状中的文本以及图片对象。
  • Pillow:用来处理提取出的图片并保存到文件。

2. 功能实现

下面的代码会完成这些工作:

  • 打开PPTX文件;
  • 遍历每一张幻灯片;
  • 提取所有形状中的文本(标题、正文、表格单元格、文本框等);
  • 提取所有图片并保存为PNG格式。
import os
from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE_TYPE
from PIL import Image
import io

def extract_text_and_images(pptx_path, output_dir="extracted"):
    """
    从 PPTX 文件中提取所有文本和图片
    :param pptx_path: PPTX 文件路径
    :param output_dir: 输出目录(文本文件和图片文件夹)
    """
    # 创建输出目录
    os.makedirs(output_dir, exist_ok=True)
    img_dir = os.path.join(output_dir, "images")
    os.makedirs(img_dir, exist_ok=True)

    # 加载 PPT
    prs = Presentation(pptx_path)

    # 用于保存所有文本的列表
    all_text = []

    # 遍历每一张幻灯片
    for slide_idx, slide in enumerate(prs.slides, start=1):
        slide_text = []
        slide_text.append(f"--- 幻灯片 {slide_idx} ---")

        # 遍历幻灯片中的所有形状
        for shape in slide.shapes:
            # --- 提取文本 ---
            # 1. 文本框或自选图形中的文本
            if shape.has_text_frame:
                for paragraph in shape.text_frame.paragraphs:
                    for run in paragraph.runs:
                        if run.text.strip():
                            slide_text.append(run.text)

            # 2. 表格中的文本
            if shape.has_table:
                table = shape.table
                for row in table.rows:
                    row_text = []
                    for cell in row.cells:
                        if cell.text.strip():
                            row_text.append(cell.text.strip())
                    if row_text:
                        slide_text.append(" | ".join(row_text))

            # 3. 图表中的文本(简单提取标题)
            if shape.has_chart:
                chart = shape.chart
                if chart.has_title:
                    title = chart.chart_title.text_frame.text
                    if title.strip():
                        slide_text.append(f"图表标题: {title}")

            # --- 提取图片 ---
            if shape.shape_type == MSO_SHAPE_TYPE.PICTURE:
                # 获取图片的二进制数据
                image_stream = shape.image.blob
                # 生成图片文件名
                img_filename = f"slide_{slide_idx}_img_{shape.shape_id}.png"
                img_path = os.path.join(img_dir, img_filename)
                # 使用 Pillow 保存图片
                img = Image.open(io.BytesIO(image_stream))
                img.sa ve(img_path)
                slide_text.append(f"[图片已保存: {img_path}]")

        # 将当前幻灯片的文本加入总文本
        all_text.extend(slide_text)
        all_text.append("")  # 空行分隔

    # 保存所有文本到文件
    txt_path = os.path.join(output_dir, "extracted_text.txt")
    with open(txt_path, "w", encoding="utf-8") as f:
        f.write("\n".join(all_text))

    print(f"提取完成!")
    print(f"文本保存至: {txt_path}")
    print(f"图片保存至: {img_dir}")

# 使用示例
if __name__ == "__main__":
    extract_text_and_images("example.pptx", output_dir="my_extraction")

3. 关键点说明

功能实现方式
文本提取检查 shape.has_text_frame、shape.has_table、shape.has_chart 等属性,提取其中的文字内容。
图片提取判断 shape.shape_type == MSO_SHAPE_TYPE.PICTURE,然后通过 shape.image.blob 获取原始字节流,再用 Pillow 保存。
输出组织文本按幻灯片顺序写入一个 .txt 文件;图片单独保存在 images 子目录下,文件名包含所在幻灯片索引和形状 ID。

总结

借助 Spire.Presentation for Python,十几行代码就能搞定PPT中图片和文本的批量提取。这个库功能扎实,上手轻松,非常适合自动化办公场景。希望这篇文章能帮你省下那些重复劳动的时间。

如果还有更多PPT自动化的需求,比如创建、修改内容,甚至加图表,Spire.Presentation 还有不少能力等着你去发掘。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
编程开发 Python
相关文章 更多
codex安装windows教程桌面版完整安装步骤指南
codex安装windows教程桌面版完整安装步骤指南

详解如何在 Windows 电脑上通过 Microsoft Store 安装 Codex 桌面应用,包括启动登录、切换 Codex 模式、关联本地代码项目及终端环境配置的界面操作指引。

github配置ssh key windows
github配置ssh key windows

本文详解如何在Windows环境中使用PowerShell生成SSH密钥对,配置ssh-agent自动加载私钥,并将公钥安全添加至GitHub账户,最后通过git remote set-url切换为SSH地址,解决每次操作需输入账号密码的问题。

backdrop和background区别
backdrop和background区别

深入解析backdrop与background在网页开发及视觉设计中的区别。通过CSS代码示例,展示如何正确使用background设置元素背景,以及利用backdrop-filter创建弹窗遮罩模糊效果,避免概念混用。

windsurf ide download Windows版安装教程
windsurf ide download Windows版安装教程

详解 Windsurf IDE 在 Windows 系统的下载来源、安装步骤及首次启动界面。指导用户如何导入编辑器设置、打开项目文件夹及使用终端与 AI 功能,适合初次接触该工具的开发者阅读。

ServBay安装配置详细教程与操作指南
ServBay安装配置详细教程与操作指南

新手入门 ServBay 本地开发环境,详解安装包下载、Dashboard 状态监控、Packages 组件安装、Services 服务控制及 Websites 项目配置。掌握 .servbay.config 版本管理与日志排查技巧,快速搭建稳定的 PHP、Node.js 等多语言开发环境。

codekit环境配置指南从安装到环境搭建完整教程
codekit环境配置指南从安装到环境搭建完整教程

详解 CodeKit 在 macOS 下的安装步骤、项目导入方法、Sass与JavaScript编译设置及浏览器自动刷新功能,助您快速搭建高效的前端开发环境。

codex安装windows 命令行完整操作教程
codex安装windows 命令行完整操作教程

详解Windows环境下安装OpenAI Codex CLI的步骤,包括WSL环境检查、Node.js/npm配置、npm全局安装命令及首次启动验证,适合开发者快速上手。

NativeRest环境配置要求与完整操作教程
NativeRest环境配置要求与完整操作教程

学习如何配置 NativeRest REST API 客户端。涵盖 Windows/macOS/Linux 安装后的工作区创建、环境变量管理、请求编辑及响应查看步骤,帮助开发者快速完成基础环境搭建与连通性测试。

CSS设置透明度的注意事项有哪些?opacity属性详解
CSS设置透明度的注意事项有哪些?opacity属性详解

深入解析CSS中设置透明度的核心属性opacity,剖析子元素继承、事件穿透、层叠上下文等关键注意事项,并提供与rgba、hsla的实用选型对比。

flutter页面传值到后台的方法及示例代码
flutter页面传值到后台的方法及示例代码

flutter页面传值到后台的完整实现方法及示例代码,帮助读者快速掌握相关技术要点。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
WPS Office macOS版
WPS Office macOS版
macOS

WPS Office是一款面向macOS用户的综合办公套件,将文字处理、电子表格、演示文稿、PDF工具、模板与云协作整合在同一应用中。它兼容常见Microsoft Office格式,支持Intel及Apple芯片Mac,基础功能可免费使用,

Shapr3D macOS版
Shapr3D macOS版
Mac

Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。

REAPER macOS版
REAPER macOS版
Mac

REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。

WINDOWS 更多
AutoCAD Windows版
AutoCAD Windows版
Windows

AutoCAD 是 Autodesk 推出的专业计算机辅助设计软件,Windows 版支持精确二维绘图、三维实体与曲面建模、图纸标注、布局发布和任务自动化,并包含多套行业专业化工具组合,适用于建筑、机械、电气、工程建设及制造设计人员。

SketchUp Pro Windows版
SketchUp Pro Windows版
Windows

SketchUp Pro 是面向建筑、室内、景观、施工和产品设计等专业场景的三维建模工具,提供桌面建模、LayOut 二维文档、模型资源库、扩展程序及云端协作能力。其操作逻辑直观,适合从概念推敲、空间规划到图纸表达和方案汇报的完整工作流程。

AutoCAD LT Windows版
AutoCAD LT Windows版
Windows

AutoCAD LT 是 Autodesk 推出的专业二维 CAD 软件,适合建筑师、工程师、施工人员和设计师完成精确绘图、标注及文档编制。它支持 DWG 工作流、智能块、图形比较、计数、表格和 AutoLISP 自动化,