【Python】pptxファイルからノートを抽出する方法
【Python】pptxファイルからノートを抽出する方法
Pythonを使ってPowerPoint(.pptx)ファイルからスライドごとのノートを抽出する方法について解説します。プレゼンテーションの資料として、スライド内容と併せてノート情報を参照したいケースは多いと思います。このコードでは、python-pptxライブラリを使用してスライドのノートを抽出する方法を紹介します。
必要なライブラリと環境設定
このサンプルコードでは、PowerPointファイルを操作するためにpython-pptxライブラリを使用します。python-pptxはPowerPointファイルのスライド内容、ノート、画像などの操作が可能なライブラリです。
ライブラリのインストール
まず、python-pptxライブラリをインストールします。
pip install python-pptx
また、Google Colabなどのクラウド環境で実行する場合、ファイルパスの指定には注意が必要です。
2. コードの概要と解説
以下のコードでは、PowerPointファイル内の各スライドのノートを抽出して、ページ番号とノートを対応させた辞書に格納し、結果を出力します。
from pptx import Presentation
# PPTXファイルのパスを指定
pptx_file_path = "sample.pptx"
# プレゼンテーションを読み込み
prs = Presentation(pptx_file_path)
# 各スライドのノートを取得
slide_notes = {} # ページ番号をキーに
for i, slide in enumerate(prs.slides, start=1): # start=1で1からカウント
notes = ""
if slide.has_notes_slide and slide.notes_slide.notes_text_frame:
notes = slide.notes_slide.notes_text_frame.text
slide_notes[i] = notes # ページ番号をキーとして格納
print(f"Page {i} Notes: {notes}")
# スライドごとのノートがページ番号で格納されています
各部分の解説
コードの各部分について詳しく解説します。
プレゼンテーションファイルの読み込み
from pptx import Presentation
pptx_file_path = "sample.pptx"
prs = Presentation(pptx_file_path)
Presentationクラスを使用して、指定したファイルパスのPowerPointファイルを読み込みます。pptx_file_pathには、読み込みたいPowerPointファイルのパスを指定します。
スライドのノートを抽出
slide_notes = {}
for i, slide in enumerate(prs.slides, start=1):
notes = ""
if slide.has_notes_slide and slide.notes_slide.notes_text_frame:
notes = slide.notes_slide.notes_text_frame.text
slide_notes[i] = notes
print(f"Page {i} Notes: {notes}")
prs.slidesでプレゼンテーション内のスライドにアクセスします。enumerate関数を使用し、スライドを1から数えるためにstart=1を指定しています。slide.has_notes_slideでノートが存在するかを確認し、存在する場合にはnotes_slide.notes_text_frame.textでノートのテキストを取得します。slide_notes辞書に、スライド番号をキーとしてノートを格納します。
実行結果の確認
このコードを実行すると、各スライドごとにノートが表示されます。
Page 1 Notes: 〇〇についての詳細
Page 2 Notes: 次回の進行内容
Page 3 Notes: 質問と回答の一覧
slide_notes辞書には、ページ番号をキーとした形式でノートが格納されています。例えば、slide_notes[1]で1枚目のスライドのノートにアクセスできます。
応用例
抽出したノートをCSVファイルに出力
ノート情報をCSVファイルとして保存したい場合は、Pythonのcsvライブラリを使って出力できます。
import csv
with open("slide_notes.csv", "w", newline="") as csvfile:
writer = csv.writer(csvfile)
writer.writerow(["Slide Number", "Notes"])
for slide_number, notes in slide_notes.items():
writer.writerow([slide_number, notes])
これにより、スライド番号とノートのテキストがCSV形式で保存され、データの共有や確認がしやすくなります。
まとめ
この方法を使うことで、PythonでPowerPointファイルからスライドごとのノートを簡単に抽出できるようになります。とくに発表資料や共有資料で、各スライドに関連するメモを確認したい場合に役立ちます。また、抽出したデータを他の形式に変換したり、分析のためにデータベースに保存するなど、幅広い応用が可能です。
python-pptxを使うことでプレゼンテーション資料の自動処理ができ、とくにビジネスシーンや教育の現場での効率化に貢献します。- 今回のサンプルコードを活用し、資料の自動分析や生成の基礎として役立ててください。