QRコードの誤り訂正レベルを理解する — なぜ汚れても読めるのか

QRコードは、ロゴを重ねたり、印刷物が少し汚れたりしても問題なく読み取れます。この「壊れにくさ」を支えているのが誤り訂正(Error Correction)という仕組みです。本記事では、その原理と実務での使い分けを解説します。

誤り訂正とは何か

QRコードには、データそのものに加えて冗長な復元用データが一緒に埋め込まれています。読み取り時にコードの一部が欠損・汚損していても、この冗長データを使って元の情報を計算で復元できます。これを誤り訂正と呼びます。

この復元処理に使われているのが、CD やデータ通信でも広く使われる リード・ソロモン符号(Reed–Solomon code)です。データを多項式として扱い、一定数までの誤りであれば数学的に正しく元へ戻せる、という性質を利用しています。

4つの誤り訂正レベル

QRコードの規格では、復元できるデータ量に応じて4段階のレベルが定義されています。レベルが高いほど壊れに強くなりますが、その分だけ冗長データが増えるため、同じ情報を入れてもコードが複雑(セルが多く)になります。

レベル復元可能な目安特徴・向いている用途
L(Low)約7%最も軽量。汚れにくいデジタル表示や、容量を抑えたい場合に。
M(Medium)約15%標準的なバランス。一般的な印刷物で最も多用される。
Q(Quartile)約25%やや過酷な環境向け。工場・屋外など。
H(High)約30%最も頑強。ロゴ埋め込みやデザインQRに必須。
ポイント: 「約30%復元できる」とは、コード全体の面積の3割を隠しても読める、という単純な話ではありません。位置検出パターン(3つの角の四角)など、欠けると読み取り自体が成立しない領域もあります。あくまでデータ領域に対する目安として捉えてください。

レベル別の見た目(同じ内容で比較)

下のサンプルは、まったく同じURLを各レベルで生成したものです。レベルが上がるほど冗長データが増え、マス目が密になるのが見て取れます。スマホのカメラで読み取ると、いずれも同じURLが得られます。

なぜロゴを重ねても読めるのか

デザインQRコードで中央にロゴを置けるのは、レベル H(約30%)の誤り訂正を使い、ロゴで隠れる部分を「欠損」として扱っても残りのデータから復元できるからです。つまりロゴのために、あらかじめ壊れる前提で冗長性を確保しているわけです。

ただし隠す範囲が訂正能力を超えると、当然読み取れなくなります。デザイン性と読み取り精度はトレードオフの関係にあり、実機での読み取りテストが欠かせません。

実演:ロゴを重ねても読める

レベル H で生成したQRコードに、中央へロゴ風の白い枠を重ねました。右側はロゴ入りですが、ブラウザ上で実際にデコードを試みた結果を示します。

そのまま(レベルH)
中央にロゴを重ねる

実演:汚してみる(誤り訂正の限界を体感)

スライダーで中央を隠していくと(=ロゴを重ねるのと同じ状況)、QRコードがどこまで耐えるかをブラウザ上で実際にデコードして判定します。誤り訂正レベルを切り替えて比べてみてください。L はわずかな隠れで読めなくなり、H は中央を大きく隠しても耐えることが分かります。位置検出パターン(3つの角)は保護しています。
※ あくまで仕組みを体感するための目安です。実機での読み取りはカメラ性能や印刷品質にも左右されます。

実務での選び方

レベルを上げるほど安全に見えますが、セル数が増えてコードが細かくなると、低解像度の印刷やカメラ性能の低い端末ではかえって読み取りにくくなることもあります。「高ければ良い」ではなく、利用シーンに合わせて選ぶのが正解です。

Free Tool QR Code Analyzer で確かめる 手元のQRコードをアップロードして、誤り訂正レベル・バージョン・マスクパターンを解析できます。 Free Tool QR Code EC Tester で限界を試す QRコードを部分的に隠しながら、各誤り訂正レベルでどこまで読み取れるかを視覚的に検証できます。 Free Tool QR Code Generator で作って試す 誤り訂正レベル・サイズ・余白・色を指定してQRコードを生成し、PNG / SVG でダウンロードできます。

まとめ

QRコードの「壊れにくさ」は、リード・ソロモン符号による誤り訂正という確かな数学に支えられています。L/M/Q/H の4レベルはそれぞれ冗長性と複雑さのバランスが異なり、用途に応じた選択が読み取り精度を左右します。デザインと実用性の両立には、実際のツールでの検証をおすすめします。

QRコードの仕様全体(バージョン・データ容量・構造・マスク)は、関連記事「QRコードの仕様を完全理解する」もあわせてご覧ください。

よくある質問(FAQ)

QRコードの誤り訂正とは何ですか?

データそのものに加えて冗長な復元用データを一緒に埋め込み、コードの一部が欠損・汚損しても元の情報を計算で復元できる仕組みです。復元処理にはリード・ソロモン符号が使われています。

誤り訂正レベルL/M/Q/Hの違いは何ですか?

復元できるデータ量の目安が異なり、Lは約7%、Mは約15%、Qは約25%、Hは約30%です。レベルが高いほど壊れに強くなりますが、その分だけ冗長データが増えてコードのセルが多く複雑になります。

なぜQRコードはロゴを重ねても読み取れるのですか?

レベルH(約30%)の誤り訂正を使い、ロゴで隠れる部分を欠損として扱っても残りのデータから復元できるためです。ただし隠す範囲が訂正能力を超えると読み取れなくなるため、実機での読み取りテストが欠かせません。

← 技術ブログ一覧へ戻る