バーコードを読み取るrubyモジュール

バーコードが写った画像ファイルからバーコードを読み取るモジュールを書いた。実装はlibzebraのラッパになってるだけ。640x480以上あって水平に写ってればEAN値を取得できる。

http://github.com/koyachi/ruby-barcodescanner/tree/master

flashのカメラで入力した画像をサーバに送って解析すれば本棚.orgブクログみたいなサービスの簡単入力フロントエンドとして使えるかと思ってとりあえず動いて見せられるものも作ってたけどeeepc+ubuntu+flash10の環境で640x480キャプチャできなかった。webcamからキャプチャするlinuxのデスクトップアプリでは同じカメラ使って640x480で撮影できるしthinkpad+windows+flashは640x480キャプチャ成功してるのでflashに与えるパラメータが何か足りないかlinuxflashの問題だと思う。ものによっては普段linuxデスクトップ使ってる人なんて無視していいと思うけど原因切り分けできてないのでデモなし。試験に使ったソースはこんな感じflashクライアントはcyazoのとき作ったもののpost先を試験サーバに変えて。

まとめ,関連

  • flash.media.Cameraまわりの制限を要調査
  • flash通すならクライアントで解析すれば->javaの実装を移植するとか
  • en.barcodepedia.com/downloadで公開されてる"opensource"なflash barcode scannerはソースがflaでIDEないと見れない上に見たらこんなかんじで使ってるswcのソースは非公開だった
  • rubyはc拡張書きやすい
  • sinatra簡単


追記 2010-03-20
RubyPulse :: RubyPulse Episode 0.31 - barcodescanner - Retrieve barcode value from barcode image file. - koyachi でaaalexさんが紹介してました。debianにzbarとbarcodescannerインストールする方法も解説してます。barcodescanner作った時点ではlibzebra使ってたんだけど公開してしばらくしたらVishnu Gopalさんからzbar使えっていうパッチが送られて来たので現在はlibzebraでなくzbarを使っています。