スライド処理モジュール
スライドの一括画像変換
self_slide_img.py
「ppt_dir」に保存されているpptxファイル(複数)を一括して、jpg、もしくは、png形式の画像に変換します。変換後の画像ファイルのファイル名は、変換前のpptxファイルのファイル名にスライド番号を付記したものになります。
import win32com.client
import os
import glob
from comtypes import client
ppt_dir=r'C:\Users\******\Documents\python\ppt'
img_dir = r'C:\Users\******\Documents\python\image'
def export_img(f, img_dir, f_type):
ppt_ap = win32com.client.DispatchEx("Powerpoint.Application")
ppt_ap_open = ppt_ap.Presentations.open(f)
ppt_ap_open.Export(img_dir, FilterName=f_type)
ppt_ap_open .close()
ppt_ap.quit()
if __name__ == '__main__':
ppt_path=ppt_dir+r'\*.pptx'
files = glob.glob(ppt_path)
for f in files:
st_fname=f.replace(ppt_dir,'').replace('.pptx','').replace(chr(92),'')
#\の削除
print(st_fname,'の処理を開始します。')
export_img(f, img_dir, 'png') #'jpg'
img_path=img_dir+"\*.png" #'jpg'
img_files = glob.glob(img_path)
for fi in img_files:
print(len(fi))
if len(fi)==47:
#スライド数が10枚以上の時の処理
#47:スライド数が1桁(環境により数値が変わります)
#不要な場合は、if分を削除します
os.rename(fi,fi.replace('スライド',st_fname+'_0'))
else:
os.rename(fi,fi.replace('スライド',st_fname+'_'))
print(f,'の処理を終了しました。')
スライドから抽出したテキストのcsvへの書き出し
self_slide_txt.py
「ppt_dir」に保存されているpptxファイル(複数)のスライドに記入されているテキスト分を抽出して、csvファイルに書き出します。csvファイル(report.csv)の1列目には、pptファイルのファイル名、2列目にはテキストが書き出されます。書き出されたテキストを機械学習の対象とすることができます。
import pptx
import glob
import csv
ppt_dir=r'C:\Users\******\Documents\python\ppt'
ppt_path=ppt_dir+r'\*.pptx'
if __name__ == '__main__':
files = glob.glob(ppt_path)
alltext=[]
for k in range(len(files)):
ppt=pptx.Presentation(files[k])
reportname=files[k]
alltextline=""
for i,slide in enumerate(ppt.slides):
for k in slide.shapes:
if not k.has_text_frame:
continue
for L in k.text_frame.paragraphs:
alltextline+=L.text
kobetureport=[]
kobetureport.append(reportname.replace(ppt_dir,"").replace(chr(92),''))#個別のファイル名
kobetureport.append(alltextline)#そのファイルの中身
alltext.append(kobetureport)
with open(ppt_dir+'/report.csv', 'w', encoding='CP932', errors='ignore',newline="") as f:
writer=csv.writer(f)
writer.writerows(alltext)
北海道医療大学・情報センター