PythonでPowerPointからテキストを抽出する!(テーブルにも対応)


この記事について

会議の議事録などをメールで送る場合、スライドの文字だけ欲しい場合があったので、ちょっとコードを書いてみました。テーブルの文字を抜き出すのが若干手間でした。

準備したPowerPointサンプルファイル (sampleFile.pptx として同じフォルダに入れておく)

結果

File name:  sampleFile.pptx 

-- Page 1 --
タイトルです

サブタイトルです

-- Page 2 --
2ページ目です。
テキストボックスです♪

果物, 八百屋さんA, スーパーB, 
バナナ, 100円, 200円, 
リンゴ, 150円, 140円, 

テーブルのサンプル

コード


import pptx
from glob import glob

for fname in glob ('*.pptx'):
    print ('File name: ', fname, '\n')
    prs = pptx.Presentation(fname)

    for i, sld in enumerate(prs.slides, start=1):

        print(f'-- Page {i} --')

        for shp in sld.shapes:

            if shp.has_text_frame:
                print (shp.text)

            if shp.has_table:
                tbl = shp.table
                row_count = len(tbl.rows)
                col_count = len(tbl.columns)
                for r in range(0, row_count):                 
                    text=''
                    for c in range(0, col_count):
                        cell = tbl.cell(r,c)
                        paragraphs = cell.text_frame.paragraphs 
                        for paragraph in paragraphs:
                            for run in paragraph.runs:
                                text+=run.text
                            text+=', '
                    print (text)
            print ()

同じフォルダに入っているpptxの拡張子が入っているファイルすべてのテキストを抽出します。

 参考

Powerpoint(pptx)の表をスクレイピング
https://qiita.com/barobaro/items/a3a4a00aeda9d19e41b6

PDF・Word・PowerPoint・Excelファイルからテキスト部分を一括抽出するメソッド
https://qiita.com/barobaro/items/a3a4a00aeda9d19e41b6