QRコードは一部が汚れても読めるのはなぜ? 誤り訂正と情報の余白を調べる

ポスターに印刷されたQRコードの角が折れていても、スマートフォンで読めることがあります。一方、少しだけ線がかすれただけで読めなくなるQRコードもあります。同じような白黒の模様なのに、何が違うのでしょうか。

鍵になるのは誤り訂正です。QRコードには、読み取りたい文字やURLに関係する情報だけでなく、読み取り時の誤りを直すための情報も入っています。ただし、どこをどれだけ隠しても読めるという意味ではありません。

黒い四角は文字を一字ずつ描いているわけではない

QRコードを近くで見ると、小さな黒と白の四角が縦横に並んでいます。この一つひとつを「モジュール」と呼びます。

私たちが目にする文字やURLは、そのまま小さな漢字の形で入っているわけではありません。読み取る情報を決められた形式の数値の並びに変え、さらに読み取りのための模様を配置します。

三つの角に見える大きな四角の組み合わせは、位置を見つけるための目印です。これがあるため、読み取り機はコードの向きや位置を推定しやすくなります。小さな四角は全部が同じ役割なのではなく、位置合わせ・形式情報・データ・誤り訂正などに分かれています。

そのため「模様の30%を隠したから、残り70%で読めるはず」と面積だけで判断することはできません。どこが損なわれたのかによって結果が変わるからです。

誤りを『見つける』だけでなく『直す』仕組み

たとえば友達に数字の列を伝えるとき、数字そのものに加えて確認用の情報も付けることを想像してください。受け取った数が少し違っていても、追加情報と照らせば、ある範囲の誤りを発見できます。

さらに工夫して追加情報を作れば、誤りが少数なら元のデータを復元できるようになります。QRコードで使われている「リード・ソロモン符号」は、そのような誤り訂正を行う方法の一つです。

ここで大切なのは、元データのすべてを何回も丸ごとコピーするわけではないという点です。複数のデータから計算された情報を追加し、破損があったときに数式で訂正できるようにしています。スマートフォンが人間の目で欠けた文字を想像しているわけではありません。

復元できる割合は4段階から選べる

QRコードの標準的な誤り訂正レベルは4種類あります。作成時に選ぶもので、読み取り中にスマートフォンが勝手に強さを変更するわけではありません。

レベル 訂正できる割合の目安
L 約7%
M 約15%
Q 約25%
H 約30%

この割合は、データを構成するコード語(コードワード)についての目安です。画像の面積の30%を黒く塗ってよいという保証ではありません。汚れた位置やまとまり方、印刷の鮮明さ、読み取り機の状態にも左右されます。

訂正を強くするには、そのための情報を多く入れる必要があります。同じ長さのURLを記録する場合、訂正能力を高めると、より大きいQRコードが必要になる場合があります。頑丈さと情報量には交換条件があるのです。

紙で試すなら、条件を一つずつ変える

自分が管理している短い文字列からQRコードを作り、同じ大きさで印刷してみましょう。最初は何も隠さず読めるかを確かめます。その後、紙の小片でごく一部を隠し、読み取り結果が変わるか観察します。

比べる条件は、少なくとも次の三つに分けられます。

  1. 同じ場所を隠し、隠す大きさを変える。
  2. 同じ面積を隠し、隠す場所を変える。
  3. 元データと大きさをできるだけそろえ、誤り訂正レベルを変える。

三つを同時に変えると、なぜ読めなくなったのか分かりにくくなります。「Hのほうが強い」という結果が出ても、印刷サイズやスマートフォンの距離が違っていたら、それだけで原因を決められません。

また、公共の掲示物や他人のQRコードを汚す実験は避け、自分で作った紙だけを使ってください。QRコードのリンク先が安全かも、読み取った模様の正しさとは別の問題です。

大きな中央ロゴがあるQRコードは必ず安全?

商品広告では、中央に絵やロゴを重ねたQRコードを見かけます。誤り訂正があるおかげで、模様の一部が見えなくても読めることがあります。

しかし、ロゴで重要な領域を隠したり、白黒のコントラストが弱くなったりすると、誤り訂正の余裕が残っていても読み取りにくくなります。一度読み取れたことと、誰のスマートフォンでも安定して読めることは別です。

もし印刷物を作るなら、作成後に実物サイズで試し、機種・明るさ・角度を変えて確認することが大切です。画面上で拡大して読めても、小さな紙に印刷すると失敗する場合があります。

読み取れることと、正しい相手に接続することは別

ここで、QRコードの信頼性をもう一段分けてみましょう。読み取り機が汚れた模様からURLを正確に復元できたとしても、そのURLの行き先が安全だとは限りません。誤り訂正は、あくまで「コードに記録されている情報を読み戻す」ための仕組みだからです。

例えば、知らない人が掲示物の上に別のQRコードのシールを貼った場合、スマートフォンは貼られた方を正しく読み取るかもしれません。これは誤り訂正の失敗ではなく、記録された情報自体が別物になっている問題です。読み取り後に表示されるURLや操作内容を確かめる必要があります。

このように「壊れた情報を直せるか」「情報が本来の発信者のものか」「リンク先で安全に使えるか」は、それぞれ別の問いです。一つの仕組みを万能だと思わず、何を守る仕組みなのか確かめてみましょう。

まとめ|余分な情報があるから、少しの傷に耐えられる

QRコードが一部欠けても読めるのは、データの周りに誤り訂正用の情報が組み込まれているからです。ただし、訂正できる量には限度があり、損傷した場所にも依存します。

身近なQRコードから学べるのは、情報を効率よく保存するだけでなく、間違いが起きる前提で復元の仕組みを用意するという考え方です。データのバックアップや通信の信頼性を考えるときにも役立ちます。

参考資料

おすすめの記事