チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.Doc for .NET»段落»C#/VB.NET:Word で行間と段落の間隔を設定する方法
2026-10-23

Python で PowerPoint ファイルを読み込む:テキスト・画像などを抽出

PowerPoint(PPT・PPTX)ファイルには、テキスト、画像、表、グラフ、図形、メタデータなど、さまざまなコンテンツが含まれています。これらの要素をプログラムで抽出すると、繰り返し作業の自動化から、詳細なデータ分析、異なるプラットフォーム間でのコンテンツ移行まで、幅広い用途に活用できます。

このチュートリアルでは、PowerPoint ファイルを処理するライブラリ Spire.Presentation for Python を使用して、Python で PowerPoint ドキュメントを読み込む方法を紹介します。

目次:

1. PowerPoint ファイルを読み込むための Python ライブラリ

Python で PowerPoint ファイルを操作するために、Spire.Presentation for Python を使用します。この多機能なライブラリを利用すると、PowerPoint プレゼンテーションの作成、編集、コンテンツの読み取りを効率的に行えます。少ないコードで、テキスト、画像、表、SmartArt、メタデータを抽出できます。

まず、pip を使用してライブラリをインストールします。

pip install spire.presentation

それでは、PowerPoint ファイルから各種コンテンツを抽出する方法を見ていきましょう。

2. Python でスライドからテキストを抽出する

PowerPoint のスライドには、図形、表、SmartArt など、さまざまな形式でテキストが格納されています。ここでは、それぞれの要素からテキストを抽出する方法を紹介します。

2.1 図形からテキストを抽出する

PowerPoint スライド内のテキストの多くは、テキストボックスやラベルなどの図形に格納されています。図形からテキストを抽出する手順は次のとおりです。

操作手順

  • Presentation オブジェクトを初期化し、PowerPoint ファイルを読み込みます。
  • 各スライドと、そのスライド内の図形を順に処理します。
  • 図形が IAutoShape (標準的なテキストを格納する図形)であるかどうかを確認します。
  • 図形内の各段落からテキストを抽出します。

コード例

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

# Presentation クラスのオブジェクトを作成
presentation = Presentation()

# PowerPoint プレゼンテーションを読み込む
presentation.LoadFromFile("Input.pptx")

# リストを作成
text = []

# ドキュメント内のスライドを順に処理
for slide_index, slide in enumerate(presentation.Slides):
    # スライドの区切りを追加
    text.append(f"====スライド {slide_index + 1}====")

    # スライド内の図形を順に処理
    for shape in slide.Shapes:
        # 図形が IAutoShape オブジェクトであるかどうかを確認
        if isinstance(shape, IAutoShape):
            # 図形内の段落を順に処理
            for paragraph in shape.TextFrame.Paragraphs:
                # 段落のテキストを取得してリストに追加
                text.append(paragraph.Text)

# テキストを TXT ファイルに書き込む
with open("output/ExtractAllText.txt", "w", encoding='utf-8') as f:
    for s in text:
        f.write(s + "\n")

# リソースを解放
presentation.Dispose()

出力結果:

図形からテキストを抽出する

2.2 表からテキストを抽出する

PowerPoint の表には、構造化されたデータが格納されています。表の構造を維持しながらデータを抽出するには、各セルを順に処理します。

操作手順

  • Presentation オブジェクトを初期化し、PowerPoint ファイルを読み込みます。
  • 各スライドを順に処理し、スライド内の図形にアクセスします。
  • 表の図形(ITable オブジェクト)を識別します。
  • 行とセルを順に処理して、テキストを抽出します。

コード例

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

# Presentation オブジェクトを作成
presentation = Presentation()

# PowerPoint ファイルを読み込む
presentation.LoadFromFile("Input.pptx")

# 表を格納するリストを作成
tables = []

# スライドを順に処理
for slide in presentation.Slides:
    # スライド内の図形を順に処理
    for shape in slide.Shapes:
        # 図形が表であるかどうかを確認
        if isinstance(shape, ITable):
            tableData = ""

            # 表の行を順に処理
            for row in shape.TableRows:
                rowData = ""

                # 行内のセルを順に処理
                for i in range(row.Count):
                    # セルの値を取得
                    cellValue = row[i].TextFrame.Text
                    # 読みやすくするため、セルの値の間に区切りを追加
                    rowData += (cellValue + "  |  " if i < row.Count - 1 else cellValue)
                tableData += (rowData + "\n")
            tables.append(tableData)

# 各表をテキストファイルに書き込む
for idx, table in enumerate(tables, start=1):
    fileName = f"output/Table-{idx}.txt"
    with open(fileName, "w", encoding='utf-8') as f:
        f.write(table)

# リソースを解放
presentation.Dispose()

出力結果:

表からテキストを抽出する

2.3 SmartArt からテキストを抽出する

SmartArt は、PowerPoint で図解を作成するための機能です。SmartArt からテキストを抽出するには、各ノードにアクセスし、ノードに格納されたテキストを取得します。

操作手順

  • PowerPoint ファイルを Presentation オブジェクトに読み込みます。
  • 各スライドと、そのスライド内の図形を順に処理します。
  • スライド内の ISmartArt 図形を識別します。
  • SmartArt 内の各ノードを順に処理します。
  • 各ノードのテキストを抽出して保存します。

コード例

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

# Presentation オブジェクトを作成
presentation = Presentation()

# PowerPoint ファイルを読み込む
presentation.LoadFromFile("Input.pptx")

