QRコードは、なぜ一部が汚れても読み取れるの?
― 情報を「わざと」増やしています
濡れて一部がにじんだレシートのQRコードや、中央にロゴが重なったQRコードでも、スマートフォンでスキャンすると、あっさり読み取れることがあります。マスの模様の一部が欠けているのに、なぜ正しい情報にたどり着けるのでしょうか。その秘密は、あらかじめ「余分な情報」を埋めこんでおく、誤り訂正というしくみにあります。
お店のポスターやチラシに印刷されたQRコードの中央に、お店のロゴマークが重ねて印刷されているのを見たことがあるかもしれません。マスの模様の一部が、ロゴで完全に隠れているのに、スマートフォンで読み取ると、ちゃんと正しいウェブサイトにつながります。
紙のQRコードが雨や汗でにじんでしまったり、少し破れていたりしても、読み取れることがあります。
情報の一部が物理的に失われているのに、なぜ元の情報を復元できるのでしょうか。
本来の情報に加えて、「誤りを見つけて直すための情報」を、最初から埋めこんでいます。
読めなくなった部分があっても、数学的な計算によって、元の情報を復元できる仕組みになっています。
この「あえて情報を増やす」という発想を、順を追って見ていきます。
QRコードには、あらかじめ「余分」が仕込まれています
QRコードは、白と黒のマス(モジュール)の並びで情報を表しています。この中には、本来伝えたい情報(URLや文字など)だけでなく、「誤り訂正符号」と呼ばれる、余分なデータもいっしょに埋めこまれています。
QRコードには4段階の誤り訂正レベルがあり、レベルが高いほど、余分なデータの割合が増える代わりに、より多くの汚れや欠損に耐えられるとされています。もっとも高いレベルでは、コードを構成するデータのうち、およそ3割程度が壊れても、元の情報を正しく復元できると説明されています。
一部が読めなくても、残りから逆算できます
QRコードの誤り訂正には、リード・ソロモン符号と呼ばれる数学的な方法が使われています。くわしい計算のしくみは高度な数学(多項式や有限体という考え方)を使いますが、基本的な発想はシンプルです。
本来のデータに対して、「決まった計算式にもとづいて作られた、余分な数値の並び」を追加しておきます。読み取るときに、この余分な数値と、実際に読み取れたデータを照らし合わせることで、「どこが、どのように壊れているか」を数学的に特定し、正しい値に置きなおすことができます。
いわば、答え合わせのための「予備の手がかり」を、最初から一緒に持ち歩いているようなものです。
むしろ、あえて情報を増やすことで、壊れへの耐性を手に入れています。
なぜ、位置を示す3つの四角がついているのか
QRコードの3つの角に、大きな二重の四角形(位置検出パターン)が必ずついています。これは、誤り訂正とは別の役割を持つ工夫です。
スマートフォンのカメラは、QRコードを斜めから撮影したり、回転した状態で撮影したりすることがよくあります。この3つの四角形を目印にすることで、スキャンするソフトウェアが、コードの向きや傾き、大きさを正確に把握できるとされています。「情報を復元する誤り訂正」と「向きを把握する位置検出」の、2つの工夫が組み合わさって、多少の乱れがあっても読み取れる頑丈さが生まれています。
なぜ、あらかじめ「余分」を用意しておく必要があるのか
もし、誤り訂正のしくみがまったくなかったら、どうなるでしょうか。QRコードを構成する小さなマス1つ1つが、それぞれ独立して「正しく読み取れるか、読み取れないか」を左右します。マスの数が多いコードほど、「すべてのマスが正しく読み取れる」確率は、かけ算的にどんどん低くなっていきます。実際にどれくらい低くなるのか、次の折りたたみで数字を使って確かめます。
誤り訂正のレベルがどれだけ高くても、壊れた部分の割合が、そのレベルの許容範囲を超えると、正しく復元できなくなります。QRコードにロゴなどを重ねる場合は、誤り訂正の余力を十分に残せる範囲にとどめることが基本とされています。
自分で確かめられること
- 手元にあるQRコード(レシート、チラシ、名刺など)を探す
- 付せんや指で、コードの一部(3割程度まで)を隠して、スマートフォンで読み取れるか試す
- 隠す位置や面積を変えながら、どこまで隠すと読み取れなくなるかを確かめる
- 3つの角にある四角い模様は隠さないようにして試すと、読み取りやすさがどう変わるかも比べてみる
隠す面積が小さいうちは問題なく読み取れても、ある割合を超えると急に読み取れなくなるはずです。これが、誤り訂正の「許容範囲」を体感する方法です。
まとめ
QRコードが多少の汚れや欠損に強いのは、あらかじめ「誤り訂正符号」という余分なデータを埋めこんでおき、壊れた部分を数学的な計算で復元できるようにしているからです。あわせて、3つの位置検出パターンが、コードの向きや傾きを正確に把握することも、頑丈さを支えています。情報を減らすのではなく、あえて増やすことで、壊れに強くするという発想が、この技術の核心です。
QRコードの頑丈さは、運の良さではありません。
あらかじめ用意された、数学の「保険」です。
もっと知りたい人へ ― 用語・数値・教科書とのつながり中学理科から研究中の話題まで、どのレベルの話かを明示しています
- 中学中学校の数学・技術で習う範囲
- 高校高校の「数学A」で習う範囲
- 高校+高校の「情報」、または教科書の発展・コラム扱いの内容
- 大学高校では習わない、大学の専門科目(情報理論・符号理論)の内容
- 研究大学でも「定説」として教わらない、いま研究者が調べている最中の話
中学用語:QRコードをめぐる言葉
- モジュール:QRコードを構成する、白・黒の小さな正方形の1マス。
- 誤り訂正符号:データが壊れたときに、元の内容を復元するために、あらかじめ追加しておく余分なデータ。
- 冗長性:本来必要な量より多く情報を持たせること。誤り訂正の余分なデータも、冗長性の一種です。
高校式で確かめる:誤り訂正がないと、成功率はどれだけ下がるのか
1つ1つのマスが正しく読み取れる確率をかけ合わせていくと、マスの数が増えるほど、全体が正しく読み取れる確率は急激に下がっていきます。この「かけ算的に下がっていく」感覚を、数字で確かめます。
全体が正しい確率 = 1マスが正しい確率 を、マスの数だけかけ合わせたもの
| 1マスが正しく読み取れる確率 | ここでは、たとえとして 0.9(90%)とします |
| マスの数 | ここでは、たとえとして 10マスとします |
誤り訂正のしくみがなければ、「すべてのマスが同時に正しく読み取れて、はじめて成功」になります。1つでも間違えると失敗です。
| 2マス分(0.9 × 0.9) | 0.9 × 0.9 = 0.81 |
| 4マス分(2マス分どうし) | 0.81 × 0.81 ≒ 0.6561 |
| 8マス分(4マス分どうし) | 0.6561 × 0.6561 ≒ 0.4305 |
| 10マス分(8マス分 × 2マス分) | 0.4305 × 0.81 ≒ 0.3487 |
| 10マスすべてが正しい確率 | 約 34.9% |
1マスあたりの正しさが90%もあるのに、わずか10マス集まっただけで、全体が正しく読み取れる確率は約35%まで下がってしまいます。実際のQRコードは、これよりずっと多くのマスでできています。誤り訂正のしくみがなければ、実用に耐えないほど読み取り成功率が下がってしまうことが、この計算からもわかります。
※ ここでの90%・10マスという数値は、しくみを理解するためのたとえです。実際のQRコードの読み取り精度やマス数とは異なります。
かりに、あるQRコードが合計200個のデータのかたまり(符号語)でできていて、誤り訂正レベルが約30%の壊れに耐えられるとします。
| 耐えられる壊れの数 | 200 × 0.30 = 60 |
| 耐えられる壊れの数 | 約 60個分 |
この例では、200個のうち60個ぶんが壊れても、残りの情報と誤り訂正符号を使った計算で、元のデータを復元できるという見積もりになります。①②で見た「かけ算的に下がっていく」弱さを、この余分なデータが埋め合わせているというわけです。
※ 200個・30%という数値もたとえです。実際の符号語の数や訂正できる割合は、QRコードのサイズや誤り訂正レベルによって異なります。
高校+「訂正」と「検出」は、別の能力です
誤り訂正符号には、「壊れたことに気づくだけの能力(誤り検出)」と「壊れた場所を特定し、正しい値に戻す能力(誤り訂正)」という、レベルの異なる2つの能力があります。一般に、同じ量の余分なデータでも、訂正まで行うには検出だけの場合よりも多くの手がかりが必要とされています。QRコードの誤り訂正符号は、単に壊れを検出するだけでなく、実際に元の値を計算で求め直せる、より強力な方式を採用しています。
大学リード・ソロモン符号という考え方
QRコードで使われるリード・ソロモン符号は、データを、ある特殊な数の体系(有限体)上の多項式として表すという考え方にもとづいています。壊れた部分は、この多項式の値が本来の形からずれている場所として扱われ、連立方程式を解くような手続きによって、ずれの位置と正しい値を同時に特定できるとされています。この方式は、QRコードだけでなく、CDやDVD、宇宙探査機との通信など、データの欠損が避けられない多くの場面で使われている、応用範囲の広い技術です。
研究まだ、はっきりしていないこと
- 誤り訂正の能力を高めるほど、埋めこむ余分なデータの量が増え、本来のデータを入れられる余地が減るというトレードオフがあります。用途に応じて、この配分を数学的にどこまで最適化できるかは、符号理論という分野で今も研究が続いているテーマです。
- 近年注目される量子コンピューターの通信や記憶装置においても、独自の誤り訂正のしくみ(量子誤り訂正)が必要とされていますが、従来の誤り訂正符号とは異なる制約があり、実用的な方式の確立に向けた研究が世界中で進められているとされています。
- 画像認識の技術を使って、より汚れや歪みに強いコード読み取り方法を作る研究も行われていますが、誤り訂正符号のような数学的な保証(どこまで確実に復元できるかの理論的な裏づけ)を、どこまで両立できるかは、引き続き検討されている段階です。
誤り訂正の考え方は、QRコードだけでなく、通信や記憶装置など、情報を確実に届け、残すための技術全般を支えています。
教科書とのつながり(レベル別)
| レベル | 科目・単元 | この記事のどこ |
|---|---|---|
| 中学 | 数学・技術/情報 | モジュール・誤り訂正符号・冗長性の基本用語 |
| 高校 | 数学A・確率 | 独立した事象の確率のかけ算から、成功率の低下を見積もる計算 |
| 高校+ | 情報・情報デザイン | 誤り検出と誤り訂正の違い |
| 大学 | 情報理論・符号理論 | リード・ソロモン符号、有限体上の多項式 |
| 研究 | 符号理論・量子情報(研究中) | 誤り訂正能力とデータ容量のトレードオフ、量子誤り訂正 |
- デンソーウェーブ「QRコードのしくみ」に関する公式解説資料。
- 情報理論・符号理論関連の教科書における、リード・ソロモン符号の解説。
- JIS(日本産業規格)QRコードに関する規格の概要資料。
- Wicker, S. B. & Bhargava, V. K. (eds.), Reed-Solomon Codes and Their Applications(リード・ソロモン符号の応用に関する専門書)。
- 高校数学教科書における、独立試行の確率(確率のかけ算)に関する解説。
※ 確率・符号語数・訂正可能な割合などの数値は、しくみを理解するためのたとえであり、実際のQRコードの仕様とは異なります。
※本記事は一般向けの科学解説です。QRコードの仕様や誤り訂正レベルの詳細については、JIS規格やQRコードの公式情報をご確認ください。QRコードを読み取る際は、不審なリンク先に注意してください。