QR WORLD
QR WORLD

QRコードの誤り訂正機能とは?概要から活用方法まで徹底解説

カバー写真
電子決済の普及で身の回りでよく見かけるようになったQRコード。 実はQRコードは一部かけていたり、見えなくても正常に読み取ることができることはご存知でしたか? 全てのQRコードには(L・M・Q・H)の誤り訂正機能がついています。 この記事ではQRコードの誤り訂正機能について詳しく解説します。 誤り訂正レベルやリード・ソロモン符号の仕組み、実際の利用シーンなど、QRコードが破損してもデータを正確に復元する技術とその活用方法を紹介します。

QRコードの誤り訂正機能の概要

誤り訂正機能とは何か

QRコードは、現代社会で広く使われる2次元バーコードであり、その特徴のひとつが「誤り訂正機能」です。

QRコードは、画像の一部が汚れたり、破損したりしても正確に読み取ることができるように設計されています。

この誤り訂正機能により、QRコードは信頼性の高い情報伝達ツールとして活用されています。

QRコードにおける誤り訂正の重要性

QRコードは、屋外での掲示や商品のパッケージ、広告など、多様な場所や媒体で使用されます。

これらのQRコードは、光の反射、天候による劣化、擦れ、汚れ、破損といったリスクにさらされることがあります。

誤り訂正機能によって、コードの一部が欠損していても、データの復元し、正確な読み取りを実現します。

身近に役立っている?

QRコードを普段から利用しているが、あまり誤り訂正機能の恩恵を実感したことがない方も多いのではないでしょうか。

実は気づいていないだけで以下の様な場面で普段から恩恵を受けていると思います。

1. アイコンやロゴ付きのQRコード

LINEやインスタグラムなどQRコードを発行するとアイコン付きのQRコードが生成されます。

誤り訂正機能がない場合はロゴ等をQRコードに重ねることができません。

公式に認められている方法ではないもののロゴ付きのQRコードは広く活用されています。

オリジナル画像付きでQRコードを作成する

SNSアイコン付きQRコードを作成する

2. スマホ等での読み取り

スマートフォンでQRコードを読み取る際、手ぶれや光の反射などでQRコードを100%正確に捕えることは難しいですが、誤り訂正機能によって一部QRコードが欠けていても内容を読み取ることができるようになっています。

QRコードの誤り訂正レベル一覧

QRコードの誤り訂正機能には4つの「誤り訂正レベル」があります。

この誤り訂正レベルにより、QRコードが損傷や劣化してもデータを正確に読み取る能力が変わります。

QRコードのデータ復元能力を高くするほどコードが大きくなるので使用する場面によって調整することが重要です。

誤り訂正レベル一覧

具体的には下記の4つのレベルがあり、QRコードを作成する際に指定します。

レベル
復元能力
L
約7%
M
約15%
Q
約25%
H
約30%

誤り訂正レベルにより見た目の違い

試しに同じ文字列を含ませたQRコードを誤り訂正レベルのみ変えて作成してみました。

同じURLで誤り訂正レベルを変えた例

試しに読み取っていただくと同じURLであることが確認いただけます。

QRコードの見た目に注目していただくと、レベルMとQでドットの細かさが変わっていることがわかります。

これはレベルをQにすることによって、格納できるデータの容量が減り、バージョン(QRコードのセル数)を上げる必要があったためです。

QRコードのバージョン・誤り訂正レベルと格納できるデータ容量

このように同じ内容を格納しても誤り訂正レベルを変えそれに伴い、バージョンがあがると同じQRコードにはならないということをご理解いただけるかと思います。

QRコードの誤り訂正レベルとデータ容量のトレードオフ

QRコードにおける誤り訂正レベルの選択は、単にデータ復元能力を高めるだけではありません。

誤り訂正のために多くの冗長データが含まれるため、誤り訂正レベルを高くするほど、QRコードに格納できる実際のデータ量が減少します。以下のようなトレードオフが発生します:

  • Lレベルはデータ容量が最大で、復元能力が最小。
  • Hレベルはデータ復元能力が最大で、データ容量が最小。

そのため、用途に応じてどの程度の損傷を許容するか、またどれだけのデータを格納したいかによって、適切な誤り訂正レベルを選択する必要があります。

デザインやロゴを組み込む場合や、悪環境で使用する場合は、Hレベルを選択することが多く、損傷リスクが少ない場合はLレベルが選ばれやすいです。

QRコードのバージョン・誤り訂正レベルと格納できるデータ容量

QRコードとリード・ソロモン符号の仕組み

QRコードの誤り訂正機能の核となっているのが「リード・ソロモン符号」という数学的なアルゴリズムです。

この符号は、データの一部が欠損していたり、誤っていたりする場合でも、元の正しいデータを復元できる技術です。

リード・ソロモン符号は、CDやDVD、データ通信など、多くのデジタル技術で広く使われており、QRコードを支える重要な要素となっています。

リード・ソロモン符号とは?

リード・ソロモン符号は、1960年代にアーヴィング・リードとグスターヴ・ソロモンによって開発された誤り訂正符号です。

この符号は、特にデータの一部が連続して破損するような状況でも、元のデータを正確に復元できる特性を持っています。

QRコードでは、リード・ソロモン符号を使ってデータを冗長化します。この冗長化されたデータがQRコード内に格納されることで、QRコードが汚れたり、破損したりしても、欠損部分を補い、元のデータを再構築することが可能になります。

具体的にQRコードでは下記の様なプロセスで活用されています。

