PowerPoint(PPT・PPTX)ファイルには、テキスト、画像、表、グラフ、図形、メタデータなど、さまざまなコンテンツが含まれています。これらの要素をプログラムで抽出すると、繰り返し作業の自動化から、詳細なデータ分析、異なるプラットフォーム間でのコンテンツ移行まで、幅広い用途に活用できます。
このチュートリアルでは、PowerPoint ファイルを処理するライブラリ Spire.Presentation for Python を使用して、Python で PowerPoint ドキュメントを読み込む方法を紹介します。
目次:
- PowerPoint ファイルを読み込むための Python ライブラリ
- スライドからテキストを抽出する
- スライド内の画像を保存する
- メタデータ(ドキュメントのプロパティ)を取得する
- まとめ
- よくある質問
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()
出力結果:

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()
出力結果:

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()
出力結果:

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 日間無料トライアルライセンス を申請できます。






