発表スライドを自動で点検したい!!
学会発表シーズン。オンラインでの発表が中心になってから、よくできているスライドとあまり良くないスライドが目立つようになった。
よくできているスライドを見ると、発表内容がうまく入ってくるし、興味も持てるし、さらに知りたくなって質問したくなる。時には、自分の研究にもつながる学びを得られる。発表する側も、質問を通じて新たな学びを得られる。
できれば自分のスライドもこうありたい。ただ、発表準備に時間をかけたり、誰かに見てもらったり、というのは大変だ。
そこで、自分が陥りやすいミスを気にしながら、自動でスライドをチェックして、スライドの最低限の問題点を速やかに洗い出し、貴重な時間を内容や発表練習に使おうと思い立った。
どんなスライドが見やすいか。これまでの経験から。
スライドについて考える前に、どんな発表が良い発表なのか、少し考えてみる。
個人的には、
聞き手を意識して内容が調整されていて、
聞いている方は内容が効きやすく、
さらに発表者の議論を追って、質疑応答でその議論を深められる
発表が良い学会発表だと思っている。
そのためには、発表やスライドには以下のことが求められるだろう。
議論の流れがわかりやすく、スライドごとの主張がわかりやすい
何を議論しているのか、図やイラストですぐに理解できる
議論に出てくる数字やグラフが、読み取りやすい
出てくる数字やグラフで何に注目すれば良いかがわかりやすい
では、スライドを確認する時には、何をチェックすると良いだろうか?
個人的には、以下の項目をチェックすると良いと思っている。
文字の大きさは、十分大きいか?
文字ばかりになっていないか?文字の量が多すぎると、説明を聞いてもらえないし、何が伝えたいのかもわかりにくくなる。
各スライドのタイトルで、そのスライドで言いたいことがわかるか?
数字やグラフが読み取れる大きさか?
たくさん数字がある場合、何に注目すれば良いかわかりやすくなっているか?
自分がアドバイスを求められると、だいたいこういうことを言っている気がする。
でも、自分でスライドを作っていると、どうしてもこういう確認がおろそかになることがある。だから、自動でチェックしたい。
今回は、1のチェックの自動化まではできたので、その報告。
自動でスライドをチェックしたいけど、便利なものはないかな?
スライドを自動でチェックするにはどうしたら良いだろうか。
そもそも、PDFの内容を簡単に分析するツールはないだろうか。
あった。有料だけど。adobe純正、pdfからデータを抜き出すAPI。
free trialもあるので、これで一度作ってみよう。
一回あたり0.05アメリカドルらしいので、そこまで高くはない。
free trialの加入は簡単。adobe idでログインして、必要事項を入力して、プログラミング言語を選んで、(私はpythonを選択) 注意書きを読んで、次へ。サンプルコードが入ったzipがダウンロードされる。
zipを解凍して、開いたら、
adobe-dc-pdf-services-sdk-extract-python-samples/README.md
に従って、必要なパッケージをインストール。
adobe-dc-pdf-services-sdk-extract-python-samples $ pip install -r requirements.txt
そうしたら、サンプルコードが動くようになる。
python src/extractpdf/extract_txt_table_info_with_figure_tables_rendition_from_pdf.py
としてやれば、zipファイルがoutputというフォルダの中にできる。
中身は、抜き出された図とtable、そして、情報がまとめられたjsonファイル。
サンプルコードで、入力するpdfの名前を変えたら、簡単に自分のファイルも分析できる。
具体的には、点検したいスライドのPDFを、resourcesのフォルダの中において、サンプルコードを開いて、"/resources/extractPdfInput.pdf"の部分で、ファイル名を書き換えてやれば良い。
私はいつもmacOSのKeynoteでスライドを作っているので、Keynoteで作ったスライドをPDFに変換してresources のフォルダ内に置いた。
スライドのPDFから抜き出した情報を使って、スライドの自動チェックをする
さて、ここまでで、jsonファイルで情報を取り出せたので、ここからスライドの自動チェックをするサンプルを作ってみよう。
出力は、jsonファイルなので、pythonで簡単に分析できる。
例えば、文字のフォントサイズを確認したければ、以下のようにすればいい。
今回は、フォントサイズが20以下なら警告する、24以下なら注意を促す、という風にした。
import json
with open('output/ExtractTextTableWithFigureTableRendition/structuredData.json', mode='rt', encoding='utf-8') as file:
print('file: ' + str(file))
## load json data
data=json.load(file)
## get information stored in "elements"
for elements in data['elements']:
if (not "Figure" in elements['Path']) and (not "Table" in elements['Path']):
### text size
if elements['TextSize'] < 20:
print('Page %d : ERROR size of text is too small ' %elements['Page'])
print(elements['Text'])
elif elements['TextSize'] < 24:
print('Page %d : size of text is a bit small. If this text is not main text, it is OK' %elements['Page'])
print(elements['Text'])
色々試してみたが、タイトルかどうかを判別したり、スライドあたりの文字数を数えたり、大きな文字で書かれたメインの主張を抜き出したり、色々できそう。
adobe の有料ツールを使えば、スライドの点検の自動化はできそう
今回は、文字の大きさの確認までを行なった。
だけど、jsonファイルには色々情報が含まれているので、冒頭で述べた確認項目を自動化することは、頑張ればできそう。時間があれば、また報告します。
最後までお読みいただきありがとうございます。私たち大学院生にとっては、多くの人に実情を知ってもらうことがなによりの支援になります。普段の会話やSNSで大学院生について話題にしていただけると大変ありがたいです。