2013年5月28日火曜日

QRコードを業務利用する上で陥ったワナ

最大フィールド長でテスト

  • QRコードは情報量が多くなれば大きくなるほど、寸法も大きくなります。
  • 情報量に比例して、読み取り可能性が反比例します。
  • という事で、最も情報量が多くなる状態でQRコードの読み取りテストを実施致します。
  • スキャン画像のワンセルが5ピクセルを下回ると厳しい戦いになる恐れが有ります。
  • そういう場合は独自でQRコードデコーダに手入れしたり等の追加作業が必要になるでしょう。

情報量が多くなると、寸法を大きくしないといけなくなります

  • 弊社の実績では、
    「発注書に印刷しますQRコード(バージョン数24、誤り訂正レベルL)を、
    300 dpi 白黒のPDFスキャンで有効に読み取るには、
    35mm以上の寸法が必要、という結果が得られました。」

用途に向き不向きが有ります

この度採用致しました、zxingの場合…
  • 向いている用途は、携帯電話でQRコードを認識する:
    • カラーCCDカメラ搭載で、カラー画像を使用できる
      • カラー画像は、ピクセル境界を補間する際に都合が良いです。
    • 速度優先、読み取り精度は重視しない実装になっている
      • ストリーミング的な使用に適しています
    • 何度でも画像の角度を変えて読み取りできるので、数十回のうち一回でも認識できたらOk
  • 向いていない用途は、スキャンした画像のQRコードを認識する:
    • モノクロスキャナで読み取り、モノクロ画像しか使用できない。
      • ピクセル境界が補間しにくく都合が悪い
    • 読み取り精度を優先したい、速度は要求されない実装、にはなっていない。
      • 流れ作業(ストリーミング)で、検出→認識 という流れになっている。
      • 検出の段階でミス、例えばバージョン番号の想定間違い等、を起こしたら、後工程は必ず失敗する。
    • 読み取りは一回のみで、一回でも認識できなかったらダメ、な用途には向かない。
      • ストリーミング構造なので、前工程での失敗が許されない、という用途は想定外。

テストデータだけだと、必要項目の漏れに気づきにくいです

  • 納品してから、あの項目、この項目が入っていない、という事が有りました。

空行も想定します

  • 改行でフィールドを区切る場合、フィールドに何も内容が無い場合、つまり空行が有る事も想定します。

QRコード入りの用紙かどうか、判別する方法も検討します

  • QRコード入り伝票が1枚以上有り、更に途中で図面が入ったりとかする場合、
  • QRコードの認識ミスの解釈が複数できてしまう
    • それは図面だ!
    • QRコードを読み取りできなかった。
  • 機械で判別できるようにするには、更に別のバーコードなり、QRコードが必要。
  • 又は、「ページ数/ページ総数」を各ページのQRコードに含むことで、歯抜けが判るような工夫も考えられる。例えば、1/3と2/3があって、3/3がなければ、抜けている、ということは機械的に判別できます。