QR コード読み取りツールの説明
QR コードが読み取れないとき、あるいは読み取る前にどこへ飛ぶのか確認したいとき、このツールが役立ちます。スクリーンショットやポスター、PDF から切り出した QR コードの画像にも対応しています。
QR コードには何が入っているのか
QR コードには「URL が入っている」と思われがちですが、そうとは限りません。QR コードの実体はバイナリデータと符号化方式の識別子で、代表的なものは次のとおりです。
- URL:最もよくある形です。内容が
http://またはhttps://で始まり、読み取るとブラウザがそのまま開きます。 - プレーンテキスト:任意の文字列。管理番号、パスワード、一言のメッセージなど。
- WIFI 設定:
WIFI:で始まり、形式はWIFI:T:暗号化方式;S:SSID;P:パスワード;;です。Huawei や Xiaomi などのシステムが採用する共通規格です。 - 名刺(vCard):
BEGIN:VCARDで始まり、氏名、電話番号、メールアドレスを含みます。 - SMS / 電話:
SMSTO:番号:本文またはtel:番号。 - 決済コード:WeChat や Alipay の支払いコードは、署名と有効期限を含む暗号化された文字列です。解析しても文字化けするだけですが、これは正常です。そもそも読めないように設計されています。
本ツールは内容を認識したうえで、どの種類かにできるだけ判定し、対応する操作ボタンを表示します。
読み取れないことがある理由
QR コードの認識に失敗する原因は、おおむね次のように分類できます。
- 画像がぼやけている、解像度が低い。 QR コードの各セルは、安定して認識するために最低 2〜3 ピクセル必要です。スクリーンショットを撮るときは、画像を大きく拡大してから撮ると格段に良くなります。
- クワイエットゾーン(白い余白)がない。 QR コードの周囲には空白が必要で、規格では最低 4 セル分と定められています。白い縁を切り落とされた QR コードは認識率が明らかに下がります。図柄が画像の端に接している場合は、外側に白い縁を足してから試してください。
- 反転している。 白地に黒のセルが標準で、黒地に白(反転)も理論上は読めますが、多くの読み取り機は対応していません。反転したスクリーンショットなら、まず色を反転してから読み取ってください。
- 歪みや傾きが大きすぎる。 画面や曲面のパッケージを撮ると遠近の歪みが出ます。軽い傾きは問題ありませんが、歪みがひどいと 3 つの角にある位置検出パターンを見つけられなくなります。
- 白飛びや影のかぶり。 部分的な反射でセルが一片白になるとデータが失われます。ただし QR コードには誤り訂正能力があるため(後述)、軽い遮蔽なら読み取れます。
- QR コード自体が欠けている。 画像の角が切れている場合、3 つの大きな四角(左上・右上・左下)は切らないでください。これは位置検出の目印で、どれか 1 つでも欠けるとほぼ読めません。
誤り訂正能力の仕組み
QR コードには誤り訂正機構が組み込まれており、リード・ソロモン符号でデータに冗長性を加えています。冗長性の比率で 4 段階あります。
- L レベル(約 7% の冗長性):損傷した領域の約 7% まで復元できます。
- M レベル(約 15%):最もよく使われる既定の段階です。
- Q レベル(約 25%):軽度の摩耗が想定される場面に向きます。
- H レベル(約 30%):最高の冗長性で、中央にロゴを置く販促用コードはたいていこの段階です。
中央にロゴを重ねた QR コードでも読めるのは、ロゴで隠れた部分がちょうど誤り訂正の範囲に収まっているからです。ただし冗長性を増やすと格納できるデータは減ります。同じ QR コードでも、H レベルで入る文字数は L レベルのおよそ半分です。
安全のための注意:読む前に確認する
QR コードの問題は「読み取るまで中身が見えない」ことで、これがフィッシング攻撃の格好の入口になっています。出所のわからない QR コード、とくにシェアサイクル、駐車料金の支払票、飲食店のテーブルに貼られているものは、まずツールで解析してみてください。
- ドメインが正しいか見る。正規の企業は決まったドメインを持っています。見覚えのない短縮 URL や、つづりの似た偽ドメインへ飛ぶなら疑わしいです。
- 個人情報の入力を求めるリンクに警戒する。決済、ログイン、身分証番号の入力はとくに注意してください。
WIFI:形式のコードに気を付ける。見知らぬ WiFi に接続すると通信を盗聴される恐れがあります。
プライバシーについて
認識処理はすべてブラウザ内で完結します。画像をメモリに読み込み、まずローカルでグレースケール化、二値化、位置検出を行い、そのうえで復号します。通信は一切発生しません。F12 で Network パネルを開いて画像をドラッグしてみてください。アップロードは 1 件も起きません。個人情報を含む QR コードのスクリーンショット(健康コード、会員コードなど)も安心して確認できます。
よくある質問
画面のスクリーンショットでも認識できますか?
できます。QR コードの領域を欠けなく切り取れば(周囲の白い余白を切らないこと)、認識率は高くなります。スクリーンショット内で QR コードがごく一部しか占めていない場合は、QR コードの領域までトリミングしてからアップロードすると効果的です。
複数の QR コードを認識できますか?
1 回につき 1 枚の画像を処理します。1 枚に複数の QR コードがある場合、ツールはそのうち 1 つ(通常は最も大きく中央にあるもの)の結果を返します。すべて読み取りたいときは、それぞれ切り出してからアップロードしてください。
動的 QR コードには対応していますか?
いわゆる「動的コード」も実体は普通の QR コードで、中の URL が転送サービスのアドレスになっているだけです。復号すると、最終的な遷移先ではなく、その中間の転送アドレスが表示されます。これは正常な結果です。
WeChat の支払いコードを解析すると文字化けするのは壊れているから?
壊れてはいません。支払いコードの中身は暗号化され、有効期限を持つ決済用の文字列で、そもそも読めないように設計されています。どのツールで解析しても同じ文字列になります。
画像はサーバーに保存されますか?
されませんし、お使いの PC から出ることもありません。ツールにバックエンドはなく、ロジックはすべてブラウザ内で動きます。ネットワークを切っても機能は使えます。