2分で読了チュートリアル

QR コードの誤り訂正レベル:L、M、Q、H を解説

QR コードの誤り訂正レベル L、M、Q、H は、破損したコードの 7、15、25、30% を復元できます。レベルごとのモジュール数と、それぞれが役立つ場面を紹介します。

Marius Voß
DevRel · edge infra
QR コードの誤り訂正レベル L、M、Q、H を、復元率 7、15、25、30 パーセントの棒グラフとして、実際の QR コードの隣に示した図

QR コードの誤り訂正レベルとは、スキャナーが汚れ、傷、ロゴによる覆いのある部分を再構築できるように、コードが持つ冗長なデータの量のことです。レベルは L、M、Q、H の4つで、コードのおおよそ 7%、15%、25%、30% を復元できます。ほとんどの画面表示やショートリンクには M を、ロゴや乱暴な扱いがコードを損なう場合には H を選んでください。1段階上げるごとの代償は密度です。印刷幅が同じなら、モジュールが増え、四角が小さくなります。

この兼ね合いこそ、「QR コードが読み取れない」という話の大半の出発点であり、このチュートリアルが曖昧な説明ではなく、実際のモジュール数を使って進める理由です。まだコードを作っていない方は、QR コードの作り方から始めてください。この記事は、コードを作った後でレベルを選ぶ話です。

QR コードで誤り訂正が実際に行うこと

QR コードは、データをコードワードと呼ばれるバイトとして格納します。それと並んで、Reed-Solomon 誤り訂正で計算した追加のコードワードも格納しています。これは CD で使われているものと同じ系統の数学です。スキャナーは、破損したコードを読むときに、これらの追加コードワードを使って、どのデータコードワードが誤っていて、本来は何であるべきかを割り出します。

選んだレベルが、追加コードワードの数を決めます。この形式を発明した Denso Wave は、誤り訂正機能を4つのレベルとして説明し、レベルを上げると復元力は向上するがデータ量が増え、したがってシンボルのサイズも大きくなると述べています。以下の復元率は、ISO/IEC 18004 に記載され、Wikipedia の QR コードの項目でも繰り返されている数値です。

  • レベル L (Low): コードワードの約 7% を復元可能。
  • レベル M (Medium): 約 15%。
  • レベル Q (Quartile): 約 25%。
  • レベル H (High): 約 30%。

「約」という言葉に注意してください。この割合はインクの面積ではなく、コードワードを数えたものです。損傷の保証ではなく、修復の予算だと考えてください。

QR コードの4つの誤り訂正レベル L、M、Q、H と、おおよその復元率 7、15、25、30 パーセント、それぞれの代表的な用途

密度のトレードオフ:高いほど安全とは限らない理由

冗長性は、どこかに置かなければなりません。レベルを上げると、データはより大きなシンボルに押し込まれます。QR コードにはバージョン 1 から 40 があり、一辺の長さは 17 + 4 x バージョン のモジュール数です。Denso Wave のバージョンと容量の表によれば、バージョン 1 は 21 x 21、バージョン 40 は 177 x 177 です。エンコーダーは、選んだレベルで容量がデータに収まる最小のバージョンを選びます。

URL の場合、そのデータはバイトモードのテキストです。バージョン 2 は、L で 32 バイト、M で 26、Q で 20、H で 14 バイトを格納できます。バージョン 8 は 192、152、108、84 です。バージョン 11 は 321、251、177、137 です。

その代償はバージョン 8 に表れています。L で 192 バイト、H で 84 バイトです。同じグリッドでも、URL のための余地は半分以下になります。残りはパリティだからです。

密度が高いコードほど読み取りにくい理由

スマートフォンは、各モジュールを解像しなければなりません。コードを幅 3 cm で印刷すると、33 モジュールのグリッドではモジュールの幅はおよそ 0.9 mm、61 モジュールのグリッドではおよそ 0.5 mm になります。同じカメラ、同じ光、同じ手ぶれで、余裕は半分です。QR コードの適切な大きさのサイズ規則は、妥当なモジュールサイズを前提にしていますが、その前提をひそかに崩すのが密度です。

実例:1つの URL を全レベルで

