PhoneGapでZBarを使ってバーコードスキャン(但しiOS)


another library app using the camera and bar code scanning / jon crel

iPhoneアプリでバーコードスキャンをする必要があったので、いろいろ調べて実装したりしていたのですが、その経過でちょっとGitHubにコードを上げたりしたのでシェアしたいと思います。

バーコードスキャンを一から実装するというのはあり得ないので、ありもののライブラリを使うわけですが、調べてみるとそのライブラリはZXing(Zebra Crossing)ZBarの2つに絞られるようです。

対応しているバーコードのタイプは、それぞれの公式サイトを見る限りZXingの方が多いようですが、どちらもQR Code、EAN-8/13、UPC-A/E、Code39といった辺りには対応しています。

私はいまPhoneGapでHTML5を使いながら開発を進めているので、PhoneGapプラグインを探してみると、BarcodeScannerというプラグインがありました。
BarcodeScannerプラグインはZXingのライブラリを使っています(プラグインに内包されています)。

PhoneGapを使うメリットは、iOS、Android・・・とマルチデバイスのアプリをシングルコードで書けることだと思いますが、バーコードスキャンとなるとどうしてもバイナリのライブラリを含まないといけないので、OSに依存してしまいます。
ただ、BarcodeScannerプラグインはiOS、Android、WindowsPhoneといった複数のOSで同じプラグインが出ているので、マルチデバイス対応のメリットをスポイルしません。

というわけで、最初はこのプラグインを使って開発を進めていたのですが、どうもバーコードの認識率が悪い。QRやJAN(EAN)はそこそこ認識するのですが、Code39が相当厳しい。

仕方がないので、もう一方のライブラリであるZBarを使ったPhoneGapプラグインを探してみたのですが、どうも見当たらない。
いや、なくはないのですが、どうも組み込めない。

そこで、iOS向け限定ですが、ZBarを使うPhoneGapプラグインを書いてみました。
実際に認識させてみると、Code39も問題ない速度で認識します。
最低限のコードだけですが、GitHubに上げておきました。

ちなみに、いろいろと試してみると、バーコードスキャンの認識率はカメラの性能にかなり影響を受けることが分かりました。
iPhone5のカメラは800万画素なので問題なし。iPad 3rdやiPad miniも500万画素なのでこれも問題なし。しかし、iPad2やiPod touch 4thといったあたりはAFすらないレベルなのでまず認識できませんでした。

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。画像認識モデルを活用したアプリや、生成AIを業務に組み込むためのサービス「Gen2Go」の開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。