【悩み】
・PythonでPowerPoint内のテキストをサクッと抜き出せる?
・3ページ目のスライドからなど特定スライドからテキストを抽出できる?
・テーブル(表)や発表者用ノート(原稿)に記載された文章も抽出したい!
こういった「悩み」に答えます。
【本記事の内容】
① Powerpointからテキスト抽出できるPythonライブラリ
② PythonでPowerPointからテキスト抽出するための準備
③ PowerPointからテキスト抽出する方法
本記事に掲載した手順を実践したことで、30分以内でPowerPoint内に記載された文字を抜き出せました(下の動画参照)。
記事の前半では「Python向けPowerPointライブラリの一覧」と「ライブラリなどのインストール方法」を解説します。
記事の後半では「PowerPointから文字を抽出するプログラム」を紹介します。
この記事を読み終えることで、「ある文字が記載されたスライドを簡単に特定できる」状態になります。
ちなみに、Pythonを使うことで本記事で紹介すること以外にも様々なPowerPointの操作を自動化できます。以下に実現できる範囲をまとめましたので、良ければアクセスしてみてください。
>> Pythonで実現できるPowerPointの操作一覧
Powerpointからテキスト抽出できるPythonライブラリ
PythonでPowerPointからテキストを抜き出したい場合、「python-pptx」ライブラリを使います。
以下の記事で「python-pptx」のライセンスや概要をご紹介しています。気になる方は、ぜひ読んでみてください。
>> 【5分でわかる】PythonでPowerPointの新規作成操作を自動化
以降で、PowerPointからテキスト抽出を実現するための環境準備を説明します。Pythonやライブラリのインストール手順を丁寧に解説しますね。
PythonでPowerPointからテキスト抽出するための準備
以下の流れで準備しましょう。
【流れ】
手順1:Pythonのインストール
手順2:python-pptxライブラリのインストール
手順3:PowerPointのプレースホルダーを理解
上記の流れで説明します。
Pythonのインストール
以下の記事を参考にし、お使いのパソコンやサーバーにPythonをインストールしましょう。
>> 【ubuntu向け】pyenvでPythonをインストールする手順【簡単】
>> 【コピペOK】pyenvでPythonをインストールする手順【Linux用】
>> 【最短5分】PyAutoGUIをWindowsにインストールする手順の「手順1:Pythonのインストール」を参照
>> 【環境構築】インストーラーでMacOSにPythonをインストール
python-pptxライブラリのインストール
python-pptxライブラリのインストール手順に関しては、以下の記事の「python-pptxライブラリのインストール」箇所をご覧ください。
>> 【5分でわかる】PythonでPowerPointの新規作成操作を自動化
PowerPointのプレースホルダーを理解
PowerPointには、「プレースホルダー」という概念があります。詳細に関しては、以下の記事「PowerPointのプレースホルダーを理解」の箇所をご覧ください。
>> 【5分でわかる】PythonでPowerPointの新規作成操作を自動化
PowerPointからテキストを抽出したい場合、python-pptxライブラリを使います。以降で、上記ライブラリを使ったプログラムをご紹介しますね。
PowerPointからテキスト抽出する方法
本章では、以下に関してご紹介します。
【ご紹介事項】
・PowerPoint全体からテキスト抽出
・特定のスライドからテキスト抽出
以降で、上記の各項目に関して以下のスライド「sample.pptx」を用いて説明します。
PowerPoint全体からテキスト抽出
「PowerPoint全体からテキスト抽出」するPythonプログラムは、以下となります。適宜変更部分は自分用に書き換えてください。
import collections.abc
from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE_TYPE
# スライドから文字を抽出
def check_recursively_for_text(this_set_of_shapes, txt_list):
for shape in this_set_of_shapes:
if shape.shape_type == MSO_SHAPE_TYPE.GROUP:
check_recursively_for_text(shape.shapes, txt_list)
else:
if hasattr(shape, "text"):
txt_list.append(shape.text)
if shape.has_table: # 表に含まれるテキストを抽出
for cell in shape.table.iter_cells():
txt_list.append(cell.text)
return txt_list
# ファイルの読み込み
prs = Presentation('./sample.pptx') # 適宜変更
# スライドごとに繰り返し
for slide in prs.slides:
# テキスト抽出
txt_list = []
txt_list = check_recursively_for_text(slide.shapes, txt_list)
# 発表者ノートからテキスト抽出
if slide.has_notes_slide and slide.notes_slide.notes_text_frame.text:
txt_list.append(slide.notes_slide.notes_text_frame.text)
print(txt_list)
上記のプログラムを「python-powerpoint-text-extract.py」というファイル名で保存しましょう。
以下のコマンドを実行し、保存した「python-powerpoint-text-extract.py」を実行します。
python python-powerpoint-text-extract.py
['テキストボックス', '小さめのテキストボックス', '1の発表者用ノート']
['表(テーブル)', '1', '2', '3', '4', '5', '6', '7', '8', '9']
['グループ化されたオブジェクト', '図形のテキスト', 'テキストボックス']
コマンド実行後、「全スライドに掲載されたテキスト」が表示された場合、正常に動作したと判断できます。
上記のプログラムでは、以下のテキストを抽出できます。
・Shape単体で記載された文字
・表(テーブル)内に記載された文字
・複数のShapeでグループ化されたオブジェクト内の文字
・発表者用のノートに記載された文字
特定のスライドからテキスト抽出
「特定のスライドからテキスト抽出」するPythonプログラムは、以下となります。適宜変更部分は自分用に書き換えてください。
import collections.abc
from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE_TYPE
# スライドから文字を抜き出す
def check_recursively_for_text(this_set_of_shapes, txt_list):
for shape in this_set_of_shapes:
if shape.shape_type == MSO_SHAPE_TYPE.GROUP:
check_recursively_for_text(shape.shapes, txt_list)
else:
if hasattr(shape, "text"):
txt_list.append(shape.text)
if shape.has_table: # 表に含まれるテキストを抽出
for cell in shape.table.iter_cells():
txt_list.append(cell.text)
return txt_list
slide_num = 2 # 取得したいスライドのページ番号を指定(適宜変更)
# ファイルの読み込み
prs = Presentation('./sample.pptx') # 適宜変更
# スライドごとに繰り返し
now_page_num = 0
for slide in prs.slides:
now_page_num += 1
if now_page_num != slide_num: # 対象スライドではない場合スキップ
continue
# テキスト抽出
text_list = []
text_list = check_recursively_for_text(slide.shapes, text_list)
# 発表者ノートからテキスト抽出
if slide.has_notes_slide and slide.notes_slide.notes_text_frame.text:
text_list.append(slide.notes_slide.notes_text_frame.text)
print(text_list)
上記のプログラムを「python-powerpoint-target-page-text-extract.py」というファイル名で保存しましょう。
以下のコマンドを実行し、保存した「python-powerpoint-target-page-text-extract.py」を実行します。
python python-powerpoint-target-page-text-extract.py
['表(テーブル)', '1', '2', '3', '4', '5', '6', '7', '8', '9']
コマンド実行後、「指定したスライドに掲載された文字」が表示された場合、正常に動作したと判断できます。
python-pptxライブラリを使うことで簡単にパワーポイントからテキストを抜き出せます。ぜひ利用してみて下さい。
Pythonを使うことで、PowerPointからテキストを自動で抽出できることを説明しました。このPythonを使うことで、あらゆる業務や作業を自動化できます。
その事例やヒントを知りたい方には、以下の本がオススメです。
ちなみに、上記教材の詳細なレビューに関しては、以下のサイトにまとめています。
【まとめ】PythonでPowerPointのテキストを抽出
いかがでしたでしょうか?
上記で紹介したpython-pptxライブラリを使うことで、PythonでPowerPointに記載されたテキストを抽出できます。
最後にもう一度内容を確認しましょう。
【おさらい】
・PowerPointからテキストを抜き出したい場合python-pptxを使う
・python-pptxで表や発表者用ノートからも文字抽出可能
・あるスライドに記載されたテキストの抽出も簡単に可能
本ブログでは、「業務の時短化に繋がるIT技術」や「クラウドやOSSの学び方」などを発信しています。定期的に更新していますので、ぜひブックマークをよろしくお願いいたします。
>> IT技術やその学び方を発信しているサイト「駆け出し物語」(本ブログ)
コメント