画像からバーコードのスキャンを行うzebraimg

USのAppleScript Users MLで、スキャンした画像からバーコードの認識を行うソリューションはないかという質問があった。こういう場合に、

(1)AppleScriptに対応しているバーコード認識ソフトがないか?
(2)AppleScriptに対応しているソフトで、バーコード認識機能を持つものはないか?
(3)UNIXのコマンドラインから使えるソフトで、バーコード認識機能を持つものはないか?

という順序で探すことになる。コマンドラインから利用するソフトでは、ユーザーインタフェースの乏しさから常用するのはつらいところだが、AppleScriptから利用する分には逆に情報の受け渡しを行いやすい。ただ、他のライブラリやプログラムに機能が依存していたり、実行バイナリ単体での配布を行いづらい構成になっている可能性が高く、「作りやすく配布しにくい」ソリューションになる。


以前、ドキュメントスキャナから読み取った画像の一部から自動的にバーコードを読み取れないかと調査したことがあったのだが、その時にはなかなかいいアイデアが出てこなかった。

今回、あらためて調査を行ったところ……「画像からバーコード読み取り」を行うコマンドラインのプログラムは、割とありふれた存在であることが分かった。sourceforgeにまんまそのままの機能のプログラム「Zebra Barcode Reader」が転がっていたぐらいだ。


ムービーからバーコードの認識を行うというのが本来の機能らしいのだが、ビルドすると静止画像からバーコードの認識を行うプログラム「zebraimg」も入っていた。静止画像から認識するzebraimgだけあれば十分だ。

画像処理系のライブラリをあらかじめFinkインストーラでインストールしてあげないと、明確なメッセージなしにビルドが停まったりで少々手間取ったが、怪しそうな画像処理ライブラリをしらみつぶしにインストール。なんとかビルドできるようになった。

手元でいろいろとありものの画像を認識させてやろうとしたのだが、前処理をしてから画像をzebraimgに渡してあげないといけないようだ。解像度の調整や、2値画像にしてあげるとか、ブライトネスやコントラストの調整、関係のない領域のトリミングなどなど、ベストの状態を整えるための前処理は欠かせないものとなるだろう。

ただ、印刷物(アンケート記入票など)をスキャンして認識するといった用途であれば、まあそんなもんだ。

maroMBook:/usr/local/bin user1$ ./zebraimg /Users/user1/Desktop/ean1.gif
EAN-13:123456767890

バーコード入り画像ファイルのパスを渡して実行すると、バーコードのフォーマットとデータが返ってくるようだ。EANは読めるのにCode 3 of 9を読んでくれないとか、いろいろクセもある(ドキュメントをよく見ると、EAN/UPC/Code 128のみ対応と書いてある。Code 3 of 9もぜひほしい……)。

同様のツールを探してみるなり、今後のバージョンアップを見守るなどしていきたいところだ。Zebra Barcode Readerのフォーラムに「Code 3 of 9のサポート希望」の投稿がとっくの昔にあった。やる気になれば、とっくにやっている頃……というところか。


■Cocoa Barcode Recognition 

こんなのもあるのか。しかし、Xcode 2.5でビルドできないのは何故?(ーー;;

Copyright By Piyomaru Software. All Rights Reserved