【python自动化】读取ppt内全部文本和图片信息并导出markdown文档

本文介绍了如何使用Python库读取PowerPoint(PPT)文件中的所有文本和图片,然后将这些信息导出为Markdown文档。通过遍历PPT的每一页和每个形状,程序会识别文本框并保存文本,同时检测图片并将其保存到本地文件夹,最后将图片路径转换为Markdown格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步,导入需要使用的库并设置待读取ppt的存储路径

from pptx import Presentation
import os
import pptx

filepath = "Mortality 6 2021.pptx"
file_name = filepath[:-5]
# 实例化ppt对象
prs = Presentation(filepath) #PPT文件路径

第二步:

创建result列表。(最后我们会将全部信息存储到result列表中,并写入一个txt文档。)

读取ppt 中的内容。

ppt这个库的逻辑是逐页(page)读取每个形状(shape)

我们的程序是首先判断遇到的形状是否是文本框,如果是文本框的话,直接将全部文本信息写入results。

如果不是文本框的话再判断这个形状是不是图片对象。如果是的话,新建一个文件夹,将这个图片存储到这个文件夹中。最后将扒到本地的图片的存储路径标准化为markdown格式写入results内。

results = []
for slide in prs.slides:
    for shape in slide.shapes:
        if shape.has_text_frame:
            for paragraph in shape.text_frame.paragraphs:
                part = []
                for run in paragraph.runs:
                    part.append(run.text)
                results.append(''.join(part))
        
### 将PPT转换为Markdown的方法或工具 目前市面上存在多种方法工具可以帮助用户实现从PPTMarkdown的转换。以下是几种可能的选择: #### 工具推荐 1. **Moffee** Moffee 是一款专注于将 Markdown 轻松转换为高质量幻灯片的开源工具[^2]。虽然其主要功能是从 Markdown 创建 PPT,但它也提供了一种反向操作的可能性——即先手动提取 PPT文本内容保存为纯文本文件,随后按照特定格式编辑成 Markdown 文件。这种方式适合熟悉 Markdown 语法的用户。 2. **乐途 Markdown 转换工具 V3.0** 这款多功能软件支持双向转换,既可以从其他格式(如 PDF、Word)转为 Markdown,也可以反过来执行类似的逆过程[^3]。尽管官方文档未明确提及直接处理 PowerPoint 文件的能力,但由于它兼容导出至 `.pptx` 格式的特性,推测应该可以通过某些中间步骤间接达成目的。例如,先把现有的演示文稿另存为 HTML 或者图片序列后再进一步加工成为标准 MD 结构。 3. **第三方在线服务与脚本** 如果上述两款桌面应用程序无法完全满足需求,则还可以考虑利用网络资源或者编写自定义 Python/Ruby 等编程语言的小程序来自动化这一繁琐的任务。比如借助 `pypandoc`, `python-pptx` 库配合 Pandoc 引擎完成批量迁移工作;又或者是探索专门针对 Office Suite 集成开发接口(APIs),从而调用 Microsoft Graph RESTful Web Services 实现更深层次定制化解决方案。 #### 示例代码片段 (Python) 下面展示了一个简单的例子说明如何读取 ppt 将其基本信息写入 markdown 中: ```python from pptx import Presentation def ppt_to_markdown(presentation_path, output_file="output.md"): prs = Presentation(presentation_path) with open(output_file, 'w', encoding='utf-8') as f: slide_count = 1 for slide in prs.slides: shapes = [shape.text for shape in slide.shapes if hasattr(shape, "text")] title = "" content = [] if len(shapes) >= 1 and shapes[0]: title = shapes.pop(0).strip() contents = "\n\n".join([item.strip() for item in shapes]) # Write to file f.write(f"# Slide {slide_count}: {title}\n\n{contents}\n---\n") slide_count += 1 if __name__ == "__main__": input_ppt = r"C:\path\to\your.pptx" ppt_to_markdown(input_ppt) ``` 此段落中的所有信息均基于已知参考资料进行了整理分析得出结论[^1].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值