メモ

QRコードを人力で読み取る方法


スマートフォンのカメラで手軽に読み取り可能なQRコードは、ウェブサイトへのリンクになっていたり、キャッシュレス決済で利用されていたりと、日常生活のさまざまな部分で活用されています。そんなQRコードがどのような仕組みで動作しているのかをわかりやすくまとめたページが公開されています。

Reading QR codes without a computer!
https://qr.blinry.org/

◆QRコードの基本要素
QRコードにはさまざまなサイズのものがありますが、これは「バージョン」で表すことが可能。最小バージョンは21×21セルの「バージョン1」で、それ以降はバージョンが1つ上がるごとに縦横4セルずつ増えていく仕様となっています。

そんなQRコードの基本的な構成要素が以下です。

・ファインダーパターン


スキャナーがQRコードを識別するのに役立つ、3つの角に配置された正方形のパターン。

・セパレーター


ファインダーパターンの周囲に設けられた空行。

・アライメントパターン
スキャナーがQRコードを正しく読み取るのに役立つパターンで、ゆがみによって生じるセルの位置ずれを補正するためのもの。ただし、バージョン1のQRコードの場合、アライメントパターンは存在しません。

・タイミングパターン


スキャナーがQRコードを正しく読み取りできるようにするためのもうひとつのパターン。白と黒のセルが交互に配置されます。

・フォーマット情報


フォーマット情報部分には、QRコードが採用しているマスクパターンと誤り訂正率に関する情報が含まれており、縦版と横版があるそうです。

・クワイエットゾーン
QRコードをぐるりと囲むように存在する白色の枠線部分は「クワイエットゾーン」と呼ばれており、スキャナーがQRコードの開始位置と終了位置を識別しやすくするためのものです。


つまり、QRコードでは以下の色付けされていない部分でデータを表します。


◆マスクパターン
フォーマット情報のオレンジ色の線で囲まれた部分にある3つのセルでは、「マスクパターン」が示されています。


QRコードにおける黒色のセルは「1」、白色のセルは「0」を表しているため、上記のQRコードの場合はマスクパターンが「110」(十進数だと6)となります。白と黒の3つのセルでマスクパターンを指定するため、マスクパターンの種類は基本的に「111」(十進数:7)「110」(十進数:6)「101」(十進数:5)「100」(十進数:4)「011」(十進数:3)「010」(十進数:2)「001」(十進数:1)「000」(十進数:0)の8種類です。

各マスクパターンは以下の通り。


マスクパターンは元のQRコードに重ねるようにして使用し、黒色と黒色が重なるセルは白色に、黒色と白色が重なるセルは黒色に、白色と白色が重なるセルは白色に変換します。

◆エンコード
続いてエンコードを行います。エンコードを行うにはQRコードの右下の4つのセルを確認します。


そしてQRコードに対応するマスクパターンを適用します。上記のQRコードの場合、マスクパターンは「110」なので、適用するマスクパターンは以下の通り。


元のQRコード(左)とマスクパターン(真ん中)を重ね合わせ、黒色と黒色が重なるセルは白色に、黒色と白色が重なるセルは黒色に、白色と白色が重なるセルは白色に変換すると、エンコードパターン(右)が明らかになります。


エンコードパターンには以下の5種類があり、今回の場合は「Byte(バイト)」と呼ばれるパターンに該当するわけです。


◆セルの読み取りルール
データは右下隅からジグザグにオレンジ色の線が伸びる順番に読み取っていきます。データを表しているわけではないため、ファインダーパターン・セパレーター・アライメントパターン・タイミングパターン・フォーマット情報などはスキップしてOK。


まず、最初の4セルはエンコードパターンを示す部分(オレンジ色の枠線部分)であるためここは除外します。次に、エンコードパターンが「Byte(バイト)」であったため、1セル=1bit(ビット)と考えると、1Byte=8bitであるため、1Byte=8セルで表すことが可能とわかります。つまり、青色の枠線で囲われた部分に1Byte分の情報がまとめられているわけです。


白色のセルは「0」、黒色のセルは「1」を表すため、1Byteのデータが以下の場合、1Byte当たりのデータは「00001100」となります。あとはこの1Byteごとのバイナリー値を16進数の数値に変換したり、ASCII文字に変換したりすることで、QRコードに隠されたデータを読み解くことが可能となるわけです。

この記事のタイトルとURLをコピーする

・関連記事
文字や図形を含む「目立つQRコード」を簡単に作れる無料ウェブアプリ「QR designer」を使ってみた - GIGAZINE

画像生成AI「Stable Diffusion」で美麗イラストとQRコードを融合させる試み - GIGAZINE

QRコードはどんな技術で何が危険なのか? - GIGAZINE

巧妙に偽装されたQRコードを読んだことでスマホを乗っ取られ銀行預金を盗まれてしまった事例 - GIGAZINE

複雑で読み取りづらいQRコードを超シンプルに作り替える方法 - GIGAZINE

in メモ, Posted by logu_ii

You can read the machine translated English article here.