展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > 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
相关文章 更多
精品专题 更多
装机必备

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

Windows

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

PDF教程

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

macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

IOS软件

正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

AI

正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

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

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

Shapr3D macOS版
Shapr3D macOS版

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

REAPER macOS版
REAPER macOS版

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

Ableton Live macOS版
Ableton Live macOS版

Ableton Live 是面向音乐制作人与现场表演者的数字音频工作站,提供编曲视图、独具特色的现场视图、音频录制、MIDI创作、实时变速、乐器及效果器。Mac版原生支持Apple芯片,并可连接音频接口、MIDI控制器和第三方插件。

Adobe After Effects macOS版
Adobe After Effects macOS版

Adobe After Effects 是面向动态图形、影视特效与视频合成的专业创作软件。它提供关键帧动画、遮罩抠像、运动跟踪、三维空间、文字动画和表达式等工具,并可与 Premiere Pro、Photoshop、Illustrator

Adobe Audition macOS版
Adobe Audition macOS版

Adobe Audition 是面向播客、影视后期、音乐制作及内容创作者的专业音频工作站,提供波形精修、多轨录制与混音、频谱编辑、降噪修复、响度匹配和效果处理工具,并可与 Adobe Premiere 协同完成视频声音制作。

Adobe Bridge macOS版
Adobe Bridge macOS版

Adobe Bridge 是面向摄影师、设计师及内容团队的免费数字资产管理工具,可集中预览照片、视频和 Adobe 项目文件,并利用评级、标签、关键词、元数据、筛选与收藏集完成分类检索。它还支持批量重命名、格式导出、相机导入及 Camera

Adobe Illustrator macOS版
Adobe Illustrator macOS版

Adobe Illustrator 是 Adobe 推出的专业矢量图形设计软件,适合在 Mac 上制作标志、图标、插画、包装、信息图及印刷版面。它以路径和锚点构建可无损缩放的图形,并提供钢笔、形状、文字、图像描摹、渐变、画板及生成式功能。

Adobe InDesign macOS版
Adobe InDesign macOS版

Adobe InDesign 是面向印刷品与数字出版物的专业版面设计软件,可在 Mac 上制作书籍、杂志、宣传册、海报、报告及交互式文档。它提供精细的文字样式、网格、母版、长文档管理和印前输出能力。

Adobe Lightroom Classic macOS版
Adobe Lightroom Classic macOS版

Adobe Lightroom Classic 是面向桌面摄影工作流的照片管理与后期处理软件,可将原始照片保存在本地硬盘,通过目录、关键词、评分和收藏夹高效整理图库,并提供 RAW 冲印、蒙版、镜头校正、批量同步及多格式导出等功能。

Adobe Media Encoder macOS版
Adobe Media Encoder macOS版

Adobe Media Encoder 是 Adobe 推出的专业音视频编码与转码工具,可通过队列、预设和监视文件夹批量完成格式转换、代理文件创建及多平台成片输出,并与 Premiere Pro、After Effects 等软件紧密协作。

Adobe Photoshop macOS版
Adobe Photoshop macOS版

Adobe Photoshop 是面向摄影师、设计师和内容创作者的专业图像处理软件,提供图层、蒙版、选区、修复、调色、文字排版、智能对象及生成式编辑等能力。Mac 版支持 Intel 与 Apple Silicon 处理器。

WINDOWS 更多
Autodesk Fusion Windows版
Autodesk Fusion Windows版

Autodesk Fusion 是面向产品设计与制造的云连接开发平台,在统一环境中整合三维 CAD、CAM、CAE、PCB、工程图、数据管理和团队协作功能,适合产品设计师、机械工程师、电子工程师及加工制造团队完成从概念建模、验证分析到生产交

Archicad Windows版
Archicad Windows版

Archicad 是 Graphisoft 面向建筑师、设计师、工程师及 BIM 团队开发的建筑信息模型平台。它把三维建筑建模、施工文档、数据管理、专业协调、实时协作和可视化集中在统一项目环境中,适合从概念方案到施工交付的完整建筑设计流程。

Vectorworks Architect Windows版
Vectorworks Architect Windows版

Vectorworks Architect 是面向建筑师、室内设计师和建筑顾问的综合设计与BIM平台,覆盖概念草图、二维制图、三维建模、施工文档、数据报表、可视化及开放式协作。它强调自由造型与数据化建筑对象并存,

Shapr3D Windows版
Shapr3D Windows版

Shapr3D 是一款基于 Siemens Parasolid 几何内核的专业三维CAD软件,可在 Windows 电脑和平板设备上完成草图绘制、实体建模、参数化修改、模型可视化及技术图纸制作。软件提供免费基础方案,

FreeCAD Windows版
FreeCAD Windows版

FreeCAD 是面向机械设计、产品开发、建筑建模和创客项目的免费开源参数化三维 CAD 工具。它可在 Windows 上完成约束草图、实体零件、装配、工程图、BIM、有限元分析及 CAM 等任务,

Twinmotion Windows版
Twinmotion Windows版

Twinmotion 是 Epic Games 推出的实时三维可视化工具,可导入常见 CAD、BIM 与三维模型,通过材质、环境、植被、灯光及动画资源快速构建场景,并输出图片、视频、全景图和交互演示。

BricsCAD Windows版
BricsCAD Windows版

BricsCAD 是以 DWG 为核心格式的专业 CAD 平台,可用于二维制图、三维建模、工程文档与设计协作。产品按 Lite、Pro、BIM、Mechanical 和 Ultimate 等层级提供不同工具,

Ableton Live Windows版
Ableton Live Windows版

Ableton Live 是面向音乐创作、录音、编曲、声音设计、混音与现场演出的数字音频工作站。它将适合即兴触发素材的 Session 视图与传统时间线编曲结合,并提供音频变速、MIDI工具、软件乐器、效果器和声音资源,

FL Studio Windows版
FL Studio Windows版

FL Studio 是 Image-Line 推出的数字音频工作站,面向音乐制作人、编曲者、歌手及声音设计人员。它将步进音序、钢琴卷帘、音频录制、剪辑、混音、自动化和插件宿主整合在统一环境中,并提供大量乐器、效果器、采样与预设。

Pro Tools Windows版
Pro Tools Windows版

Pro Tools 是 Avid 推出的专业数字音频工作站,提供多轨录音、音频剪辑、MIDI编曲、插件处理、自动化混音及影视声音制作能力。它适合音乐人、录音师、制作人和音频后期团队使用,并提供免费入门版、订阅方案及永久授权选择。

Adobe Audition Windows版
Adobe Audition Windows版

Adobe Audition 是面向播客、影视后期、广播与音乐制作的专业音频工作站,提供波形编辑、多轨混音、频谱分析、录音、降噪修复和效果处理等功能。Windows 版通过 Adobe Creative Cloud 安装和管理,

REAPER Windows版
REAPER Windows版

REAPER 是 Cockos 推出的数字音频工作站,适用于录音、MIDI 编曲、音频编辑、混音、母带制作及声音设计。软件安装包小巧,支持多轨录制、灵活路由、自动化、第三方插件和脚本扩展,并提供完整功能的 60 天免费评估期。