QRコードの四隅にある四角の役割 — 位置検出と機能パターン

QRコードの四隅にある大きな四角はファインダパターンと呼ばれ、読み取り機がコードを見つけて向きを決めるために使われます。なぜ4隅ではなく3隅なのか、どこが欠けると「そもそも認識されない」のか。本記事では機能パターンの役割を、色分けした実物の図とともに解説します。

QRコードは「機能パターン」と「データ領域」でできている

QRコードの白黒のマス(モジュール)は、すべてがデータではありません。読み取り機がコードを見つけて正しく格子に区切るための機能パターンが先に配置され、残った場所にデータと誤り訂正の符号語が入ります。

重要なのは、機能パターンは誤り訂正の対象外だという点です。リード・ソロモン符号が守っているのはデータ領域の符号語だけで、四隅の四角が潰れていても計算で復元することはできません。「QRコードは3割欠けても読める」という説明が場所によって当てはまらないのは、このためです。

実演:どのマスが何の役割か

ブラウザ上でバージョン7のQRコードを生成し、モジュールを役割ごとに色分けしました。黒く塗られたマスは実際に黒いモジュール、薄い色は同じ役割の領域にある白いモジュールです。データ領域(濃紺)だけがコード全体の大半を占めていることが分かります。

ファインダパターン — 四隅の3つの四角

いちばん目立つ「回」の字状のマークがファインダパターン(位置検出パターン)です。7×7モジュールで、中心に3×3の黒、その周りに5×5の白い枠、さらにその外側に7×7の黒い枠という入れ子構造をしています。

1:1:3:1:1 という比率

この入れ子構造には狙いがあります。ファインダパターンの中心を通る直線をどの角度で引いても、黒・白・黒・白・黒の幅の比が 1:1:3:1:1 になるのです。読み取り機は画像を横方向・縦方向に走査して、この比率に合う並びを探すことでQRコードを見つけます。比率で判定するため、コードの大きさや画面上の解像度に左右されず、傾いていても検出できます。

なぜ4隅ではなく3隅なのか

四隅すべてに置かないのは、向きを決めるためです。3つが見つかれば、直角に配置された2辺から符号の枠が決まり、ファインダが無い側が右下だと分かります。4つ置いてしまうと90度単位の回転が区別できず、上下逆さに読み取ってしまいます。スマートフォンでQRコードを逆さまに向けても読めるのは、この非対称性のおかげです。

分離パターンとクワイエットゾーン

各ファインダの内側には、幅1モジュールの白い帯(分離パターン)が入ります。データ領域の黒がファインダに接してしまうと、上の 1:1:3:1:1 の比率が崩れて検出できなくなるためです。

同じ理由で、コードの外周には4モジュール以上の余白(クワイエットゾーン)が必要です。ここを詰めて周囲の印刷物やロゴが接すると、外側の黒枠の幅が正しく測れず、検出そのものが失敗します。読み取り不良の原因としてはかなり多いパターンです。

タイミングパターン — 格子の目盛り

左上と右上のファインダの間(行6)と、左上と左下のファインダの間(列6)には、黒と白が1マスずつ交互に並んだ列があります。これがタイミングパターンで、読み取り機はここを数えることで「一辺が何モジュールあるか」「1モジュールが画像上の何ピクセルにあたるか」を確定します。

ファインダで大枠の位置が決まっても、間のマス目の切り方までは分かりません。特にバージョンが大きく(マス目が細かく)なるほど、わずかな誤差の積み重ねで格子がずれていきます。タイミングパターンはその基準線として働きます。

位置合わせパターン — 歪みの補正

バージョン2以上には、位置合わせパターン(アライメントパターン)が入ります。5×5モジュールで、外周が黒、その内側が白、中心の1マスが黒という構造です。ファインダを小さくしたような形ですが、役割は異なり、面の歪みを補正するために使われます。

ペットボトルや紙袋のような曲面、あるいは斜めから撮影した場合、コードは単純な長方形には写りません。位置合わせパターンは符号内の決まった座標にあるので、読み取り機はその写り方のズレから面の歪みを推定し、格子を引き直せます。バージョンが上がるほど個数が増えるのは、細かいコードほど局所的な歪みが効いてくるからです。

バージョン一辺のモジュール数位置合わせパターンの数
1210
2〜625〜411
7〜1345〜696
14〜2073〜9713
21〜27101〜12522
28〜34129〜15333
35〜40157〜17746

形式情報と型番情報

ファインダの周囲には、読み取りの設定値そのものが書かれています。

誤り訂正レベルを実際に読み取る手順は、「QRコードの誤り訂正レベルを確認する方法」で解説しています。

どこが壊れると何が起きるか

「位置検出がずれる」と一口に言っても、壊れた場所によって症状は違います。読み取り不良を切り分けるときの目安として整理します。

壊れた場所起きること誤り訂正で救えるか
ファインダパターンそもそもQRコードとして検出されない。カメラを向けても何も起きない。救えない(機能パターンは訂正の対象外)
分離パターン・クワイエットゾーン1:1:3:1:1 の比率が崩れ、検出に失敗しやすくなる。背景と一体化して見える。救えない
タイミングパターンモジュールの区切り位置がずれ、大きいバージョンほど誤読・失敗が増える。救えない
位置合わせパターン平面なら影響が小さいが、曲面や斜めからの撮影で急に読めなくなる。救えない
形式情報最大3ビットまでは訂正可能。2か所にあるので片方の破損なら問題ない。ある程度救える
データ領域誤り訂正レベルに応じた量まで復元できる。救える
切り分けのコツ: 「カメラを向けても枠が出ない・反応しない」ときは、まず四隅と余白を疑ってください。読み取り機が符号を見つけられていない状態で、データの汚れとは症状が別物です。逆に「一瞬認識するが結果が出ない」場合は、データ領域の破損や訂正能力超えを疑います。
Free Tool QR Code Analyzer で構造を確かめる 手元のQRコード画像から、バージョン・誤り訂正レベル・マスクパターン・格納データを解析します。

撮影した写真で四隅がつぶれている場合は、鮮明化してから解析すると通ることがあります。手順は「写真のQRコードが読めない…を復元する仕組み」を、原因別の直し方は「QRコードが読み取れない原因と直し方」をご覧ください。

まとめ

よくある質問(FAQ)

QRコードの四隅にある3つの四角は何ですか?

ファインダパターン(位置検出パターン)です。7×7モジュールの入れ子構造で、中心を通る直線をどの角度で引いても黒・白・黒・白・黒の幅の比が1:1:3:1:1になります。読み取り機はこの比率を探してQRコードを見つけます。

なぜファインダパターンは4隅ではなく3隅にあるのですか?

向きを一意に決めるためです。3つ見つかれば符号の枠が決まり、ファインダが無い側が右下だと分かります。4隅すべてに置くと90度単位の回転が区別できなくなります。

ファインダパターンが欠けたQRコードは誤り訂正で復元できますか?

できません。リード・ソロモン符号が守っているのはデータ領域の符号語だけで、ファインダパターンなどの機能パターンは誤り訂正の対象外です。四隅が壊れると、そもそもQRコードとして検出されない状態になります。

位置合わせパターンは何のためにありますか?

面の歪みを補正するためです。符号内の決まった座標に置かれているので、曲面や斜めからの撮影でコードが歪んで写っていても、読み取り機はそのズレから歪みを推定して格子を引き直せます。バージョン2以上に入り、バージョンが上がるほど個数が増えます。

← 技術ブログ一覧へ戻る