PowerPointファイルからテキストデータを抽出することで、テキストマイニングや文書ファイルの検索といった応用が可能になります。
本記事では、pptx形式のPowerPointファイルからテキストデータを抽出するPythonスクリプトについて、三種類の手法を比較して紹介します。
python-pptxを使用する
python-pptxは、pptx形式のPowerPointファイルを操作できるpythonライブラリで、Pythonによるスライド作成の自動化などの記事をよく見かけますが、作成だけでなく読み取りも可能です。
注意点として、読み取り・書き込みパスワードや権限が設定されている場合は利用出来ないという問題があります。また、「x」のついていない方の.ppt形式のPowerPointファイルは開けないので、何らかの方法で.pptxに変換する必要があります。
例1:
Pythonの標準ライブラリを使用する
Office 2007 以降で保存可能になった.docx, .xlsx, .pptx といった拡張子のOfficeファイルは、XMLファイルなどをzip圧縮したものです。したがって、「
re」や「
zipfile」、「
xml.etree.ElementTree」といった標準ライブラリだけを用いて読み取ることができます。
python-pptxを使用する場合と同様に、読み取り・書き込みパスワードや権限が設定されている場合はzipが解凍できないため利用出来ないという問題があります。また、.ppt形式の場合も、zipファイルではないので開けません。
ライブラリを追加したくない場合などはこの手法が使えると思います。
例2:
参考:
PowerPointファイルからのテキスト抽出
最近、社内での業務プロセス改善の一環で、pptx形式のPowerPointファイルからテキスト抽出を自動化し解析を行いました。 そこで今回は pptxファイルからテキストを抽出する方法につ…
pywin32(win32com)を使用する
Windows環境で実行するという条件がつきますが、この方法であればパスワードや権限が設定されているPowerPointファイルからもテキストが取り出せます。
win32comとかPyWin32とかPython for Windows extensionsとか呼ばれているライブラリを用いる方法です。
VBAで操作することに慣れている場合は、細かいところまで手が届くので良いかと思います。この方法だと、PowerPointのアプリケーションを経由して情報が抽出されるので、PowerPointアプリにアカウント設定がされていれば、権限設定のある.pptx形式のみならず、.ppt形式のPowerPointファイルの場合も操作可能です。
問題として、WindowsやPowerPointアプリのインストール・設定が必要となるので、環境構築の手間がかかります。
例3:
参考:
Python: Microsoft PowerPointファイル(*.ppt)のテキストデータ抽出 - pywin32, win32com - Yukun's Blog
- Python: Microsoft PowerPointファイル(*.ppt)のテキストデータ抽出 - pywin32, win32com
win32comを使用することで、.pptファイルを.pptxファイルやpdfに変換することもできるので、上記の手法などと組み合わせて使うというのも一つの手かもしれません。
ここまで紹介した例では、「ノート」の中身のテキスト抽出について触れていませんでしたが、やり方を紹介されている方を見つけたのでリンクを掲載させていただきます。
python-pptx を使って PowerPoint ファイルの「発表者ノート」を抽出する
PowerPoint を使ってプレゼンテーションをするときに,原稿や関連情報を「発表者ノート」に書いておく人は多いと思う.そこで Python と python-pptx を使って,自動的に「発表者ノート」を抽出できるようにした.Python 3.8.5 と python-pptx v0.6.18 を前提にする. github…
関連記事:
【Python】PDF内の表をExcelに変換する