欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 使用Python开发PPT文本提取工具

使用Python开发PPT文本提取工具

2025/1/20 14:10:48 来源:https://blog.csdn.net/winniezhang/article/details/145223339  浏览:    关键词:使用Python开发PPT文本提取工具

在日常工作中,我们经常需要从PowerPoint文档中提取文本内容进行处理。本文将详细介绍如何使用Python开发一个带图形界面的PPT文本提取工具,该工具可以轻松地从PPTX文件中提取所有文本内容,并按页码显示。
C:\pythoncode\new\GetContentOFPPT.py

全部代码

import wx
import os
from pptx import Presentationclass PPTExtractFrame(wx.Frame):def __init__(self):super().__init__(parent=None, title='PPT文字提取工具', size=(800, 600))self.InitUI()def InitUI(self):# 创建面板panel = wx.Panel(self)# 创建垂直布局vbox = wx.BoxSizer(wx.VERTICAL)# 创建按钮self.select_btn = wx.Button(panel, label='选择PPT文件')self.select_btn.Bind(wx.EVT_BUTTON, self.OnSelect)vbox.Add(self.select_btn, 0, wx.ALL | wx.CENTER, 5)# 创建文本框self.memo = wx.TextCtrl(panel, style=wx.TE_MULTILINE | wx.TE_READONLY)vbox.Add(self.memo, 1, wx.ALL | wx.EXPAND, 5)panel.SetSizer(vbox)def OnSelect(self, event):# 创建文件选择对话框with wx.FileDialog(self, "选择PPTX文件", wildcard="PowerPoint files (*.pptx)|*.pptx",style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog:if fileDialog.ShowModal() == wx.ID_CANCEL:return# 获取选择的文件路径pathname = fileDialog.GetPath()try:self.ExtractText(pathname)except Exception as e:wx.MessageBox(f'错误:{str(e)}', '错误',wx.OK | wx.ICON_ERROR)def ExtractText(self, filepath):# 清空文本框self.memo.Clear()# 打开PPT文件prs = Presentation(filepath)# 遍历所有幻灯片for idx, slide in enumerate(prs.slides, 1):text_content = []# 提取当前幻灯片中的所有文本for shape in slide.shapes:if hasattr(shape, "text"):if shape.text.strip():  # 只添加非空文本text_content.append(shape.text.strip())# 如果该页有文本,则添加到memo中if text_content:page_text = f"第{idx}页内容:\n" + "\n".join(text_content) + "\n\n"self.memo.AppendText(page_text)def main():app = wx.App()frame = PPTExtractFrame()frame.Show()app.MainLoop()if __name__ == '__main__':main()

技术栈介绍

本项目使用了以下技术:

  1. wxPython - 用于创建图形用户界面
  2. python-pptx - 用于处理PowerPoint文档
  3. Python内置的os模块 - 用于文件路径处理

整体架构设计

程序采用面向对象的设计方法,主要包含以下组件:

  1. 主窗口类(PPTExtractFrame)
  2. 用户界面初始化方法(InitUI)
  3. 文件选择处理方法(OnSelect)
  4. 文本提取核心方法(ExtractText)

详细代码解析

1. 导入必要的模块

import wx
import os
from pptx import Presentation

这三个import语句导入了程序所需的核心模块:

  • wx:wxPython的主模块,提供GUI相关功能
  • os:处理文件路径
  • pptx.Presentation:用于读取和处理PPTX文件

2. 主窗口类的设计

class PPTExtractFrame(wx.Frame):def __init__(self):super().__init__(parent=None, title='PPT文字提取工具', size=(800, 600))self.InitUI()

这是程序的主窗口类,继承自wx.Frame。构造函数中:

  • 调用父类构造函数,设置窗口标题和大小
  • 调用InitUI方法初始化界面元素

3. 用户界面初始化

def InitUI(self):panel = wx.Panel(self)vbox = wx.BoxSizer(wx.VERTICAL)self.select_btn = wx.Button(panel, label='选择PPT文件')self.select_btn.Bind(wx.EVT_BUTTON, self.OnSelect)vbox.Add(self.select_btn, 0, wx.ALL | wx.CENTER, 5)self.memo = wx.TextCtrl(panel, style=wx.TE_MULTILINE | wx.TE_READONLY)vbox.Add(self.memo, 1, wx.ALL | wx.EXPAND, 5)panel.SetSizer(vbox)

InitUI方法创建了程序的界面布局:

  • 创建一个面板(Panel)作为主容器
  • 使用垂直布局管理器(BoxSizer)
  • 添加"选择PPT文件"按钮,并绑定点击事件
  • 添加多行文本控件用于显示提取的文本
  • 设置布局器到面板

4. 文件选择对话框实现

def OnSelect(self, event):with wx.FileDialog(self, "选择PPTX文件", wildcard="PowerPoint files (*.pptx)|*.pptx",style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog:if fileDialog.ShowModal() == wx.ID_CANCEL:returnpathname = fileDialog.GetPath()try:self.ExtractText(pathname)except Exception as e:wx.MessageBox(f'错误:{str(e)}', '错误',wx.OK | wx.ICON_ERROR)

OnSelect方法处理文件选择操作:

  • 创建文件选择对话框,限制文件类型为.pptx
  • 使用Python的with语句确保对话框资源正确释放
  • 获取选择的文件路径并调用提取方法
  • 使用try-except处理可能的错误

5. 核心文本提取功能

def ExtractText(self, filepath):self.memo.Clear()prs = Presentation(filepath)for idx, slide in enumerate(prs.slides, 1):text_content = []for shape in slide.shapes:if hasattr(shape, "text"):if shape.text.strip():text_content.append(shape.text.strip())if text_content:page_text = f"第{idx}页内容:\n" + "\n".join(text_content) + "\n\n"self.memo.AppendText(page_text)

ExtractText方法是程序的核心功能:

  • 清空现有文本显示
  • 使用python-pptx打开PPT文件
  • 遍历每一页幻灯片
  • 提取每个形状中的文本内容
  • 按页码组织并显示文本

运行结果

在这里插入图片描述
在这里插入图片描述

6. 程序入口

def main():app = wx.App()frame = PPTExtractFrame()frame.Show()app.MainLoop()if __name__ == '__main__':main()

程序入口部分:

  • 创建wx应用程序实例
  • 创建并显示主窗口
  • 启动事件循环

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com