最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python制作一個PPT文本提取工具

 更新時間:2025年01月19日 08:53:27   作者:winfredzhang  
這篇文章主要為大家詳細介紹了如何使用Python開發(fā)一個帶圖形界面的PPT文本提取工具,可以從PPTX文件中提取所有文本內(nèi)容,有需要的小伙伴可以了解下

在日常工作中,我們經(jīng)常需要從PowerPoint文檔中提取文本內(nèi)容進行處理。本文將詳細介紹如何使用Python開發(fā)一個帶圖形界面的PPT文本提取工具,該工具可以輕松地從PPTX文件中提取所有文本內(nèi)容,并按頁碼顯示。

全部代碼

import wx
import os
from pptx import Presentation

class PPTExtractFrame(wx.Frame):
    def __init__(self):
        super().__init__(parent=None, title='PPT文字提取工具', size=(800, 600))
        self.InitUI()
        
    def InitUI(self):
        # 創(chuàng)建面板
        panel = wx.Panel(self)
        
        # 創(chuàng)建垂直布局
        vbox = wx.BoxSizer(wx.VERTICAL)
        
        # 創(chuàng)建按鈕
        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)
        
        # 創(chuàng)建文本框
        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):
        # 創(chuàng)建文件選擇對話框
        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èi)容:\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()

技術(shù)棧介紹

本項目使用了以下技術(shù):

  • wxPython - 用于創(chuàng)建圖形用戶界面
  • python-pptx - 用于處理PowerPoint文檔
  • Python內(nèi)置的os模塊 - 用于文件路徑處理

整體架構(gòu)設(shè)計

程序采用面向?qū)ο蟮脑O(shè)計方法,主要包含以下組件:

  • 主窗口類(PPTExtractFrame)
  • 用戶界面初始化方法(InitUI)
  • 文件選擇處理方法(OnSelect)
  • 文本提取核心方法(ExtractText)

詳細代碼解析

1. 導(dǎo)入必要的模塊

import wx
import os
from pptx import Presentation

這三個import語句導(dǎo)入了程序所需的核心模塊:

  • wx:wxPython的主模塊,提供GUI相關(guān)功能
  • os:處理文件路徑
  • pptx.Presentation:用于讀取和處理PPTX文件

2. 主窗口類的設(shè)計

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

這是程序的主窗口類,繼承自wx.Frame。構(gòu)造函數(shù)中:

  • 調(diào)用父類構(gòu)造函數(shù),設(shè)置窗口標題和大小
  • 調(diào)用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方法創(chuàng)建了程序的界面布局:

  • 創(chuàng)建一個面板(Panel)作為主容器
  • 使用垂直布局管理器(BoxSizer)
  • 添加"選擇PPT文件"按鈕,并綁定點擊事件
  • 添加多行文本控件用于顯示提取的文本
  • 設(shè)置布局器到面板

4. 文件選擇對話框?qū)崿F(xiàn)

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)

OnSelect方法處理文件選擇操作:

  • 創(chuàng)建文件選擇對話框,限制文件類型為.pptx
  • 使用Python的with語句確保對話框資源正確釋放
  • 獲取選擇的文件路徑并調(diào)用提取方法
  • 使用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èi)容:\n" + "\n".join(text_content) + "\n\n"
            self.memo.AppendText(page_text)

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

  • 清空現(xiàn)有文本顯示
  • 使用python-pptx打開PPT文件
  • 遍歷每一頁幻燈片
  • 提取每個形狀中的文本內(nèi)容
  • 按頁碼組織并顯示文本

6. 程序入口

def main():
    app = wx.App()
    frame = PPTExtractFrame()
    frame.Show()
    app.MainLoop()

if __name__ == '__main__':
    main()

程序入口部分:

  • 創(chuàng)建wx應(yīng)用程序?qū)嵗?/li>
  • 創(chuàng)建并顯示主窗口
  • 啟動事件循環(huán)

 運行結(jié)果

