2013.03.31 · 技術と道具

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すらないレベルなのでまず認識できませんでした。

2013/03/31 17:56
← MacBook Air(Mid 2012)のSSDを240G…
高野山で授戒を受けてきました →
井上 研一
経済産業省推進資格ITコーディネータとして中小企業のDX・AI活用の現場で伴走支援を行う。「ITCプロセスガイドライン4.0」および「中小企業向けAI活用ガイド」執筆メンバー。著書・講演多数。ITエンジニアとして25年以上の実務経験。AI導入の実務に10年以上携わる。自ら開発したAIサービス「Gen2Go」が北九州発!新商品創出事業の認定を受ける。2026年4月より北九州市立大学大学院マネジメント研究科の学生としての顔も持つ。

本サイトおよびブログに掲載している内容は、特に明記のない限り、井上研一個人の見解に基づくものです。所属・関与する組織、団体、企業、研究会等の公式見解を示すものではありません。