# プレゼンテーション内の各スライドを順に処理
for slide_index, slide in enumerate(presentation.Slides):

    # 現在のスライドから抽出したテキストを格納するリストを作成
    extracted_text = []

    # スライド内の図形を順に処理し、SmartArt 図形を探す
    for shape in slide.Shapes:
        if isinstance(shape, ISmartArt):
            smartArt = shape

            # SmartArt のノードからテキストを抽出してリストに追加
            for node in smartArt.Nodes:
                extracted_text.append(node.TextFrame.Text)

    # スライドごとに、抽出したテキストを個別のファイルに書き込む
    if extracted_text:  # テキストが抽出された場合のみファイルを作成
        file_name = f"output/SmartArt-from-slide-{slide_index + 1}.txt"
        with open(file_name, "w", encoding="utf-8") as text_file:
            for text in extracted_text:
                text_file.write(text + "\n")

# リソースを解放
presentation.Dispose()

出力結果:

SmartArt からテキストを抽出する

3. Python でスライド内の画像を保存する

スライドにはテキストだけでなく、分析に役立つ画像が含まれていることもあります。このセクションでは、スライド内の画像を保存する方法を紹介します。

操作手順

  • Presentation オブジェクトを初期化し、PowerPoint ファイルを読み込みます。
  • プレゼンテーションの Images コレクションにアクセスします。
  • 各画像を順に処理し、PNG などの形式で保存します。

コード例

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

# Presentation オブジェクトを作成
presentation = Presentation()

# PowerPoint ドキュメントを読み込む
presentation.LoadFromFile("Input.pptx")

# ドキュメント内の画像を取得
images = presentation.Images

# ドキュメント内の画像を順に処理
for i, image in enumerate(images):

    # 指定したパスに画像を保存
    ImageName = "Output/Images_" + str(i) + ".png"
    image.Image.Save(ImageName)

# リソースを解放
presentation.Dispose()

出力結果:

Python でスライド内の画像を保存する

4. Python でメタデータ(ドキュメントのプロパティ)を取得する

メタデータを抽出すると、プレゼンテーションのタイトル、作成者、キーワードなどの情報を確認できます。このセクションでは、これらのメタデータを取得して保存する方法を紹介します。

操作手順

  • Presentation オブジェクトを作成し、PowerPoint ファイルを読み込みます。
  • DocumentProperty オブジェクトにアクセスします。
  • Title 、 Author 、Keywords などのプロパティを取得します。

コード例

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

# Presentation オブジェクトを作成
presentation = Presentation()

# PowerPoint ドキュメントを読み込む
presentation.LoadFromFile("Input.pptx")

# DocumentProperty オブジェクトを取得
documentProperty = presentation.DocumentProperty

# テキストファイルに書き込む内容を準備
properties = [
    f"タイトル: {documentProperty.Title}",
    f"件名: {documentProperty.Subject}",
    f"作成者: {documentProperty.Author}",
    f"管理者: {documentProperty.Manager}",
    f"会社名: {documentProperty.Company}",
    f"分類: {documentProperty.Category}",
    f"キーワード: {documentProperty.Keywords}",
    f"コメント: {documentProperty.Comments}",
]

# プロパティをテキストファイルに書き込む
with open("output/DocumentProperties.txt", "w", encoding="utf-8") as text_file:
    for line in properties:
        text_file.write(line + "\n")

# リソースを解放
presentation.Dispose()

出力結果:

Python でメタデータを取得する

5. まとめ

Spire.Presentation for Python を使用すると、 PowerPoint ファイルからテキスト、画像、表、メタデータなどのさまざまな要素を読み取り、抽出できます 。このライブラリは、作業の自動化、コンテンツ分析、データ移行を効率化し、PowerPoint ファイルの管理を支援します。分析ツールの開発、ドキュメント処理の自動化、プレゼンテーションのコンテンツ管理など、PowerPoint ファイルをプログラムで扱う幅広い場面で活用できます。

6. よくある質問

Q1. Spire.Presentation はパスワードで保護された PowerPoint ファイルを処理できますか?

はい。Spire.Presentation は、パスワードで保護された PowerPoint ファイルを開いて処理できます。暗号化されたファイルにアクセスするには、LoadFromFile() メソッドにパスワードを指定します。

presentation.LoadFromFile("encrypted.pptx", "yourpassword")

Q2. PowerPoint スライドのコメントを読み取るにはどうすればよいですか?

Spire.Presentation ライブラリを使用して、PowerPoint スライドのコメントを読み取れます。コード例は次のとおりです。

from spire.presentation import Presentation

presentation = Presentation()
presentation.LoadFromFile("Input.pptx")

with open("PowerPoint_Comments.txt", "w", encoding="utf-8") as file:
    for slide_idx, slide in enumerate(presentation.Slides):
        if len(slide.Comments) > 0:
            for comment_idx, comment in enumerate(slide.Comments):
                file.write(
                    f"スライド {slide_idx + 1} のコメント {comment_idx + 1}: "
                    f"{comment.Text}\n"
                )

Q3. Spire.Presentation はテキスト抽出時に書式を保持しますか?

基本的なテキスト抽出では、書式を含まないテキストのみを取得します。フォントや色などの書式情報を取得するには、TextRange.LatinFont や TextRange.Fill などの追加プロパティにアクセスする必要があります。

Q4. Python で PowerPoint ファイルを読み込む際、ファイルサイズに制限はありますか?

Spire.Presentation は一般的なプレゼンテーションの多くを処理できますが、数百 MB に及ぶ非常に大きなファイルでは、パフォーマンスを改善するための最適化が必要になる場合があります。

無料ライセンスを取得する

Spire.Presentation for Python の機能を評価制限なしで体験したい場合は、30 日間無料トライアルライセンス を申請できます。

Read 9 times