個人名刺作成のためにQRコードを作成したものの、作成されたQRコードの誤り訂正レベル(エラー訂正レベル)を調べる方法がわからず、困りました。
個人名刺作成のためにQR Code メーカーでQRコードを作成して読み取りテストは問題なくクリアしたものの、どの誤り訂正レベル(エラー訂正レベル)で作成されたのかがわからず非常に気になったので、調べることにしました。
QRコードのチェックを行うアプリを探したものの見つけられなかったので、ネットで調べたところ、何件か参考になるサイトがありました。ただ原典まで遡らないと気がすまないので、最終的に規格を直接読んで調べました。
QRコードはJIS、ISOなどで規格化(QRコードの規格化・標準化)されており、特に以下の番号・名称でJIS化されたものはネットで無料で閲覧可能です。(印刷・保存はできません。)
規格番号: JISX0510
規格名称: 情報技術-自動認識及びデータ取得技術-QRコード バーコードシンボル体系仕様
閲覧方法ですが、日本工業標準調査会のサイトを開き、JIS検索の「JIS規格番号からJISを検索」でX0510を検索すれば、出てきます。
本題に戻って、QRコードの誤り訂正レベルは以下の4種類があります。
誤り訂正レベルL 復元能力約7%
誤り訂正レベルM 復元能力約15%
誤り訂正レベルQ 復元能力約25%
誤り訂正レベルH 復元能力約30%
復元能力約7%とは、約7%までなら情報が欠落しても復元できるという意味です。
誤り訂正レベルの情報は、QRコードの形式情報(format information)の中に格納されています。形式情報は15ビット長あり、2か所(下記の水色および黄色のエリア)にあります。2か所ありますが、情報自体はどちらも同じです。
誤り訂正レベルの情報(誤り訂正レベル識別子)は、形式情報全15ビットの中のビット14とビット13に格納されており、以下のようになっています。
誤り訂正レベルL 01
誤り訂正レベルM 00
誤り訂正レベルQ 11
誤り訂正レベルH 10
ただし印刷されているQRコード上では形式情報はマスク処理されているため、印刷されたQRコード上の値がそのまま上記の誤り訂正レベルを示すわけではないことに注意する必要があります。
実際に調べてみましょう。本ブログのURLを示すQRコードです。
前述の水色もしくは黄色エリアの形式情報を見ると、以下のように読み取れます。
■□(ビット14が■、ビット13が□)
暗い部分(黒)は1、明るい部分(白)が0なので、この場合「10」となります。
この10はマスク処理された値なので、マスク処理を解除するため、10とXOR処理します。10と10のXOR処理で、結果は00となります。この00が誤り訂正レベル識別子となり、誤り訂正レベルはM(復元能力約15%)となります。
他の場合も含めてまとめると、以下のようになります。
■■ 誤り訂正レベルL(復元能力約7%)
■□ 誤り訂正レベルM(復元能力約15%)
□■ 誤り訂正レベルQ(復元能力約25%)
□□ 誤り訂正レベルH(復元能力約30%)
最後におまけです。あるもののQRコードを作成しました。■■(ビット14、ビット13どちらも■)なので、誤り訂正レベルL(復元能力約7%)です。非常に巨大なQRコード(バージョン40)ですが、なんでしょう? QRコードリーダーによっては読み取りができないかもしれませんが、デンソーウェーブ公式のQRコードリーダー”Q”では読み取りができました。