「とにかく H に設定して」と言われたときに、私がいつも行う実験があります。計測用のキャンペーン URL を用意しました。長さは 126 文字で、ドメイン、パス、そして utm_source、utm_medium、utm_campaign、utm_content の各パラメータからなります。次に、説明用の例として、25 文字のショートリンク https://s.elido.me/qr7kP2 を用意しました。どちらもバイトモードです。それぞれを標準的なエンコーダーで4つのレベルすべてでエンコードしました。結果は、上の容量表から予測できます。

レベル復元率126 文字の URL25 文字のショートリンク
L~7%V6, 41 x 41V2, 25 x 25
M~15%V8, 49 x 49V2, 25 x 25
Q~25%V9, 53 x 53V3, 29 x 29
H~30%V11, 61 x 61V4, 33 x 33

目に付く点が2つあります。1つ目は、長い URL は L から H へ上がるにつれて、一辺が 41 から 61 モジュールに増え、1681 から 3721 モジュール、つまり面積で約 2.2 倍になることです。2つ目は、誰も触れない点ですが、最も強いレベル H のショートリンク (33 x 33) は、最も弱いレベル L の長い URL (41 x 41) よりも、まだ小さいことです。

レベル H の実際の QR コード2つを並べた図。61 x 61 モジュールの 126 文字の計測用 URL と、33 x 33 モジュールの 25 文字のショートリンク。4つのレベルすべてのモジュール数の表付き

レベルよりもペイロードのほうが重要です。ショートリンクに最大の 30% の修復予算を付けても、長い URL を「効率的な」レベル L で作ったコードより、まばらで大きなモジュールのコードになります。

H を選ぶべき場合と、L または M のほうがよい場合

レベルは、コードに実際に起こることに合わせて選びます。漠然とした用心は仕様ではありません。

H (または Q) を選ぶ場合

  • ロゴやブランドマークが中央にある。スキャナーが再構築しなければならないモジュールを隠すためです。
  • パッケージ、ポケットに入れるチラシ、ステッカー、拭かれるテーブル、あるいは屋外のものに印刷される。
  • 表面がざらざらしている、または曲面で、仕上がりを制御できない。
  • 出荷済みの製品上のコードなど、再スキャンができない。

Elido の QR コードに関するヘルプ記事でも同じことを述べています。ロゴはコード面積の 20% 未満に収め、それを超える場合や、ロゴ付きで印刷する場合は H に切り替えてください。

L または M を選ぶ場合

  • コードがスライド、Web ページ、購入完了画面といった画面に表示される。
  • URL が短く、何かが覆ったり傷つけたりすることがない。
  • スペースが限られていてコードを小さく保つ必要があり、モジュール1つ1つが重要。

実用的な既定は M です。Denso Wave は、これが最もよく選ばれるレベルだと述べており、私たち自身の QR コードが読み取れないの記事も、サポート窓口の側から同じことを述べています。普通のコードに H を既定にするのは誤りです。H が加える密度が、それが防ぐ損傷よりも多くの読み取り失敗を引き起こすからです。

ロゴについての注意として、誤り訂正が修復するのは欠けたモジュールであり、コントラストの低さ、ぼやけ、余白の切り取りは直せません。予算をロゴに使う場合のデザイン規則は、3つの隅の四角に手を付けない理由も含めて、ブランド QR コードのデザインにあります。

ショートリンクはコードをまばらに保つ(ダイナミック QR コードはそれを使う)

この実例から、今日から使える規則が得られます。レベルを上げる前に、ペイロードを縮めることです。ダイナミック QR コードは、まさにそれを行います。完全な転送先をエンコードする代わりに、ショートリンクをエンコードし、そのショートリンクが、指定した場所へリダイレクトします。

ショートリンクをエンコードすると、信頼性に3つの効果があります。

  1. グリッドが低いバージョンにとどまるので、どの印刷サイズでもモジュールが大きいままになります。
  2. ロゴや印刷の摩耗のために、コードが膨れ上がることなくレベル Q や H を使う余裕が持てます。
  3. 計測パラメータはパターンではなく転送先にあるため、キャンペーンタグを変えても、より密度の高い新しいコードが必要になることはありません。

