亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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 = []
            
            # 提取當(dāng)前幻燈片中的所有文本
            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è)置窗口標(biāo)題和大小
  • 調(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繪制多個曲線的折線圖

    python繪制多個曲線的折線圖

    這篇文章主要為大家詳細介紹了python繪制多個曲線的折線圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Python 2.x如何設(shè)置命令執(zhí)行的超時時間實例

    Python 2.x如何設(shè)置命令執(zhí)行的超時時間實例

    這篇文章主要給大家介紹了關(guān)于Python 2.x如何設(shè)置命令執(zhí)行超時時間的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • 使用python的turtle函數(shù)繪制一個滑稽表情

    使用python的turtle函數(shù)繪制一個滑稽表情

    Turtle庫是Python語言中一個很流行的繪制圖像的函數(shù)庫,今天通過實例代碼給大家分享使用python的turtle函數(shù)繪制一個滑稽表情,一起看看吧
    2020-02-02
  • 淺析python繼承與多重繼承

    淺析python繼承與多重繼承

    在本篇文章中我們給大家分析了python繼承與多重繼承的相關(guān)知識點內(nèi)容,有興趣的讀者們參考下。
    2018-09-09
  • 在Python中處理列表之reverse()方法的使用教程

    在Python中處理列表之reverse()方法的使用教程

    這篇文章主要介紹了在Python中處理列表之reverse()方法的使用教程,是Python入門中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • Django中的ajax請求

    Django中的ajax請求

    今天小編就為大家分享一篇關(guān)于Django中的ajax請求,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • pytorch的backward()的底層實現(xiàn)邏輯詳解

    pytorch的backward()的底層實現(xiàn)邏輯詳解

    自動微分是一種計算張量(tensors)的梯度(gradients)的技術(shù),它在深度學(xué)習(xí)中非常有用,這篇文章主要介紹了pytorch的backward()的底層實現(xiàn)邏輯,需要的朋友可以參考下
    2023-11-11
  • python執(zhí)行js腳本報錯CryptoJS is not defined問題

    python執(zhí)行js腳本報錯CryptoJS is not defined問題

    這篇文章主要介紹了python執(zhí)行js腳本報錯CryptoJS is not defined問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Python模擬鋼琴鍵盤實現(xiàn)演奏數(shù)鴨子歌曲

    Python模擬鋼琴鍵盤實現(xiàn)演奏數(shù)鴨子歌曲

    前幾天上課老師給我們講了兩個模塊,然后利用這兩個模塊來模擬鋼琴鍵盤去簡單地演奏《數(shù)鴨子》今天來分享給大家,感興趣的可以了解一下
    2022-11-11
  • Python個人博客程序開發(fā)實例信息顯示

    Python個人博客程序開發(fā)實例信息顯示

    這篇文章主要介紹了怎樣用Python來實現(xiàn)一個完整的個人博客系統(tǒng),我們通過實操上手的方式可以高效的鞏固所學(xué)的基礎(chǔ)知識,感興趣的朋友一起來看看吧
    2022-12-12

最新評論