QRコードには汚れや破損に備えてデータを自動で修復する「リード・ソロモン符号」という技術が組み込まれています。
QRコードが欠けても読めるのは「誤り訂正」があるから
普段何気なくスマホで読み取っているQRコードですが、一部が欠けていたりシールで隠れていたりしても平気で読み取れることがありますよね。あれは偶然ではなく最初から想定された設計です。
QRコードの中には実際のデータとは別に「誤り訂正用のコードワード」と呼ばれる補助データが埋め込まれています。CDやDVDの読み取りにも使われているリード・ソロモン符号という技術で、欠損した部分を数学的に計算して元のデータを復元する仕組みです。汚れや破損によって一部の情報が読み取れなくても、残ったデータと誤り訂正用のデータを組み合わせることで元通りに復元できるというわけですね。
誤り訂正レベルは4段階から選べる
QRコードの誤り訂正能力には L・M・Q・H という4つのレベルがあり、作成時にどのレベルにするか選ぶことができます。レベルを上げるほど復元できる範囲は広がりますが、その分コード自体のマス目が細かくなりサイズも大きくなります。
| レベル | 復元できる目安 | 向いている用途 |
|---|---|---|
| L | 約7% | 汚れにくい環境でデータ量を優先したい場合 |
| M | 約15% | 一般的な用途(最も普及しているレベル) |
| Q | 約25% | 屋外掲示や汚れやすい環境 |
| H | 約30% | ロゴ入りQRコードや過酷な環境 |
この数値は「コード全体に対する復元率」の目安です。用途に応じて工場のようにコードが汚れやすい環境ではQやHを、データ量を優先したい場合はLを選ぶ、というふうに使い分けられています。
参考: 誤り訂正機能について|QRコードドットコム(デンソーウェーブ)
ロゴ入りQRコードが読み取れるのも誤り訂正のおかげ
QRコードで真ん中にロゴが入っているものをよく見かけますよね。あれもこの誤り訂正機能を利用したもので、多くの場合レベルHで作成し「ロゴの部分は破損している」とみなして復元させています。隠れてしまう部分がある前提で、あらかじめ余裕を持たせて設計しているんですね。
このページのURLをBraveブラウザで作成してみました。真ん中に結構大きめのBraveのロゴがありますね。四角ではなく点字のような丸っぽい感じでもいけるんですね。

QRコードはどこが欠けても読めるわけではない
でもでも誤り訂正にも限界はあります。破損の量が選んだレベルの復元率を超えると、さすがに元のデータには戻せません。
特に注意したいのが、QRコードの3つの角にある大きな四角い模様です。これは「位置検出パターン」と呼ばれ、スマホや読み取り機にQRコードの位置や向きを伝える目印です。
中央の一部が隠れても読めることはありますが、この角の目印が隠れるとそもそもQRコードとして認識できなくなることがあります。
身近なIT用語の「なんで?」をゆるく知りたい方はIT雑学・ぷちQAカテゴリもあわせてどうぞ。






