iPhoneでバーコードを解析するにはどうするか
1次元バーコードを解析して、その場でAmazonのレビューとか引っ張ってこれると便利そうだとか思い、ここ数日色々試していたのですが、結構ムズイということが判明。現在詰まってるところなのですが、とりあえずメモとしてまとめておきます。
ZXing
携帯端末の開発に特化した1D/2D対応のライブラリです。Javaのライブラリですが、C/C++/C#に一部ポーティングされています。
iPhoneのサンプルコードも付属しているのですが、残念ながら2Dバーコードしか対応していなかったので目的を果たせず。QRコードリーダーを作るならこれで十分そうです。
ZBar bar code reader
探し始めて一番情報が多かったのがこのライブラリ。C/C++で開発されているマルチプラットフォームなライブラリです。1Dのみ対応しているようで、これをターゲットに絞りました。(プロジェクト名称が「zebra ⇒ zbar」に変更されているので古い情報がよく引っかかります)
Macで試す
どんな感じで使えるのか、ZBar bar code reader辺りを参考に、色々オプションを無効にしてインストール。ここはすんなり終了。
$ zbarimg barcord.jpg EAN-13:0525500751509 scanned 1 barcode symbols from 1 images in 0.17 seconds
という感じでバーコード画像を指定するとデコードしてくれます。画像パスの部分にはURLを指定しても大丈夫でした。WEBカメラなどの入力にも対応しているようなので、PC版のアプリを作るならこれで十分使えそうです。
iPhoneで試す
libzebra を使って Objective-C でバーコードを読み取るというエントリーを参考に進めたのですが、やはり実機ビルドでエラー。
同じようなことで詰まっている人は多いもので、iPhone Programming Tips: building Unix softwareによると、iPhoneのARMアーキテクチャ用にクロスコンパイルが必要とのこと。
やり方が分からなかったのですが、iPhone cross compilationに全て記載されていたので何とか実機確認まで到達。ZBarを使った解析方法はHOWTO: Scan images using the API辺りが参考になりました。
でもiPhone3Gでは..
カメラでバーコードを撮影、ZBarで解析するところまで実装できたのですが、iPhone3Gはカメラがオートフォーカスではないのでどうしても画像が不鮮明になり、上手く解析できませんでした(WEBから撮ってきた鮮明な画像は解析できた)。3GSはオートフォーカスらしいので上手く行くのかもしれません。
で、これではリリースしても使い物にならないなー、どうしよーというところで停滞中です。Barcode recognition辺りを参考に画像解析処理を加えれば行けるかもしれませんが、ちょっとしんどそう。こんなライブラリあるけどどう?みたいな情報ありましたら教えて頂けると助かります。
ちなみに、ここら辺をビジネスにしている会社もありました。