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

Python實現(xiàn)從PPT提取圖片和文本

 更新時間:2026年04月23日 08:22:43   作者:LSTM97  
在日常辦公和數(shù)據(jù)處理中,我們經(jīng)常需要從?PowerPoint?演示文稿中提取素材,下面我們就來看看如何使用?Python?輕松實現(xiàn)從?PPT?中提取圖片和文本吧

在日常辦公和數(shù)據(jù)處理中,我們經(jīng)常需要從 PowerPoint 演示文稿中提取素材,比如圖片和文本內(nèi)容。手動復制粘貼不僅效率低,還容易出錯。今天,我就來介紹如何使用 Python 輕松實現(xiàn)從 PPT 中提取圖片和文本。

準備工作

首先,你需要安裝 Spire.Presentation for Python??梢酝ㄟ^ pip 命令進行安裝:

pip install Spire.Presentation

安裝完成后,就可以開始編寫代碼了。

從 PPT 中提取圖片

很多時候,PPT 里的圖片是我們需要的素材。下面的代碼演示了如何批量提取 PPT 中的所有圖片并保存到本地:

from spire.presentation.common import *
from spire.presentation import *

# 創(chuàng)建 Presentation 實例
ppt = Presentation()

# 加載 PowerPoint 文檔
ppt.LoadFromFile("sample.pptx")

# 遍歷文檔中的所有圖片
for i, image in enumerate(ppt.Images):
    # 提取并保存圖片
    ImageName = "ExtractImage/Images_" + str(i) + ".png"
    image.Image.Save(ImageName)

ppt.Dispose()

代碼解析:

  • Presentation():創(chuàng)建 PPT 文檔對象
  • LoadFromFile():加載需要處理的 PPT 文件
  • ppt.Images:獲取文檔中所有圖片的集合
  • image.Image.Save():將圖片保存為 PNG 格式

運行后,所有圖片會按順序保存到 ExtractImage 文件夾下,命名為 Images_0.png、Images_1.png 等。

從 PPT 中提取文本

除了圖片,提取文本內(nèi)容也是常見需求。下面的代碼可以遍歷每一張幻燈片,提取所有形狀中的文字:

from spire.presentation import *
from spire.presentation.common import *

# 創(chuàng)建 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 文件,每行一個段落

注意事項

資源釋放 :使用完 Presentation 對象后,務必調(diào)用 Dispose() 方法釋放資源,避免內(nèi)存泄漏。

文件路徑 :確保 PPT 文件路徑正確,保存圖片和文本的目錄需要提前創(chuàng)建或使用代碼自動創(chuàng)建。

文本編碼 :寫入文本文件時使用 utf-8 編碼,可以正確處理中文等非英文字符。

圖片格式 :Save() 方法保存的圖片默認為 PNG 格式,如需其他格式可以參考官方文檔。

形狀類型 :文本提取時只處理了 IAutoShape 類型,如果文本位于表格、圖表等其他形狀中,需要額外處理。

方法補充

下面是一個使用 Python 從 PowerPoint(.pptx 文件)中提取所有文本和圖片的完整解決方案。核心依賴是 python-pptx 庫,它能高效解析 Office Open XML 格式的 PPTX 文件。

1.安裝依賴

pip install python-pptx pillow
  • python-pptx:用于解析 PPTX 文件,提取文本框、表格、形狀中的文本,以及圖片對象。
  • Pillow:用于處理提取出的圖片(保存到文件)。

2.功能實現(xiàn)

