QRコードの誤り訂正とは、コードの一部が汚れたり、傷ついたり、隠れたりしても読み取れるようにする、あらかじめ組み込まれた冗長性のことです。レベルは4段階あり、Lはデータの約7%、Mは約15%、Qは約25%、Hは約30%を復元できます。レベルが高いほど丈夫になりますが、コードの密度も高くなります。
QRコードの誤り訂正の仕組み
QRコードは、文字列を一度だけ記録して無事を祈っているわけではありません。コードを作るとき、データはコード語と呼ばれるバイト単位のブロックに分けられ、誤り訂正用のコード語が計算されて追加されます。これにはリード・ソロモン符号という数学的な手法が使われています。CD、DVD、データ通信などで何十年も使われてきた技術の仲間です。
スマホがコードを読み取ると、すべてのコード語を読み込みます。傷、汚れ、上に重ねたロゴなどのせいで一部が読めなかったり間違っていたりしても、読み取り機は追加のコード語を使って欠けた部分を割り出します。損傷がそのレベルで対応できる範囲に収まっていれば読み取りは成功し、何か問題があったことに気づくことすらありません。
誤り訂正レベルは、形式情報と呼ばれるコード内の小さな領域に記録されています。読み取り機が確実に読めるよう、この情報は2か所に記録されています。
4つのレベル:L・M・Q・H
各レベルは、記録できる容量と丈夫さを交換する関係にあります。以下のパーセンテージは、復元できるデータのおおよその割合です。
- レベルL(Low):約7%。 最も小さなコードに最も多くのデータを入れられます。損傷の心配が少ない、きれいな屋内や画面表示での用途に向いています。
- レベルM(Medium):約15%。 バランスがよく、標準的によく使われる設定です。チラシ、メニュー、名刺など、ほとんどの印刷物に適しています。
- レベルQ(Quartile):約25%。 パッケージ、ラベル、作業場など、汚れたりすり減ったりする可能性のあるコードに、より強い保護を与えます。
- レベルH(High):約30%。 最も丈夫な設定です。屋外の看板、過酷な環境、中央にロゴを入れたコードによく選ばれます。
これらの数値は復元できるデータの割合であり、「画像の30%を隠しても大丈夫」という意味ではありません。特に角にある3つの大きな四角の上など、悪い場所が損傷していると、損傷の面積が小さくてもコードが読み取れなくなることがあります。
トレードオフ:丈夫さと密度
誤り訂正はタダではありません。追加のコード語がコード内のスペースを使います。同じ内容なら、レベルが高いほど次のようになります。
- モジュール(小さな白黒の四角)の数が増える
- QRコードの「バージョン」が大きくなる。バージョン1の21×21モジュールから、バージョン40の177×177モジュールまであります
- 同じ物理サイズで印刷すると、一つひとつの四角が小さくなる
小さな四角はカメラで判別しにくく、特に離れた場所、暗い場所、古いスマホでは読み取りにくくなります。そのため、小さなラベルに載せる長いWebアドレスにレベルHを選ぶと、かえって読み取りの信頼性が下がることがあります。
解決策はたいていデータを減らすことです。QR-THの動的QRコードで使う qr-th.com/r/ のような短縮リンクなら、内容が短く済みます。そうすれば、コードの密度を上げすぎずに誤り訂正レベルを高くする余裕が生まれます。短縮リンクの仕組みは 静的QRコードと動的QRコードの違い のガイドで解説しています。
どのレベルを選べばいい?
次の簡単な目安を参考にしてください。
- 画面表示や、きれいな屋内の印刷物? レベルLかMで十分です。
- メニュー、チラシ、ポスターなど一般的な販促用の印刷物? レベルMが信頼できる標準設定です。
- こすれる、濡れる、汚れる、一部が隠れる可能性がある? Qを選びましょう。
- 中央にロゴがある、屋外の看板、過酷な環境? Hを選び、データは短く保ちましょう。
- どのレベルを選んでも、印刷したコードをテストする。 実際の距離と明るさで、複数のスマホを使って確認しましょう。
多くのQRコード作成ツールは、適切なレベルを自動で選び、ロゴを追加すると上げてくれることもよくあります。自分で選べるツールなら、常に最大にするのではなく、コードを設置する場所を考えて選びましょう。
誤り訂正とロゴ
QRコードの中央にロゴを置けるのは、誤り訂正のおかげです。ロゴが一部のモジュールを隠し、読み取り機が冗長なデータからそれを復元します。安定して読み取れるようにするためのルールは次のとおりです。
- ロゴを入れるときは、レベルH、少なくともQを使う。
- ロゴは適度に小さくし、中央に置く。実際の汚れ、反射、ぼやけも誤り訂正の余力を消費するので、最大復元率よりかなり余裕を持たせる。
- 角にある3つの大きなファインダパターンや、コード周囲のクワイエットゾーンは絶対に隠さない。
- コードと背景の間に強いコントラストを保つ。
デザインについてのアドバイスは、QRコードデザインのベストプラクティス の記事をご覧ください。
誤り訂正でも直せないこと
誤り訂正は強力ですが、限界があります。次のようなコードは救えません。
- 白地に薄いグレー、濃い色同士など、コントラストが低い
- ほかのグラフィックにぴったり接して印刷され、クワイエットゾーンがない
- 角のファインダパターンが損傷している
- 読み取る距離に対して四角が小さすぎる
- 強く湾曲した面などで、大きくゆがんでいる
- 光沢のあるラミネートの反射で、広い範囲が白飛びしている
また、誤り訂正はコードの安全性を高めるものではありません。レベルHのQRコードでも危険なWebサイトを指していることはありますし、本物のコードの上に貼られた詐欺用のシールも問題なく読み取れてしまいます。不安なコードは、何かが開く前にQR-THで オンラインでQRコードを読み取って リンク先を確認しましょう。
よくある質問(FAQ)
QRコードの誤り訂正レベルはどれが一番いいですか?
どの場面でも最適という単一のレベルはありません。ほとんどの印刷物にはMがよい標準設定で、ロゴ入りや屋外・過酷な環境にはHが向いています。コードを使う場所に合わせて選びましょう。
誤り訂正レベルを上げるとQRコードは大きくなりますか?
同じデータなら、大きくなります。モジュールが増えるため、印刷サイズを大きくするか、一つひとつの四角を小さくするかのどちらかになります。
どんなQRコードにもロゴを入れられますか?
隠れる部分をカバーできるだけの誤り訂正がある場合に限られるので、QかHを使いましょう。ロゴは小さく、角の四角から離して配置し、印刷前に必ずテストしてください。
印刷した後で誤り訂正レベルを変えられますか?
いいえ。レベルは印刷された模様の一部です。変えるには、新しいコードを作って印刷し直す必要があります。
実際の環境でも読み取れるコードが欲しいなら、QR-THの 無料QRコード作成ツール で作成し、内容は短く保ち、印刷前に2〜3台のスマホでテストしてみてください。