EasyQRCode - QRコードの読み取り
EasyQRCodeは画像に含まれるQR(クイックレスポンス)コードを検出し、解読してそのデータを返します。
エラー検出および補正アルゴリズムにより、印字品質の低い/歪んだQRコードでも正しく読み取れます。

QRコードとは、暗い色と明るい色のドットが正方形に配列されたコードです。1つのドット(または「モジュール」)は1ビットの情報に相当します。
QRコードにはさまざまなデータが含まれており、異なるモデル、バージョン、レベルがあります。いずれの場合も必ず、メッセージ、アライメントに関するメタデータ、サイズ、フォーマット、誤り訂正ビットが含まれています。そして、国際規格ISO/IEC 18004(1、2および2005)に準拠しています。

QRコードシンボルは、データや誤り訂正コード語を含む符号化領域と、シンボルのメタデータおよび位置データを含む機能パターンから構成されます。
QRコードは以下の要素によって構成されています:
- クワイエットゾーン:QRコードの周囲にある空白の部分
- ファインダーパターン:QRコードの位置を認識するためのゾーン
- 拡張パターン:QRコードのアライメント用マーカー(モデル1)
- アライメントパターン:QRコードのアライメント用マーカー(モデル2および2005)
- タイミングパターン:モジュールサイズ(ピクセル単位)を決めるデータ
- 形式情報:QRコードレベルを表すゾーン
- 型番情報:QRコードサイズ(例えば25 x 25モジュールなど)を表すデータ(モジュール2および2005)
- データの内容と誤り訂正コード語:シンボルが伝える一次情報と誤り訂正用の追加情報
QRコードのモデル、形式、型番に応じて構成は変化します。例えば、モデル1のQRコードにはアライメントパターンはありませんが、拡張パターンはあります。マイクロQRコードにはファインダーパターンが1つだけ含まれ、アライメントパターンはありません。EasyQRCodeではすべてのQRコードを読み取れます。
モデル1のQRコードシンボルの構成
QRコード2005シンボルの構成
マイクロQRコードシンボルの構成

QRコードは次のデータの組み合わせに対応しています:
- 数字データ (0~9)
- アルファベットデータ(0~9、A~Z、/、$、%など)
- バイトデータ
- 漢字

- モデル1:最初に作られた国際規格のQRコード。型番は1~14。
QRコードの「型番」(version) とはシンボルサイズ(モジュール数で表す)のことですので注意してください。規格のバージョンは「モデル」と呼ばれています。 - モデル2:モデル1の改良版。1~40の型番があります。歪んだQRコードや曲面に印字されたQRコードの読み取りを改善するためのアライメントパターンが定義されます。
- モデル2005:モデル2の改良版。黒地に白のQRコード、シンボルのミラー反転に対応。
- マイクロQRコード:(現時点では未対応)小型のQRコード。型番M1~型番M4まで。印字スペースを小さくするために導入されました。

- QRコード:型番1(21 x 21モジュール)から型番40(177 x 177モジュール)。+4 x +4モジュールずつ増加(型番2:25 x 25モジュール、型番3:29 x 29モジュール、...、型番39:173 x 173モジュール)。
- マイクロQRコード:(現時点では未対応)型番M1(11 x 11モジュール)、型番M2(13 x 13モジュール)、型番M3(15 x 15モジュール)、型番M4( 17 x 17モジュール)。
QRコードの例
左から右へ:
マイクロQRコード、型番M3、15 x 15モジュール、
モデル2のQRコード、型番4、33 x 33モジュール、67~114文字、
モデル2のQRコード、型番40、177 x 177モジュール、1852~4296文字

QRコードには誤り訂正データが含まれています。誤り訂正レベルには以下の4段階あります:
- L (low):コード語の約7%が復元可能
- M (medium):15%
- Q (quality):25%
- H (high):30%(マイクロQRコードでは不可)

QRコードリーダーが、QRコードに適合するかもしれないドット配列を見つけると、そのQRコードの候補の「形状」が返されます。
QRコードの形状は複数の点で表されます。それは、QRコードの四辺形のコーナー(左下、左上、右上、右下)の座標と、ファインダーパターンセンター(左下、左上、右上)の座標です。
QRコードの形状


-
QRコードリーダーはQRの候補をデコードして、QRコード(モデル、型番、レベル、形状、デコードされたデータストリーム)を返します。
デコードされたストリームクラスは、コードモード(基本、FNC1/GS1、またはFNC1/AIM)、とアプリケーションインジケータ(コードモードがFNC1/AIMの場合、それ以外の場合は0)から構成されます。デコードされたデータは、そのエンコードに応じて(数字、アルファベット、バイトまたは漢字)、デコードされたストリームのどの部分からでもアクセスできます。生ビットストリーム(アンマスクおよび誤り訂正の後、しかしバイトのベクトルとしてデコードする前のビットデータ)を得ることもできます。
- リーダーが未使用の誤り訂正の数量を報告します。
- 1に近い場合、データのデコードの際に訂正されたデータが非常に少ないです。デコードの信頼性が高く、QRコードが高品質である。
- 0に近い場合、データのデコードの際に多くの誤りが訂正されています。デコードは信頼できますが、QRコードは低品質です。
- -1の場合、誤り訂正が失敗しています。デコードは行われていません。

スキャン精度:サーチ領域をスキャンするときのスキャン精度を細かい(小さいQRコードに推奨)または粗い(中程度から大きいQRコードに推奨)精度に変更できます。
最少スコア:QRコードリーダーはこのQRコードファイルダーパターンを探索します:
完全な一致の場合は、パターンファインダースコア1が返されます。
一致の精度が下がると、低いスコアが返されます。
デフォルトの許容最小スコアは0.65です。この値は変更できます。
最小等方性:QRコードの等方性は、長方形の変形の程度を表します。
完全な正方形のQRコードの等方性は1です(長方形が縦長または横長であっても短辺を長辺で除算)。
EasyQRCodeでは等方性が0.5未満の長方形のQRコードを検出できます。デフォルトの最小等方性は0.8ですが、この値は0~1の間で調整できます。
正方形と長方形のQRコード(左から右へ、等方性 = 1、0.5、0.5)
モデルと型番:QRコードリーダーは、あらゆるモデル、あらゆる型番のQRコードを探索します。
探索対象のQRコードのモデルや型番範囲(1~40)を指定することで、処理時間を短くすることができます。