2008-12-10[n年前へ]
■Office付属OCR機能で「板書画像を一発でPPTファイルにするRubyスクリプト」を作る
「ホワイトボード前で打ち合わせをして、打ち合わせ終了時にホワイトボードに書いた板書をプリントアウトして、後でパワーポイント資料を作り直す」といった作業をしたことがある人は多いと思います。あるいは、(印刷機能を持ったホワイトボードは高いですから)「ホワイトボードに板書した内容をデジカメやケータイで撮影しておいて、撮影画像をプリントアウトした後にパワーポイント資料を作ったり」、「撮影画像をモニタ上で眺めながらパワーポイントを作ったりした」ことがある人も多いのではないでしょうか。
そんな人、そんな時のために、Office 2003以降に着いてくる"Microsoft Office Document Imaging"のOCR機能を使って(デフォルト設定ではインストールされないかもしれません)、「板書画像を一発でPPTファイルにするRubyスクリプト」を作ってみました。作ったもの一式をとりあえずここに置いておきます。
たとえばこんな手書きの板書があったら、
ruby imgOCRppt.rb rakugaki.jpgといったようにimgOCRppr.rbスクリプトを呼ぶと、rakugaki.pptというファイルができあがります。この例では私のラクガキ手書き文字が汚いせいで、ずいぶんと文字化けしていますが、達筆な人が描いた板書なら、きちんとしたパワーポイント(PPT)ファイルが(もしかしたら)生成されるかもしれません。
スクリプトの内容は、
require "win32GuiTest" img=ARGV[0] Win32GuiTest.img2PPTbyOCR( img.sub(/\.jpg$/i,'.ppt'), Win32GuiTest.bmp2texts(img), img.sub(/\..?$/i,'') )とい風で、"img2PPTbyOCR"と"bmp2texts"という2つのメソッドからできています。
ちなみに、画像からテキストを抽出するOCR部分("bmp2texts")のRubyソースは、次のようになっています。
def Win32GuiTest.bmp2texts(file) doc=WIN32OLE.new('MODI.Document') doc.Create(file) doc.OCR(17, false, false) # Japanese layout=doc.Images(0).Layout str=doc.Images(0).layout.Text doc.Close return str endそして、この後、 Win32GuiTest.img2PPTbyOCR で画像ファイル名をスライドのタイトルにして、画像ファイルからOCRで抽出されたテキストをスライドのコンテンツ・テキストとして入力・保存する、という内容になっています。