QRコード解析
QRコード画像をオンラインでスキャン・デコード。ドラッグ&ドロップ、クリップボード貼り付け対応。すべてブラウザ内で処理
QRコード画像をここにドラッグ&ドロップ
PNG、JPG、GIF、BMP、WebP などの一般的な画像形式に対応
Ctrl+V でクリップボードから画像を貼り付けることもできます
QRコード解析とは?
QR コードデコーダーは、QR コード画像を読み取り、その中に保存されたデータを取り出すツールです。結果は URL、プレーンテキスト、Wi-Fi 設定、連絡先カード、支払い参照、その他のエンコード文字列などです。QR コードを開く前に内容を確認したいとき、スクリーンショットから文字を取り出したいとき、文書内のコードを読みたいとき、スマートフォンで読み取れない原因を調べたいときに役立ちます。デコードできた内容が安全とは限らないため、リンクは開く前に確認が必要です。画像処理はブラウザー内で行われます。
使い方
使い方
- アップロードエリアをクリックしてQRコード画像を選択するか、画像をドラッグ&ドロップします
- Ctrl+V(MacではCmd+V)でクリップボードから画像を貼り付けることもできます
- ツールがQRコードを自動検出し、内容をデコードします
- デコード結果が下部に表示され、コンテンツタイプ(URL/テキスト)を自動で判別します
- 「結果をコピー」ボタンをクリックしてデコード内容をクリップボードにコピーします
デコードのヒント
- 鮮明な画像でQRコード全体が映るようにし、検出の信頼性のため周囲に十分な余白(クワイエットゾーン)を確保してください。
- デコードされたリンクは慎重に扱い、URLを開く前にテキストとドメインを確認しましょう。
利用シーン
仕組み
QRコードのデコードは、写真やスクリーンショットからコードを検出し、遠近歪みを補正し、画像を白黒に二値化し、モジュールグリッドを読み取り、誤り訂正を適用し、エンコーディングモードに従ってデータを復号する、マルチステージの画像処理パイプラインです。本ツールではブラウザのメインスレッド上でJavaScriptとしてフルパイプラインを実装するjsQRライブラリを使用しています。 最初のステージは3つのファインダーパターンの検出です。これはすべてのQRコードの左上、右上、左下隅にある特徴的な7x7の「四角の中の四角の中の四角」のマーカーです。jsQRは回転に関係なく、ファインダーの断面に特徴的な1:1:3:1:1の比率に一致する白黒交互のピクセル列を画像からスキャンします。3つのファインダーが検出されると、その重心がコードのバウンディング四角形を定義します。 遠近補正は、4つの角点から計算されたホモグラフィ行列を使用して四角形を正方形グリッドに変換します。これはQRコードが真正面から撮影されることは稀だからです。この補正により、各モジュール(1ビットを表す黒または白の四角形)が正規グリッド上に配置されます。モジュールサイズはファインダーパターンの寸法とバージョン番号から決定されます。バージョン番号はファインダーに隣接するフォーマット情報ストリップから読み取られます。 画像の二値化はグレースケールピクセル値を純粋な白黒に変換します。jsQRは局所的閾値処理アプローチを採用しています。単一のグローバル閾値(不均一な照明や影では失敗する)ではなく、画像の小さな領域ごとに閾値を計算するため、スマートフォンの写真に一般的なグラデーションやビネットに対して頑健です。 誤り訂正はISO/IEC 18004:2015で規定されたリード・ソロモン符号を使用します。QRコードは4つの誤り訂正レベルをサポートします。L(約7%復元)、M(約15%)、Q(約25%)、H(約30%)。データコードワードと誤り訂正コードワードはブロックごとにインターリーブされます。jsQRはシンドローム計算を実行し、Berlekamp-Masseyアルゴリズムを適用してコードの定格容量内でエラーの位置を特定・訂正します。損傷が訂正レベルを超えた場合、データが破損するのではなくデコードに失敗します。 最後に、デコードされたビットストリームは最初の4ビットのエンコーディングモード指示子に従って解釈されます。数値モード(0001、3桁あたり10ビット)、英数字モード(0010、2文字あたり11ビット)、バイトモード(0100、1文字あたり8ビット、通常UTF-8またはLatin-1)、漢字モード(1000、Shift JISで1文字あたり13ビット)、またはECI(0111、文字セット指定のための拡張チャネル解釈)。本ツールはデコードされた文字列を表示し、URLかどうかを自動判別します(new URL()パースによる判定)。
- ファインダーパターン検出:jsQRは1:1:3:1:1の比率に一致する白黒交互ピクセル列をスキャン。互いにほぼ直角に配置された3つのパターンで、回転に関係なくQRコードの存在と向きを確認。
- 遠近補正:検出された4つの角点から計算されたホモグラフィ行列で、歪んだ四角形を正方形グリッドにマッピング。実際の写真でQRコードが真正面に撮影されることは稀なため、このステップは不可欠。
- 適応的二値化:局所的閾値処理で画像を小さな領域に分割し、領域ごとの閾値を計算。不均一な照明、影、グラデーションに対してグローバル閾値では失敗する場面でもデコーダーを頑健にする。
- リード・ソロモン誤り訂正(ISO/IEC 18004):4レベル(L/M/Q/H)で7〜30%のデータ復元。Berlekamp-Masseyアルゴリズムでエラー位置を特定し、Forneyアルゴリズムで訂正量を計算。損傷がレベルを超えた場合、デコードはクリーンに失敗する。
- エンコーディングモード検出:最初の4ビットでモードを示す。数値(0001、数字に効率的)、英数字(0010、A-Z 0-9と記号用)、バイト(0100、任意のUTF-8/Latin-1データ用)、漢字(1000、Shift JIS用)、ECI(0111、文字セット指定用)。
- バージョンとモジュールグリッド:QRコードのバージョンは1(21x21モジュール)から40(177x177)まで、各バージョンで1辺4モジュール増加。バージョンはファインダーパターン近近辺のフォーマット情報ストリップから読み取り、モジュール数でサンプリンググリッドの密度が決定される。
- ブラウザローカル実行:画像を非表示キャンバス要素に描画し、getImageData()で生のRGBAピクセルバッファを抽出、jsQRがすべてブラウザのメインスレッドで処理。画像データはサーバーにアップロードされず、デコード完了後にキャンバスはガベージコレクションされる。
使用例
URL の QR コード
読み取り内容: https://example.com
種類: URL
動作: スキャナーが確認後、システムブラウザでリンクを開くプレーンテキストの QR コード
読み取り内容: This is text content
種類: テキスト
動作: スキャナーがテキストをクリップボードにコピー、または結果シートに表示WiFi 認証情報の QR コード
読み取り内容: WIFI:T:WPA;S:NetworkName;P:Password;;
種類: WiFi (WPA2)
動作: フォーマットを認識する端末は「NetworkName に接続しますか?」と表示し、指定パスワードで接続vCard 連絡先カード
読み取り内容: BEGIN:VCARD\nVERSION:3.0\nFN:Jane Doe\nTEL:+1-555-0142\nEMAIL:jane@example.com\nEND:VCARD
種類: 連絡先カード
動作: 端末がパース済みフィールドからアドレス帳エントリの新規作成を提案よくある質問
デコードのために画像はアップロードされますか?
いいえ。デコードはブラウザ内でWebAssemblyまたは純粋なJSを介して実行されます。画像バイトはローカルで読み込まれ、サーバーには何も送信されません。
どの入力方法に対応していますか?
ファイルをアップロード、クリップボードから画像を貼り付け、または画像ファイルをドラッグ&ドロップできます。画像はブラウザ内で処理され、サーバーにアップロードされることはありません。
デコーダーは何を返しますか?
生のデコードされたテキストです。ページは結果がURLかプレーンテキストかを検出し、それに応じてバッジを表示します。URLの場合は、URLを開くボタンが提供されます。
なぜQRコードがデコードできないのですか?
一般的な原因:ぼやけ、低コントラスト、グレア、遠近の傾き、コードが部分的に隠れているなどです。近づいてトリミングし、明るさを上げ、表面に対して90°でスマートフォンを安定して保持してください。エラーレベルLのQRコードはほとんど損傷から回復できませんが、レベルHは大幅な遮蔽に耐えます。
スクリーンショットとPDFのQRコードをデコードできますか?
スクリーンショットは完璧なコントラストと遠近の歪みがないため、通常きれいにデコードできます。PDFの場合は、まずQR部分のスクリーンショットを撮り、その画像をアップロードしてください。
QRに含まれるすべてのURLを開くべきですか?
いいえ。QRコードはURLが視覚の中に隠されているため、既知のフィッシングベクトル(「クィッシング」)です。開く前にデコードされたURLを検査してください。ページはドメインを読み取れるよう完全なURLを表示します。タイポドメイン、IPアドレス、本当の宛先を隠す短縮URLに注意してください。
1つの画像内の複数のQRをデコードできますか?
ページは画像ごとに1つのQRコードを検出します。複数のコードを含む画像がある場合は、それぞれを個別にトリミングして個別にアップロードすると最も信頼性の高い結果が得られます。