到此這篇關(guān)于Python制作一個PPT文本提取工具的文章就介紹到這了,更多相關(guān)Python PPT文本提取內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 多線程超詳細到位總結(jié)

    Python 多線程超詳細到位總結(jié)

    線程在程序中是獨立的、并發(fā)的執(zhí)行流。與分隔的進程相比,進程中線程之間的隔離程度要小,它們共享內(nèi)存、文件句柄和其他進程應(yīng)有的狀態(tài)。線程的劃分尺度小于進程,使多線程程序的并發(fā)性高。進程在執(zhí)行過程中擁有獨立內(nèi)存單元,而多個線程共享內(nèi)存,從而提升程序運行效率
    2021-11-11
  • Python上下文管理器Content Manager

    Python上下文管理器Content Manager

    在Python中,我們會經(jīng)常聽到上下文管理器,那么上下文管理器到底是干什么的,本文就來介紹一下,感興趣的小伙伴們可以參考一下
    2021-06-06
  • python爬取音頻下載的示例代碼

    python爬取音頻下載的示例代碼

    這篇文章主要介紹了python爬取音頻下載的示例代碼,幫助大家更好的理解和學(xué)習(xí)python爬蟲,感興趣的朋友可以了解下
    2020-10-10
  • Python機器學(xué)習(xí)之基礎(chǔ)概述

    Python機器學(xué)習(xí)之基礎(chǔ)概述

    今天帶大家回顧python機器學(xué)習(xí)的相關(guān)知識,文中非常詳細的介紹了Python機器學(xué)習(xí)的基礎(chǔ)概述,算法分類及研究內(nèi)容,需要的朋友可以參考下
    2021-05-05
  • 利用Python制作本地Excel的查詢與生成的程序問題

    利用Python制作本地Excel的查詢與生成的程序問題

    最近遇到這樣一個項目需求制作一個程序有一個簡單的查詢?nèi)肟趯崿F(xiàn)Excel的查詢與生成,今天教大家利用Python制作本地Excel的查詢與生成的程序,感興趣的朋友跟隨小編一起看看吧
    2022-06-06
  • 訊飛webapi語音識別接口調(diào)用示例代碼(python)

    訊飛webapi語音識別接口調(diào)用示例代碼(python)

    這篇文章主要介紹了如何使用Python3調(diào)用訊飛WebAPI語音識別接口,重點解決了在處理語音識別結(jié)果時判斷是否為最后一幀的問題,通過運行代碼并總結(jié)經(jīng)驗,解決了常見的模塊和屬性錯誤,需要的朋友可以參考下
    2025-03-03
  • python模塊內(nèi)置屬性概念及實例

    python模塊內(nèi)置屬性概念及實例

    在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于python模塊內(nèi)置屬性概念及實例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-02-02
  • 基于pytorch 預(yù)訓(xùn)練的詞向量用法詳解

    基于pytorch 預(yù)訓(xùn)練的詞向量用法詳解

    今天小編就為大家分享一篇基于pytorch 預(yù)訓(xùn)練的詞向量用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 一文詳解Python中的super?函數(shù)

    一文詳解Python中的super?函數(shù)

    這篇文章主要介紹了一文了解Python中的super?函數(shù),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-09-09
  • 使用Pyhton 分析酒店針孔攝像頭

    使用Pyhton 分析酒店針孔攝像頭

    這篇文章主要介紹了使用Pyhton 分析酒店針孔攝像頭,本文通過截圖的形式給大家介紹的非常詳細,對大家的工作或?qū)W習(xí)具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03

最新評論

衡东县| 阿合奇县| 富宁县| 巴林右旗| 边坝县| 陇南市| 建平县| 新巴尔虎右旗| 永兴县| 沈丘县| 定南县| 潜江市| 博兴县| 应城市| 洮南市| 义乌市| 镇沅| 乡城县| 南雄市| 长宁区| 鄂尔多斯市| 鄢陵县| 辉南县| 通道| 扶沟县| 塘沽区| 毕节市| 普宁市| 天镇县| 岳池县| 昭通市| 阿巴嘎旗| 铜川市| 金溪县| 句容市| 隆德县| 洪湖市| 定结县| 海淀区| 宁明县| 墨江|