PowerPoint ファイルには、スライド上に直接表示されている内容以外にも、多くのテキストが含まれていることがあります。タイトル、段落、テキストボックスに加えて、プレゼンテーションにはスピーカーノートやレビューコメントが含まれている場合もあります。
これらの内容を分析、保存、検索、または再利用する必要がある場合、手動でコピーするよりも、プログラムを使用して抽出する方が効率的です。
このチュートリアルでは、Spire.Presentation for Python を使用して、PowerPoint プレゼンテーションから次の 3 種類のテキストを抽出する方法を紹介します。
各例では .pptx ファイルを読み込み、抽出した内容をプレーンテキストファイルとして保存します。
Spire.Presentation for Python をインストールする
サンプルコードを実行する前に、pip を使用して Spire.Presentation for Python をインストールします。
pip install Spire.Presentation
次に、必要なモジュールをインポートします。
from spire.presentation import *
from spire.presentation.common import *
以下の例では、入力用のプレゼンテーションとして Sample.pptx を使用します。
Python で PowerPoint スライドからテキストを抽出する
PowerPoint で表示されるテキストの多くは、タイトル、テキストボックス、コンテンツプレースホルダーなどの図形内に保存されています。
これらのテキストを抽出するには、すべてのスライドを順番に処理し、それぞれの図形を確認して、テキストフレームを持つ図形からテキストを取得します。
from spire.presentation import *
from spire.presentation.common import *
# 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()
このコードでは、最初にプレゼンテーションを読み込み、すべてのスライドを順番に処理します。各スライドについて図形を確認し、テキストコンテンツを含むことの多い IAutoShape オブジェクトを処理します。
その後、各段落を TextFrame.Paragraphs から取得し、SlideText.txt に書き込みます。
出力結果:

この方法は、元のスライド書式を保持する必要がなく、プレゼンテーション内のテキストコンテンツだけを取得したい場合に便利です。
Python で PowerPoint からスピーカーノートを抽出する
スピーカーノートは通常、スライドショー中には表示されませんが、説明、発表時の要点、参考情報などの有用な内容が含まれていることがあります。
Spire.Presentation では、NotesSlide プロパティを使用して、各スライドに関連付けられたノートへアクセスできます。
from spire.presentation import *
from spire.presentation.common import *
# Presentation オブジェクトを作成する
pres = Presentation()
# PowerPoint プレゼンテーションを読み込む
pres.LoadFromFile("Sample.pptx")
notes_list = []
# 各スライドを順番に処理する
for slide in pres.Slides:
# ノートスライドを取得する
notesSlide = slide.NotesSlide
# スピーカーノートを取得する
notes = notesSlide.NotesTextFrame.Text
notes_list.append(notes)
# ノートをテキストファイルに書き込む
with open("output/SpeakerNoteText.txt", "w", encoding="utf-8") as f:
for note in notes_list:
f.write(note)
f.write("\n")
pres.Dispose()
各スライドについて、コードは slide.NotesSlide にアクセスし、次のプロパティからノートの内容を読み取ります。
notesSlide.NotesTextFrame.Text
出力結果:

この方法は、研修用プレゼンテーション、講義スライド、社内レポート、または説明の多くがスライド本体ではなくノートに保存されているプレゼンテーションを処理する場合に特に便利です。
Python で PowerPoint からコメントを抽出する
PowerPoint のコメントは、ドキュメントレビューやチームでの共同作業でよく使用されます。コメントには、フィードバック、質問、修正提案、承認に関するメモなどが含まれる場合があります。
コメントを抽出するには、各スライドの Comments コレクションを順番に処理します。
from spire.presentation import *
from spire.presentation.common import *
# Presentation オブジェクトを作成する
pres = Presentation()
# PowerPoint プレゼンテーションを読み込む
pres.LoadFromFile("Sample.pptx")
comment_list = []
# すべてのスライドを順番に処理する
for slide in pres.Slides:
# スライド内のすべてのコメントを取得する
comments = slide.Comments
# コメントを順番に処理する
for comment in comments:
# コメントのテキストを取得する
commentText = comment.Text
comment_list.append(commentText)
# コメントをテキストファイルに書き込む
with open("output/CommentText.txt", "w", encoding="utf-8") as f:
for comment in comment_list:
f.write(comment + "\n")
pres.Dispose()
重要なのは slide.Comments コレクションです。各コメントオブジェクトのテキスト内容は、Text プロパティを通じて取得できます。
すべてのスライドを処理した後、コメントは CommentText.txt に保存されます。
出力結果:

