2008-10-19[n年前へ]
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で抽出されたテキストをスライドのコンテンツ・テキストとして入力・保存する、という内容になっています。
2008-12-11[n年前へ]
■「板書画像をベクタライズしPPTファイルにするRubyスクリプト」を作る
「Office付属OCR機能で「板書画像を一発でPPTファイルにするRubyスクリプト」を作る」で、板書画像を文字認識した上で、パワーポイントのファイルに変換するRubyスクリプトを作ってみたわけですが、あまりの悪筆で板書文字をろくに認識してくれなかったりすることも多いと思います。また、板書にイラスト・説明図を頻繁に描くような人も、おそらく少なからずいると思います。
そんな時、「板書画像を自動でベクタライズした上で、パワーポイント上でイラストを再編集することができたら便利だろう」というわけで、「板書画像をベクタライズしPPTファイルにするRubyスクリプト」を作ってみました。その例がjpg2ppt.rbです。
require "win32GuiTest" jpg=ARGV[0] Win32GuiTest.img2PPT( jpg.sub(/\.jpg$/i,'.ppt'), Win32GuiTest.jpg2wmf(jpg), true)という具合でいつものように、処理本体自体は win32GuiTest に(とりあえず)入れてあります。
スクリプトを置いたディレクトリに"apps"という名前のサブディレクトリを作り 、その中にここからダウンロードしたPotraceのバイナリ・ライブラリ類を置いて、さらに、JPG2BMP に入っているバイナリ・ライブラリ類をを置けば準備完了です(win32GuiTestの末尾当たりを見れば、その汚い実装や変更方法がわかると思います)。後は、
ruby jpg2ppt.rb rakugakiv.jpgとスクリプトを呼べば、こんんなパワーポイントファイルができあがります。
PPT(パワーポイント)ファイルに貼り付けられた画像はベタライズされた上で、Windows Meta File形式でスライド上に貼り付けられているので、グループ化を解除していけば、後でベクター部品に分解された板書の再編集が可能、ということになります。
2011-02-05[n年前へ]
■iPhoneデジタル手書きメモSHOT NOTE用「手製メモ用紙&ホワイトボード」を作ってみる
「手書きのメモをデジタル化する」ためのツール、「専用ノート・専用メモ用紙」をiPhoneで撮影して、電子メモ化するというSHOT NOTEをKING JIMが出していました。もちろん、試しに使ってみたくなるわけですが、発売されたばかりですから、専用メモ用紙を手に入れるには、少し時間がかかりそうです。そこで、自作の「(DIY)お手製メモ用紙」を作り、使ってみることにしました。
今度の新作は「デジタルで記録するためのノート」ショットノート。基本的には近頃人気のブロックメモ(写真左)なのですが、四隅にマーカーがあり、専用の iPhoneアプリ「SHOT NOTE App」で撮影することで、台形補正や色補正、サイズ補正を自動的に行います。ノート上部の日付、番号欄についてはOCR処理も行われ、アプリから検索を行うことが可能。
iPhoneで撮影するためのブロックメモ「ショットノート」、キングジムから
「お手製”デジタル”メモ用紙」にラクガキをして、iPhoneアプリケーションで試しに撮影してみると、端部のマーカーをきちんと認識してくれました。マーカーの認識は、想像したよりも調整がシビアで(KING JAMの純正品であれば、調整・認識は楽に行うことができるのかもしれません)、普通にハフ変換で矩形認識をさせた方が(技術的には)シンプルな実装のような気もしますが、ビジネス的な面を考えれば、このくらいがちょうど良いバランスなのかもしれません。
メモを書いた日付なども、”達筆”からはほど遠い私が書いた文字ですが、OCRできちんと読み取ることができ、これは、なかなか便利に思えます。
…しかし、思いついたことを走り書きする時には「”小さな”手帳」にメモしますが、じっくり考える時には、手帳でなく”小さな”ホワイトボードの上にアイデアを描きます。
そこで、自作した「お手製”デジタル”メモ用紙」の上に、透明ボードをはさみ、右の写真のような「”デジタル”スキャニング対応ホワイトボード」を仕立ててみました。その「”デジタル”スキャニング対応ホワイトボード」にラクガキしてみれば、実に簡単にラクガキをデジタル・ドキュメントにすることができました。
しかし、おぼろげに考えます。iPhoneデジタル手書きメモ用の「お手製メモ用紙」も「”デジタル”スキャニング対応ホワイトボード」も便利に使うことができそうですが、「電子化ドキュメント」と「手書きメディア」をもっと違う繋ぎ方ができるような気もするのです。
けれど、それが何なのかがわからない・・・というわけで、とりあえずは「手書きのラクガキ」と「電子化されたラクガキ」の両輪を力一杯押し続けててみようか、と思う今日この頃です。
2011-10-07[n年前へ]
■NTTドコモの文字認識APIトライアル運用
年末(2011年)から半年程度にわたり「トライアル提供」を行うという、(多言語にも対応しているという)NTTドコモの文字認識API。トライアル使用申請は、(ここから行うことができます。
本APIでは、携帯電話で撮影した写真などに含まれる文字や言葉がどのように現れているか解析し、それらの単語を検出することが出来ます。 従来、風景写真のように複雑な画像に含まれる文字の認識は困難でしたが、本APIでは、単語データベースと認識した文字の並びを照合し、文字以外の不要な部分を除去しつつ誤った結果の訂正を行うことで精度の高い文字認識を実現しました。