目次
QRコードは、現代社会で広く使われる2次元バーコードであり、その特徴のひとつが「誤り訂正機能」です。
QRコードは、画像の一部が汚れたり、破損したりしても正確に読み取ることができるように設計されています。
この誤り訂正機能により、QRコードは信頼性の高い情報伝達ツールとして活用されています。
QRコードは、屋外での掲示や商品のパッケージ、広告など、多様な場所や媒体で使用されます。
これらのQRコードは、光の反射、天候による劣化、擦れ、汚れ、破損といったリスクにさらされることがあります。
誤り訂正機能によって、コードの一部が欠損していても、データの復元し、正確な読み取りを実現します。
QRコードを普段から利用しているが、あまり誤り訂正機能の恩恵を実感したことがない方も多いのではないでしょうか。
実は気づいていないだけで以下の様な場面で普段から恩恵を受けていると思います。
LINEやインスタグラムなどQRコードを発行するとアイコン付きのQRコードが生成されます。
誤り訂正機能がない場合はロゴ等をQRコードに重ねることができません。
公式に認められている方法ではないもののロゴ付きのQRコードは広く活用されています。
スマートフォンでQRコードを読み取る際、手ぶれや光の反射などでQRコードを100%正確に捕えることは難しいですが、誤り訂正機能によって一部QRコードが欠けていても内容を読み取ることができるようになっています。
QRコードの誤り訂正機能には4つの「誤り訂正レベル」があります。
この誤り訂正レベルにより、QRコードが損傷や劣化してもデータを正確に読み取る能力が変わります。
QRコードのデータ復元能力を高くするほどコードが大きくなるので使用する場面によって調整することが重要です。
具体的には下記の4つのレベルがあり、QRコードを作成する際に指定します。
試しに同じ文字列を含ませたQRコードを誤り訂正レベルのみ変えて作成してみました。
試しに読み取っていただくと同じURLであることが確認いただけます。
QRコードの見た目に注目していただくと、レベルMとQでドットの細かさが変わっていることがわかります。
これはレベルをQにすることによって、格納できるデータの容量が減り、バージョン(QRコードのセル数)を上げる必要があったためです。
QRコードのバージョン・誤り訂正レベルと格納できるデータ容量
このように同じ内容を格納しても誤り訂正レベルを変えそれに伴い、バージョンがあがると同じQRコードにはならないということをご理解いただけるかと思います。
QRコードにおける誤り訂正レベルの選択は、単にデータ復元能力を高めるだけではありません。
誤り訂正のために多くの冗長データが含まれるため、誤り訂正レベルを高くするほど、QRコードに格納できる実際のデータ量が減少します。以下のようなトレードオフが発生します:
そのため、用途に応じてどの程度の損傷を許容するか、またどれだけのデータを格納したいかによって、適切な誤り訂正レベルを選択する必要があります。
デザインやロゴを組み込む場合や、悪環境で使用する場合は、Hレベルを選択することが多く、損傷リスクが少ない場合はLレベルが選ばれやすいです。
QRコードの誤り訂正機能の核となっているのが「リード・ソロモン符号」という数学的なアルゴリズムです。
この符号は、データの一部が欠損していたり、誤っていたりする場合でも、元の正しいデータを復元できる技術です。
リード・ソロモン符号は、CDやDVD、データ通信など、多くのデジタル技術で広く使われており、QRコードを支える重要な要素となっています。
リード・ソロモン符号は、1960年代にアーヴィング・リードとグスターヴ・ソロモンによって開発された誤り訂正符号です。
この符号は、特にデータの一部が連続して破損するような状況でも、元のデータを正確に復元できる特性を持っています。
QRコードでは、リード・ソロモン符号を使ってデータを冗長化します。この冗長化されたデータがQRコード内に格納されることで、QRコードが汚れたり、破損したりしても、欠損部分を補い、元のデータを再構築することが可能になります。
具体的にQRコードでは下記の様なプロセスで活用されています。
データの分割QRコードに格納される元のデータは、特定の単位(シンボル)に分割されます。
それぞれのシンボルは、QRコードの黒と白のモジュールに対応しています。
冗長データの追加リード・ソロモン符号を適用すると、元のデータに対して追加の冗長データが生成されます。
データの格納元のデータと冗長データがQRコード内に格納されます。
この時点で、QRコードには元の情報だけでなく、誤り訂正のための追加情報も含まれているため、一部が欠損してもデータが復元できるようになっています。
QRコードの誤り訂正機能には多くのメリットがありますが同時にデメリットや限界があります。このセクションでは、そのデメリットや限界について詳しく説明します。
誤り訂正機能は、データの復元を可能にするために冗長な情報(冗長ビット)を追加する仕組みです。
この冗長データはQRコード内に含まれるため、誤り訂正レベルが高くなると、使用可能なデータ容量が減少します。
つまり、より多くのデータを復元できるように誤り訂正レベルを上げると、実際にQRコードに保存できるデータの量が少なくなるというトレードオフが発生します。
具体的には大量の文字情報を含むQRコードを作成したい場合、誤り訂正レベルを高く設定すると、情報が全て収まらないか、コードのサイズが大きくなることで読み取りが難しくなる可能性があります。
誤り訂正機能が高レベルに設定されている場合、読み取りに必要な処理が複雑になるため、読み取り速度に影響を与えることがあります。
特に、データが一部破損している状況では、誤り訂正アルゴリズムがデータの復元を行うため、通常よりも時間がかかる可能性があります。
この遅延は、リアルタイム性が求められる場面ではデメリットとなる場合があります。
具体例:列車の改札やイベント入場など
誤り訂正機能は、ある程度の損傷や汚れに対しては効果的にデータを復元しますが、どこまででも復元できるわけではありません。
QRコードの損傷が大きすぎたり、読み取れない範囲が広すぎる場合、誤り訂正機能でもデータの復元が不可能になります。
誤り訂正レベルの選択は重要ですが、それでもコードの30%以上が破損すると、どんな高いレベルでも読み取りに失敗してしまいます。
デメリットをご紹介しましたが、世の中でQRコードが広く活用されているのはメリットがデメリットを上回っているからです。
データ容量、コードのサイズ、読み取り速度、物理的環境、印刷品質などがQRコードの性能に影響を与えるため、用途や状況に応じた最適な誤り訂正レベルの選択が必要です。
では実際に誤り訂正機能がどのように活きているのか独自の実験をしてみます。
今回の実験ではiPhone XRの標準カメラの機能と以下の誤り訂正レベルQのQRコードを利用します。
以下のように15%・20%・25%・30%のそれぞれの欠損率のQRコードを作成し読み取りテストを行いました。
誤り訂正レベルはQは約25%までの欠損に対応しているので30%だけが読み取れないという結果を予想しました。
結果としては20%の欠損としたQRコードでも読み取ることができませんでした。
また15%の欠損としたQRコードも読み取りに若干時間がかかりました。
この結果から誤り訂正レベルの許容範囲はあくまで目安とする方が良いことがわかります。
次に欠損率を15%に固定し、欠損させる位置を変えてみます。試した位置は以下の通りです。
QRコードの機能的に特別に意味のある1,3は読み取りができないのではないかと予想していました。
結果としては切り出しシンボルに被っているもの以外は読み取りができました。
この結果からは切り出しシンボルが欠損すると例え誤り訂正レベルの許容範囲内であっても読み取りが難しいことがわかりました。
QRコードの誤り訂正機能は、情報が一部欠損しても正確に復元させる技術です。
日常のQRコードの利用で誤り訂正機能を認識している方は少ないかと思いますが、アイコンや画像付きのQRコードで恩恵を受けていることがわかりました。
実験1,2の結果から誤り訂正レベルの許容範囲はあくまで参考程度とし、許容範囲に余裕を持って運用することをおすすめします。
また切り出しシンボル(アライメントパターン)を隠すと欠損率に関わらず読み取りができませんでした。
実際に誤り訂正機能やSNS画像を含めたQRコードを試したい方にはQR TOOLがおすすめです。
お持ちの画像でQRコードを作成し、読み取りテストまで行うことができます。
オリジナル画像を使用する場合には必ず読み取り確認まで行っていただくのがおすすめです。
是非ご活用ください。
QR WORLD(QRワールド) 編集部