密度とは無関係の4つ目の利点もあります。コードがショートリンクを指しているので、再印刷せずに後から転送先を変更でき、スキャン数も無料で得られます。スタティックなコードでは転送先がパターンに焼き込まれているため、誤字を直す唯一の方法は再印刷です。

自分のリンクで試したい場合は、QR コードジェネレーターでコードごとにレベルを設定でき、M が出発点です。プランの詳細は料金ページにあります。同じショートリンクから、M と H のコードを1つずつ作り、3 cm で印刷して比べてみてください。目で見分けるのに苦労するはずで、それが要点です。

印刷前の簡単なチェックリスト

順番に実行してください。

  1. まず URL を短縮します。計測パラメータは転送先に置いておきます。
  2. 表からレベルを選びます。画面や普通の印刷には M、ロゴや摩耗には Q か H です。
  3. ジェネレーターが選んだバージョンを確認します。URL でおよそバージョン 10 を超えるなら、なぜペイロードがそんなに長いのか考えてください。
  4. クワイエットゾーンを保ちます。四方に最低でも4モジュール分の空白の縁が必要です。
  5. 最終サイズで印刷し、通常の光の下で2台の異なるスマートフォンでスキャンします。

ステップ 5 は、どの表も予測できないことを捕らえます。画面では小さく見えたロゴが、想像以上に多くのモジュールを覆っていることがあります。

コーナーストーンシリーズを読む

この記事はチュートリアルクラスターに属し、そのコーナーストーンはQR コードの作り方です。モジュールサイズが十分な大きさかどうかを決める、サイズと距離の規則については、QR コードの適切な大きさを参照してください。

関連記事

よくある質問

QR コードに最適な誤り訂正レベルはどれですか?

妥当な既定はレベル M です。コードの約 15% を復元でき、グリッドを小さく保てます。この形式の発明者である Denso Wave は、M が最も頻繁に選ばれるレベルだと述べています。コードにロゴが入る場合や、擦れたり、折れたり、屋外に置かれたりするものに印刷する場合は、Q か H に切り替えてください。

QR コードの誤り訂正 30% とはどういう意味ですか?

レベル H のコードは、データコードワードのおよそ 30% までが読めない、または隠れていても、デコードできるという意味です。コードには、Reed-Solomon パリティデータが余分に格納されており、スキャナーはそれを使って欠けている部分を再構築します。これは修復できる損傷の上限であり、表面のどこでも 30% が欠けてよいという保証ではありません。

誤り訂正レベルを上げると、QR コードは読み取りにくくなりますか?

間接的には、はい。レベルが高いとパリティデータが増えるため、同じ URL でもバージョンが上がり、より小さなモジュールが増えます。印刷幅が同じなら、モジュールが小さいほど、スマートフォンのカメラは解像しにくくなります。解決策は、保護が必要なコードのレベルを下げることではなく、ペイロードを短くすることです。

QR コードにロゴを入れるにはレベル H が必要ですか?

中央にロゴを置くコードには、H、少なくとも Q を使ってください。ロゴはモジュールを隠し、スキャナーはそれを修復すべき損傷として扱います。ロゴはコード面積の4分の1よりかなり小さくし、3つの隅の四角からは離して、印刷での摩耗に対する余裕が残るようにしてください。

破損した QR コードでも読み取れますか?

多くの場合、そのレベルの限度内であれば読み取れます。傷、汚れ、部分的な覆いがあっても、失われた領域がそのレベルで修復できる範囲に収まり、隅の四角が無傷であれば、デコードできます。レベル L のコードは約 7%、レベル H のコードは約 30% の損傷に耐えます。

QR コードの誤り訂正レベルの既定値は何ですか?

規格には単一の既定値がなく、ジェネレーターごとに独自に選びます。最も一般的なのは M です。Elido の QR プレイグラウンドは M から始まり、同じコントロールから L、Q、H も選べます。

Elidoを試す

URLを貼り付けて短縮リンクを取得

登録不要。リンクは30日間有効。永久に保存するには登録してください。

Free、登録不要 · 1日あたり2件

Elidoを試す

EUホスティングのURL短縮サービス。カスタムドメイン、詳細な分析、オープンAPI付き。無料プラン - クレジットカード不要。

タグ
qr code error correction levels
qr code error correction
qr code level h
qr code version
reed-solomon qr code
qr code density

続きを読む