以下代碼會:

  • 打開 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: 輸出目錄(文本文件和圖片文件夾)
    """
    # 創(chuàng)建輸出目錄
    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:
                # 獲取圖片的二進制數(shù)據(jù)
                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.save(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.關鍵點說明

功能實現(xiàn)方式
文本提取檢查 shape.has_text_frame、shape.has_table、shape.has_chart 等屬性,提取其中的文字內(nèi)容。
圖片提取判斷 shape.shape_type == MSO_SHAPE_TYPE.PICTURE,然后通過 shape.image.blob 獲取原始字節(jié)流,再用 Pillow 保存。
輸出組織文本按幻燈片順序?qū)懭胍粋€ .txt 文件;圖片單獨保存在 images 子目錄下,文件名包含所在幻燈片索引和形狀 ID。

總結(jié)

通過 Spire.Presentation for Python,我們可以用十幾行代碼就完成 PPT 中圖片和文本的批量提取工作。這個庫功能強大且易于使用,非常適合自動化辦公場景。希望這篇文章能幫助你提高工作效率!

如果你有更多關于 PPT 自動化處理的需求,比如創(chuàng)建 PPT、修改內(nèi)容、添加圖表等,Spire.Presentation 還提供了更多豐富的功能等待你去探索。

到此這篇關于Python實現(xiàn)從PPT提取圖片和文本的文章就介紹到這了,更多相關Python提取PPT圖片和文本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python使用PIL模塊實現(xiàn)給圖片打水印的方法

    python使用PIL模塊實現(xiàn)給圖片打水印的方法

    這篇文章主要介紹了python使用PIL模塊實現(xiàn)給圖片打水印的方法,涉及使用PIL模塊操作圖片的相關技巧,需要的朋友可以參考下
    2015-05-05
  • 詳解Numpy中的廣播原則/機制

    詳解Numpy中的廣播原則/機制

    這篇文章主要介紹了Numpy中的廣播原則/機制,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Python使用Pygame實現(xiàn)時鐘效果

    Python使用Pygame實現(xiàn)時鐘效果

    這篇文章主要為大家詳細介紹了Python使用Pygame實現(xiàn)時鐘效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Python3訪問并下載網(wǎng)頁內(nèi)容的方法

    Python3訪問并下載網(wǎng)頁內(nèi)容的方法

    這篇文章主要介紹了Python3訪問并下載網(wǎng)頁內(nèi)容的方法,實例分析了Python頁面抓取及寫入文件的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • Python使用Selenium爬取淘寶異步加載的數(shù)據(jù)方法

    Python使用Selenium爬取淘寶異步加載的數(shù)據(jù)方法

    今天小編就為大家分享一篇Python使用Selenium爬取淘寶異步加載的數(shù)據(jù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python求crc32值的方法

    python求crc32值的方法

    這篇文章主要介紹了python求crc32值的方法,包括相關的步驟及實現(xiàn)方法,需要的朋友可以參考下
    2014-10-10
  • Python數(shù)據(jù)分析Pandas全攻略

    Python數(shù)據(jù)分析Pandas全攻略

    在Python中,Pandas是一個非常強大的數(shù)據(jù)處理和分析庫,廣泛應用于數(shù)據(jù)科學和數(shù)據(jù)分析領域,接下來通過本文介紹Python數(shù)據(jù)分析Pandas全攻略包括安裝與導入示例,感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • 詳解python中的模塊及包導入

    詳解python中的模塊及包導入

    python中的導入關鍵字:import 以及from import。這篇文章主要介紹了詳解python中的模塊及包導入,需要的朋友可以參考下
    2019-08-08
  • python源碼剖析之PyObject詳解

    python源碼剖析之PyObject詳解

    Python實現(xiàn)了完全的面向?qū)ο蟮恼Z言特性,所有的類均繼承自object基類,對應著實現(xiàn)層面的PyObject.為了實現(xiàn)多態(tài)的特性,Python的實現(xiàn)過程維護了一個類型對象系統(tǒng),用來記錄類型信息和維護類的函數(shù)成員,本文為大家詳細介紹了PyObject,需要的朋友可以參考下
    2021-05-05
  • 詳解如何利用Python繪制科赫曲線

    詳解如何利用Python繪制科赫曲線

    科赫曲線是一種像雪花的幾何曲線,所以又稱為雪花曲線,它是de Rham曲線的特例。本文將利用Python語言實現(xiàn)這一曲線,需要的可以參考一下
    2022-05-05

最新評論

海淀区| 土默特左旗| 孟津县| 八宿县| 安义县| 吉木乃县| 江达县| 江孜县| 乌兰浩特市| 罗平县| 隆昌县| 环江| 贵南县| 宁陕县| 遵化市| 盖州市| 游戏| 汾西县| 建瓯市| 新乡市| 阿图什市| 东方市| 威远县| 开平市| 荥阳市| 弋阳县| 施甸县| 枞阳县| 锦州市| 昂仁县| 沙洋县| 保定市| 伊金霍洛旗| 无棣县| 富源县| 梅州市| 唐海县| 楚雄市| 德安县| 正蓝旗| 西充县|