
QRコードの誤り訂正レベル L/M/Q/H — ISO/IEC 18004 の設計思想
QRコードは 1994年にデンソーウェーブ(当時デンソー)が開発し、現在は ISO/IEC 18004 として国際標準化されています。この規格には4段階の誤り訂正レベル(L, M, Q, H)が定義されており、同じ情報量でもレベルを上げるほど汚損・破損に強くなる代わりに同じバージョンで使えるデータ容量が減ります。収まらなくなった場合は、モジュール数の多いバージョンが必要です。本記事では、その数学的背景と実務での選び方を 規格の位置付けとデンソーウェーブの公開資料に基づいて整理します。
4つの誤り訂正レベル
表が収まらない場合は、左右にスクロールできます。
| レベル | コード語の復元能力の目安 | 代表的な用途 |
|---|---|---|
| L (Low) | 約 7% | 綺麗な環境で使う画面表示、広告 |
| M (Medium) | 約 15% | 一般的な印刷物、名刺 |
| Q (Quartile) | 約 25% | 工場・屋外など汚れが想定される場面 |
| H (High) | 約 30% | 汚れや損傷が想定される場面 |
7% / 15% / 25% / 30% は、デンソーウェーブが示すコード語(データ単位)を復元できる割合の目安です。画像面積に対する欠損率ではなく、その割合まで汚してよいという保証でもありません。位置検出パターンなど重要部分への損傷、誤りの分布、印刷品質、読み取り機器によって結果は変わります。
背景にあるリード・ソロモン符号
通常のQRコードは、GF(256)上のリード・ソロモン符号を使ってデータコード語に訂正用コード語を追加します。1コード語は8ビットです。QRの生成では多項式の割り算による余りを使うため、「ある点で評価した値をそのまま付加する」とだけ説明すると実装とずれます。
1ブロックがデータk、全体nのコード語からなり、訂正用がr = n − k個なら、位置不明の誤りeと位置既知の消失sについて2e + s ≤ rが訂正可能範囲です。誤りだけなら最大floor(r / 2)個です。ブロック単位の条件であり、コード画像全体の面積に適用するものではありません。
ブロック構成はバージョンと訂正レベルで変わります。機能パターンの損傷でコードを検出できなければ、データの誤り訂正だけでは読み取れません。
同じサイズでも格納できる量がモードと訂正レベルで変わる
通常のQRコードの主要なデータ符号化モードは数字・英数字・バイト・漢字です。ECI等の制御モードとは区別します。同じ文字数でも、モードが効率的なほど(=文字種が限定されているほど)同じビット数により多くの文字を詰め込めます。
例として、通常のQRコードで最小サイズであるバージョン1(21×21モジュール)での単一モード・追加ECIなしの容量を、モードと誤り訂正レベルの組み合わせで示します。
表が収まらない場合は、左右にスクロールできます。
| モード | 文字種 | L | M | Q | H |
|---|---|---|---|---|---|
| 数字 | 0-9 | 41 | 34 | 27 | 17 |
| 英数字 | 0-9 / A-Z / SP / $ % * + - . / : | 25 | 20 | 16 | 10 |
| 8 ビットバイト | 単位はバイト(文字数ではない) | 17 | 14 | 11 | 7 |
| 漢字 | Shift_JISの所定範囲 | 10 | 8 | 7 | 4 |
注意点として、英数字モードに小文字は含まれません(大文字 A-Z と数字、一部記号のみ)。例えば https://example.com/a のように小文字を含む URL は 8 ビットバイトモードでの符号化となるため、このURLは21 ASCII文字=21バイトなのでバージョン1 では L レベルでも収まらず、より大きなバージョン(21×21 を超えるサイズ)が必要です。
同じ 21×21 でも誤り訂正に使う領域が増えるとデータ領域が減るため、長いデータを H レベルで符号化したい場合はより大きいバージョン(サイズ)の QR コードを使う必要があります。QR コードの「バージョン」はサイズを示し、バージョン1(21×21)からバージョン40(177×177)まで ISO/IEC 18004 で規定されています。
バイトモードの17/14/11/7はバイト数です。UTF-8の非ASCII文字は複数バイトを使い、ECIを追加すればその分も容量を消費します。UTF-8を使う場合はECI対応も含め受け手のデコーダで確認してください。容量削減のためURLのパスを勝手に大文字化すると、リンク先が変わる場合があります。
ロゴ重ね表示のしくみ
ロゴを重ねたQRコードが読み取れる場合はありますが、誤り訂正レベルの割合から安全なロゴ面積を算出することはできません。ロゴは意図的な損傷であり、内容量やバージョン、隠れる機能パターン、読み取り条件の影響を受けます。
ただし以下の制約があります:
- 位置検出パターン、タイミングパターン、形式情報などの機能パターンを隠さない
- ロゴを必要最小限にし、誤り訂正レベルを上げたことで読み取りを保証できるとは考えない
- 最終的な印刷・表示サイズ、色、余白を使い、複数の端末と想定する距離・角度・照明でテストする
- 読み取り失敗が許されない用途では、ロゴなしのQRコードも用意する
レベル選択の実用ガイド
L (Low) を選ぶ場面
- Webサイト・アプリ画面に表示するQRコード(汚れない)
- データ容量を最大化したい場合(長いURLや多いデータ)
- デザイン要素なしのシンプルな表示
M (Medium) を選ぶ場面
- 一般的な印刷物(チラシ、名刺、パンフレット)
- "困ったら Mを選ぶ" のデフォルト的位置づけ
Q (Quartile) を選ぶ場面
- 工場・倉庫・建設現場など、汚れや傷が想定される屋内
- 汚れや小さな傷が想定され、容量とのバランスを取りたい場合
H (High) を選ぶ場面
- 屋外看板、長期間貼られるラベル
- 食品容器、医薬品、郵便物など曲面・摩擦のある媒体
- 容量よりもコード語の復元能力を優先し、実環境で検証できる場合
読み取り精度を高めるその他の要因
誤り訂正レベル以外にも、QRコードの読み取りには以下が影響します。数値だけで成否を決めず、最終的な利用条件で確認してください。
- クワイエットゾーン(マージン): コード周囲の白い余白。通常のQRコードでは四辺に4モジュール分以上を確保
- コントラスト: 暗い前景と明るい背景を使い、色付きの場合も実機で確認する
- モジュール寸法: データ量と誤り訂正レベルでモジュール数が変わるため、各セルを印刷・表示環境で十分に識別できる大きさにする
- 反射・光沢: 反射による白飛びやピント外れが起きない素材・照明で確認する
- 距離と角度: 実際の読み取り距離、傾き、端末で繰り返しテストする
まとめ
- QRコードには L/M/Q/H の 4段階の誤り訂正レベルがある(ISO/IEC 18004)
- L:7% / M:15% / Q:25% / H:30% はコード語の復元能力の目安であり、画像面積の許容欠損率ではない
- 訂正にはリード・ソロモン符号(GF(256) 上の代数)を使用
- レベルが上がるとデータ領域が減るため、容量制限に注意
- ロゴ重ねに安全な面積を誤り訂正率から算出できない。機能パターンを避け、実環境で検証する
- 一般用途は M、汚損が想定されるなら容量とサイズを確認して Q または H を検討する
- クワイエットゾーン、明暗差、モジュール寸法を確保し、実際の媒体と端末で確認する
参考文献・ソース
- ISO/IEC 18004:2024 - QR Code bar code symbology specification ↗
- デンソーウェーブ QRコードの歴史 ↗
- デンソーウェーブ QRコードの誤り訂正機能 ↗
- Reed I.S., Solomon G. (1960). Polynomial Codes Over Certain Finite Fields. SIAM ↗
- DENSO WAVE — Symbol version 1 to 10 ↗
- DENSO WAVE — Setting the size of a QR Code ↗
- Nayuki — QR Code generator source ↗
記事作成に関する注記
本記事は AI(大規模言語モデル)を編集補助として活用して作成しています。 公開前に編集者が内容を確認していますが、事実誤認・仕様の解釈ミス・最新情報との齟齬が含まれる可能性があります。 重要な判断を行う際は、本文中の一次ソースや公式ドキュメントを必ずご自身でご確認ください。 誤りにお気づきの場合は、お問い合わせフォームよりご連絡いただけると助かります。




