QRコードはなぜ少し欠けても読み取れるの?

当ページのリンクには広告が含まれています。
一部が欠けたQRコードと、リード・ソロモン符号によるデータ修復を示すイラスト

QRコードには欠けたデータを補う「誤り訂正」の仕組みがあるから

QRコードには汚れや破損に備えてデータを自動で修復する「リード・ソロモン符号」という技術が組み込まれています。

QRコードが欠けても読めるのは「誤り訂正」があるから

普段何気なくスマホで読み取っているQRコードですが、一部が欠けていたりシールで隠れていたりしても平気で読み取れることがありますよね。あれは偶然ではなく最初から想定された設計です。

QRコードの中には実際のデータとは別に誤り訂正用のコードワードと呼ばれる補助データが埋め込まれています。CDやDVDの読み取りにも使われているリード・ソロモン符号という技術で、欠損した部分を数学的に計算して元のデータを復元する仕組みです。汚れや破損によって一部の情報が読み取れなくても、残ったデータと誤り訂正用のデータを組み合わせることで元通りに復元できるというわけですね。

誤り訂正レベルは4段階から選べる

QRコードの誤り訂正能力にはL・M・Q・Hの4段階があり選択して作成します。レベルを上げるほど誤り訂正用のデータが増えるため、同じ内容を入れるにもより多くのマス目が必要になる場合があります。

マス目が増えたとき1マスの大きさを保てばコード全体が大きくなります。同じ大きさの枠に収めると1マスが小さくなり、読み取りにくくなることがあります。

レベル全コードワードに対する復元率の目安向いている用途
L約7%汚れにくい環境でデータ量を優先したい場合
M約15%一般的な用途(最も普及しているレベル)
Q約25%屋外掲示や汚れやすい環境
H約30%汚れや破損への備えを特に重視する場合

この割合はQRコード内のデータを数える単位「コードワード」全体に対する復元率の目安です。1コードワードは8ビットで、Hの約30%も「画像の面積の30%まで自由に隠せる」という意味ではありません。

工場など汚れやすい環境ではQやHを選び、汚れにくい環境でデータ量を優先したい場合はLを選ぶなど用途に合わせて使い分けます。

参考: 誤り訂正機能について|QRコードドットコム(デンソーウェーブ)


bit(ビット)の意味や1Byte=8bitの関係はこちらの記事で説明しています。

ロゴ入りQRコードが読み取れるのも誤り訂正のおかげ

真ん中にロゴを重ねたQRコードが読み取れるのは隠れたデータを誤り訂正で補える場合があるからです。ロゴで隠した部分にも訂正能力を使うため、あとから付く汚れや傷に対応できる余裕は減ります。Hを選んでもロゴを自由な大きさや位置に置けるわけではありません。

このページのURLをBraveブラウザで作成してみました。真ん中に結構大きめのBraveのロゴがありますね。四角ではなく点字のような丸っぽい感じでもいけるんですね。

中央にBraveのロゴがあり、丸い点で構成されたQRコード
Braveブラウザで作成したこのページのQRコード

QRコードはどこが欠けても読めるわけではない

でもでも誤り訂正で補えるデータには限界があります。欠けた場所や読み取り条件によっては表の割合より小さな破損でも読み取れません。

特に注意したいのがQRコードの3つの角にある大きな四角い模様です。これは位置検出パターンと呼ばれ、スマホや読み取り機にQRコードの位置や向きを伝える目印です。

中央の一部が隠れても読めることはありますが、この角の目印が隠れるとそもそもQRコードとして認識できなくなることがあります。

周囲の余白も読み取りに必要です。一般的なQRコードでは上下左右にそれぞれ4マス分以上の余白を確保します。画像を切り抜くときに余白まで削ったり、すぐ隣に文字や絵を置いたりするとコード本体が欠けていなくても読み取りにくくなります。


メール、ブラウザ、AIなど身近なサービスの仕組みをほかにも知りたい方はIT雑学まとめから関連記事を探せます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!