いうえおかき

パワーポイントからテキストデータを抽出(Python)

パワーポイントのテキストデータを抽出するPythonプログラムを作りました。まずは下記参考ページをもとに、python-pptxライブラリをインストール https://qiita.com/youwht/items/062c41c88829fcf25107

しかし、このページ内に書いてある下記のpipだと、自分の環境だとmacデフォルトのpython2にインストールされてしまうので、

pip install python-pptx

python3の方にインストールされるようにこちらに変更。

python3 -m pip install python-pptx

また、並行して抽出するパワポを制作。

このパワポのテキストデータを取得したいと思います

まずは上記ページに書いてあるコードを試してみる

無事コマンドライン上にテキストの内容が表示されました。

しかし、これはprintしているだけでどこにもデータは保存されていません。

パワポのテキストをtxtファイルに保存する

続いて、出力したパワポデータをtxtに書き出してみます。プログラムの最後に下記コードを追記


f = open('test.txt','a')
f.write(shapeText + '\n')
f.close()

これでtest.txtにprintした内容が保存されます

GUIを使って、ファイルを選択できるようにする

今までのやり方だと、違うpptxファイルからデータを抽出する際にはPythonコード上の名前を書き換える必要があります。それだと面倒なのでファイルを任意で選んで、そのファイルのデータを抽出するようにしました。

GUIの制作にはTkinterライブラリを使用します。


import os,sys
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
from tkinter import messagebox

from pptx import Presentation
import codecs
global antman

def button1_clicked():
    fTyp = [('パワポ','*.pptx')]
    iDir = os.path.abspath(os.path.dirname(__file__))
    filepath = filedialog.askopenfilename(filetypes = fTyp,initialdir = iDir)
    file1.set(filepath)

global_var = "Global Varibale"
def button2_clicked():
    messagebox.showinfo('FileReference Tool', u'参照ファイルは↓↓\n' + file1.get())
    global antman
    antman = (file1.get())

    try:
        prs = Presentation(antman)
    except:
        sys.exit()
    for islide in range(0, len(prs.slides)):
        print("slide_name=",str(islide))
        slide = prs.slides[islide]
        for shape in slide.shapes:
            shapeText=""
            if not shape.has_text_frame:
                continue
            for paragraph in shape.text_frame.paragraphs:
                shapeText += paragraph.text.strip().replace('\n','').replace('\r','')
            if( len(shapeText) >0 ):
                print(shapeText)

                f = open(antman+'test.txt','a')
                f.write(shapeText + '\n')
                f.close()


if __name__ == '__main__':

    root = Tk()
    root.title('FileReference Tool')
    root.resizable(False, False)

    frame1 = ttk.Frame(root, padding=10)
    frame1.grid()

    button1 = ttk.Button(root, text=u'参照', command=button1_clicked)
    button1.grid(row=0, column=3)

    s = StringVar()
    s.set('ファイル>>')
    label1 = ttk.Label(frame1, textvariable=s)
    label1.grid(row=0, column=0)

    file1 = StringVar()
    file1_entry = ttk.Entry(frame1, textvariable=file1, width=50)
    file1_entry.grid(row=0, column=2)

    frame2 = ttk.Frame(root, padding=(0,5))
    frame2.grid(row=1)

    button2 = ttk.Button(frame2, text='Start', command=button2_clicked)
    button2.pack(side=LEFT)

    button3 = ttk.Button(frame2, text='Cancel', command=quit)
    button3.pack(side=LEFT)

    root.mainloop()

こちらを実行すると下記のような簡易GUIが出てきます。

ファイルをGUI上で任意に選べるようになりました。

まだまだ荒削りなので、調整を加えていきます

トップへ戻る