バーコードリーダー機能をリリースしました。
だいぶ前に最近よく見るロゴ付きQRコードについてというコラムを書きましたが、ついにリリースです。
本機能では、1次元バーコード及び2次元バーコードを読み取って、デコードした文字列を取得することが出来ます。
バーコードってこんなに種類あるの!?ってくらい種類があるのですが、
今回はEAN13とQRコードの例を紹介したいと思います。
バーコードの種類が気になる方はこちら
1次元バーコード | 2次元バーコード |
---|---|
EAN8 | QR |
EAN13 | DataMatrix |
CODE39 | Aztec |
CODE93 | Maxi |
CODE128 | PDF417 |
ITF | - |
CodeBar | - |
UPCA | - |
UPCE | - |
上記バーコードの読み取りに対応しています。
バーコードリーダーは以下から使えます。
EAN13(JAN13)コードを読み取る
-
バーコードリーダータスクの追加
-
EAN13を追加
読み取り結果
「0123456789012」と読み取れました。
QRコードを読み取る
-
バーコードリーダータスクの追加
-
QRを追加
読み取り結果
「https://menou.co.jp/」と読み取れました。
本機能は1つの解析領域につき、1つのコードしか読み取れないので、
複数のバーコードを読み取りしたい場合は事前にバーコード領域を検出する必要があります。
複数のQRコードを読み取る
-
バーコードリーダータスクの追加
-
QRを追加
読み取り結果
1つだけ「https://menou.co.jp/」と読み取れましたが他の3つは読み取れませんでした。 -
QRコード検出用の領域検出を追加
-
QRコード検出アノテーション及び学習
ここでは結果だけ表示します。
-
複数QRコード読み取り用のバーコードリーダーを追加
-
QRを追加
これで4つ全て読み取れました。
バーコードリーダータスクでは、パラメータとして
- リサイズ
- 検出時に終了
というものを用意しています。
これはどちらも処理の高速化用途で設定します。
リサイズ無し時の処理時間が34msとなっています。
以下は画像サイズ3498x3498に対しての速度一覧表です。
リサイズ | 処理時間[ms] |
---|---|
- | 34 |
1/2 | 12 |
1/4 | 6 |
1/8 | 3 |
1/16で1つだけ読み取りに失敗しました。
またどのバーコードが来るか不明な状態で検出時に処理を終了して以降の処理を中断したい時は、
検出時に終了にチェックを入れます。
以下のようにあらゆる2次元コードを認識しようとすると、199msもかかってしまいます。
ここで、QRの検出時に終了にチェックを入れると、各領域でQRを見つけた後に以降の処理を行わないので、37msせ処理が完了します。
最後に検査設定ですが、デコード結果の文字列のチェックと検出した数を設定できます。
現段階では、読み取り可能なバーコードがいくつあるか、必ず入っているはずの文字列が存在するか等の検査は可能だと思います。
これ以上複雑な検査を行う場合には、印字されているはずのデータベース等との連携が必要になると思います。
今後、現場で稼働するために必要な機能の追加も行っていきたいと思いますので、
ご要望がある方はコメントしていただけると幸いです。