ツールの説明

このツールは、多数の画像に含まれる QR コードを一度に読み取ります。画像ファイルを好きなだけ追加すると、各画像から検出したすべての QR コードをデコードし、ファイル名の横に結果を一覧表示します。1 枚の画像に複数の QR コードが含まれている場合は、複数の行が表示されます。スクリーンショットや写真が入ったフォルダーから、リンク、Wi-Fi 設定、連絡先カード、チケットなどを 1 つずつスキャンすることなくすばやく取り出せます。

スキャンには WebAssembly 用にコンパイルされた ZBar ライブラリを使用し、処理はすべてブラウザー内で実行されるため、画像がアップロードされることはありません。最新のブラウザーで利用できます。回転している QR コードや透明な背景の QR コードも読み取ることができ、全体が暗い背景に明るく表示された画像にも対応しています。

主な機能

  • 画像をドラッグするか参照して、複数の画像を一度に追加
  • 画像内のすべての QR コードを読み取り、上から下、次に左から右の順に一覧表示
  • 各ファイルの結果をステータス付きの並べ替え可能なテーブルで確認
  • 1 行につき 1 つのデコード結果を表示するプレーンテキスト、またはファイル名、ステータス、値を保持する JSON に切り替え
  • QR コードがないファイルや、読み取り可能な画像ではないファイルも、黙ってスキップせずに報告
  • テキストと JSON の出力をコピーまたはダウンロード

注意事項

対応する画像形式はブラウザーによって異なりますが、通常は PNG、JPEG、GIF、WebP、BMP、AVIF が含まれます。小さい QR コード、ぼやけた QR コード、または大きく切り取られた QR コードは検出できない場合があります。通常の QR コードと反転した QR コード(暗い背景に明るく表示されたコード)が混在する画像では、通常の QR コードが見つからなかった場合にのみ反転した QR コードが読み取られます。

JSON 出力

JSON タブには、デコードされた QR コードごとに 1 件のエントリを含む配列が表示されます。1 つのファイルに複数の QR コードがある場合はコードごとに 1 回ずつ表示され、読み取り可能なコードがないファイルは null の text とともに 1 回表示されます。出力は次の JSON Schema に従います。

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "file": {
        "type": "string",
        "description": "画像ファイルの名前"
      },
      "status": {
        "enum": ["found", "notFound", "unreadable"],
        "description": "found: QR コードがデコードされました。notFound: 画像に QR コードがありません。unreadable: ブラウザーで開ける画像ではありません。"
      },
      "text": {
        "type": ["string", "null"],
        "description": "QR コードからデコードされたテキスト。status が found でない場合は null"
      }
    },
    "required": ["file", "status", "text"],
    "additionalProperties": false
  }
}

たとえば、QR コードが 2 つある画像、QR コードがない画像、画像ではないファイルがそれぞれ 1 つずつある場合は、次のようになります。

[
  { "file": "poster.png", "status": "found", "text": "https://example.com" },
  {
    "file": "poster.png",
    "status": "found",
    "text": "WIFI:T:WPA;S:Guest;P:secret;;"
  },
  { "file": "logo.png", "status": "notFound", "text": null },
  { "file": "notes.txt", "status": "unreadable", "text": null }
]