1. データの分割

データの分割QRコードに格納される元のデータは、特定の単位(シンボル)に分割されます。

それぞれのシンボルは、QRコードの黒と白のモジュールに対応しています。

2. 冗長データの追加

冗長データの追加リード・ソロモン符号を適用すると、元のデータに対して追加の冗長データが生成されます。

3. データの格納

データの格納元のデータと冗長データがQRコード内に格納されます。

この時点で、QRコードには元の情報だけでなく、誤り訂正のための追加情報も含まれているため、一部が欠損してもデータが復元できるようになっています。

QRコードの誤り訂正機能の制約と限界

QRコードの誤り訂正機能には多くのメリットがありますが同時にデメリットや限界があります。このセクションでは、そのデメリットや限界について詳しく説明します。

データ容量の増加

誤り訂正機能は、データの復元を可能にするために冗長な情報(冗長ビット)を追加する仕組みです。

この冗長データはQRコード内に含まれるため、誤り訂正レベルが高くなると、使用可能なデータ容量が減少します。

つまり、より多くのデータを復元できるように誤り訂正レベルを上げると、実際にQRコードに保存できるデータの量が少なくなるというトレードオフが発生します。

具体的には大量の文字情報を含むQRコードを作成したい場合、誤り訂正レベルを高く設定すると、情報が全て収まらないか、コードのサイズが大きくなることで読み取りが難しくなる可能性があります。

読み取り速度の遅延

誤り訂正機能が高レベルに設定されている場合、読み取りに必要な処理が複雑になるため、読み取り速度に影響を与えることがあります。

特に、データが一部破損している状況では、誤り訂正アルゴリズムがデータの復元を行うため、通常よりも時間がかかる可能性があります。

この遅延は、リアルタイム性が求められる場面ではデメリットとなる場合があります。

具体例:列車の改札やイベント入場など

損傷率による限界

誤り訂正機能は、ある程度の損傷や汚れに対しては効果的にデータを復元しますが、どこまででも復元できるわけではありません。

QRコードの損傷が大きすぎたり、読み取れない範囲が広すぎる場合、誤り訂正機能でもデータの復元が不可能になります。

誤り訂正レベルの選択は重要ですが、それでもコードの30%以上が破損すると、どんな高いレベルでも読み取りに失敗してしまいます。

デメリットを上回るメリット

デメリットをご紹介しましたが、世の中でQRコードが広く活用されているのはメリットがデメリットを上回っているからです。

データ容量、コードのサイズ、読み取り速度、物理的環境、印刷品質などがQRコードの性能に影響を与えるため、用途や状況に応じた最適な誤り訂正レベルの選択が必要です。

QRコードの誤り訂正機能を使った実験

では実際に誤り訂正機能がどのように活きているのか独自の実験をしてみます。

今回の実験ではiPhone XRの標準カメラの機能と以下の誤り訂正レベルQのQRコードを利用します。

誤り訂正レベルQのQRコード

実験1: 欠損率を変えてみる

以下のように15%・20%・25%・30%のそれぞれの欠損率のQRコードを作成し読み取りテストを行いました。

誤り訂正レベルはQは約25%までの欠損に対応しているので30%だけが読み取れないという結果を予想しました。

欠損しているQRコード

実験1結果

結果としては20%の欠損としたQRコードでも読み取ることができませんでした。

欠損しているQRコード結果

また15%の欠損としたQRコードも読み取りに若干時間がかかりました。

この結果から誤り訂正レベルの許容範囲はあくまで目安とする方が良いことがわかります。

実験2: 欠損位置を変える

次に欠損率を15%に固定し、欠損させる位置を変えてみます。試した位置は以下の通りです。

  1. 切り出しシンボル(ファインダパターン)に被る位置
  2. QRコードの左端
  3. アライメントパターン(小さい目の部分)に被る位置
  4. 横長

ファインダパターン(切り出しシンボル)とは?

アライメントパターンとは?

QRコードの機能的に特別に意味のある1,3は読み取りができないのではないかと予想していました。

欠損率を15%に固定したQRコード

実験2結果

結果としては切り出しシンボルに被っているもの以外は読み取りができました。

欠損位置を変えたQRコード

この結果からは切り出しシンボルが欠損すると例え誤り訂正レベルの許容範囲内であっても読み取りが難しいことがわかりました。

まとめ: QRコードを支える誤り訂正機能

QRコードの誤り訂正機能は、情報が一部欠損しても正確に復元させる技術です。

日常のQRコードの利用で誤り訂正機能を認識している方は少ないかと思いますが、アイコンや画像付きのQRコードで恩恵を受けていることがわかりました。

実験1,2の結果から誤り訂正レベルの許容範囲はあくまで参考程度とし、許容範囲に余裕を持って運用することをおすすめします。

また切り出しシンボル(アライメントパターン)を隠すと欠損率に関わらず読み取りができませんでした。


実際に誤り訂正機能やSNS画像を含めたQRコードを試したい方にはQR TOOLがおすすめです。

QR TOOL | オリジナルQRコードの作成・読み取り

お持ちの画像でQRコードを作成し、読み取りテストまで行うことができます。

オリジナル画像を使用する場合には必ず読み取り確認まで行っていただくのがおすすめです。

画像からQRコードを検出・内容確認

是非ご活用ください。

QR TOOL
QR WORLDロゴ

QR WORLD(QRワールド) 編集部

QRコード・バーコードの生成・読み取りシステムを開発してきた経験からお役立ち情報を発信しています。