これにより、各スライドを手動で開いて確認することなく、プレゼンテーション全体のレビューコメントをまとめて取得できます。
スライドテキスト、スピーカーノート、コメントの違い
3 種類はいずれもテキスト情報ですが、それぞれ用途が異なります。
| コンテンツの種類 | 表示される場所 | 主な用途 |
|---|---|---|
| スライドテキスト | プレゼンテーションのスライド上 | タイトル、ラベル、段落、キャプション |
| スピーカーノート | スライドのノート領域 | 発表用スクリプト、説明、参考情報 |
| コメント | スライドに追加されたレビューコメント | フィードバック、質問、修正指示 |
PowerPoint のテキスト処理ワークフローを構築する場合、隠れたコンテキスト情報を見落とさないように、これら 3 種類すべてを抽出すると便利です。
たとえば、プレゼンテーション検索システムでは、表示されているスライドテキストとスピーカーノートをまとめてインデックス化できます。一方、ドキュメントレビューシステムでは、コメントだけを個別に収集して追加分析に利用できます。
まとめ
PowerPoint ファイルからテキストを抽出する場合、スライド上に表示されている内容だけが対象になるわけではありません。
Spire.Presentation for Python を使用すると、PowerPoint のオブジェクトモデルを通じてスライドテキスト、スピーカーノート、コメントにアクセスし、それらをプレーンテキストとして出力したり、別の処理ワークフローに渡したりできます。
このチュートリアルで紹介した 3 つの例は、一般的な PowerPoint テキスト抽出シナリオをカバーしており、PowerPoint 検索、コンテンツのインデックス化、ドキュメント分析、プレゼンテーション移行、AI を使用した要約などのアプリケーションにも応用できます。
FAQ
PowerPoint ファイル内のすべてのスライドからテキストを抽出できますか?
はい。Slides コレクションを順番に処理し、各スライド内の図形を確認することで抽出できます。対応するテキスト図形に含まれる内容は、テキストフレームと段落を通じて取得できます。
スライド上に表示されていないスピーカーノートも Python で抽出できますか?
はい。スピーカーノートは、各スライドの NotesSlide プロパティからアクセスできます。その後、NotesTextFrame.Text を使用してノートのテキストを取得できます。
PowerPoint 内のすべてのコメントをまとめて抽出できますか?
はい。すべてのスライドを順番に処理し、それぞれの Comments コレクションを確認することで、プレゼンテーション全体のコメントを 1 つの処理で収集できます。
抽出した内容は TXT ファイルとして保存する必要がありますか?
いいえ。このチュートリアルでは、シンプルで確認しやすいためテキストファイルを使用していますが、抽出したテキストは Python のリスト、データベース、JSON ファイル、CSV ファイル、Word ドキュメントなどに保存したり、別のアプリケーションへ直接渡したりすることもできます。
これらの方法を 1 つのスクリプトにまとめることはできますか?
はい。1 つの Python プログラムでプレゼンテーションを処理しながら、スライドテキスト、スピーカーノート、コメントを同時に抽出できます。その後、結果をスライドごとに整理したり、コンテンツの種類ごとに別々に出力したりできます。
無料で試用ライセンスを取得
Spire.Presentation for Python の機能を評価制限なしで体験したい場合は、30 日間無料トライアルライセンス を申請できます。






