スマートフォンにすでにある画像から、QRコードを読み取る。

コードは画像として届きます。メールのスクリーンショット、誰かが送ってきた写真、保存しておいたページ。カメラは画面と反対を向いているので、ここでは役に立ちません。スマートフォンが最初からできること、そして画像が読めないときの対処をまとめました。

カメラと画面は反対を向いている

コードを表示しているスマートフォンは、そのコードに向けなければならないスマートフォンでもあり、メインカメラは背面を向いています。どの設定を変えても、これは逆になりません。

2台目のスマートフォンも、画面にカメラを向けているだけ

ディスプレイはピクセルの格子であり、カメラのセンサーもまた格子です。片方をもう片方で撮ると、規則的な縞模様が画像に重なります。

この縞模様には、直感に反する点が2つあります。ひとつは、画面が暗いときほどひどくなること。暗い表示ほど、ピクセルが消えている時間が長いからです。もうひとつは、明るい部屋でさらにひどくなること。露出が短いと、ちらつきを平均化できないからです。

うまくいく距離が存在しないこともある

スマートフォンのメインカメラは、数センチまで近づくとピントが合わなくなります。ピクセルを稼ごうと近づければ写真がぼやけ、ピントを合わせようと離せばコードが小さすぎて読めません。

スマートフォンが最初からできること

どちらのプラットフォームも、画像からコードを読む機能をすでに備えています。そしてどちらも、それを声高には案内していません。

iOSでは、「写真」でコードを長押しする

「写真」で画像を開き、コードを長押しすると、見つかった内容が提示されます。先に「設定」→「一般」→「言語と地域」で「テキスト認識表示」をオンにしておく必要があり、すべての地域や言語で使えるわけではありません。

この機能が入ったのはiOS 16で、iOS 15ではありません。iOS 15で入ったのは、普通の文字を対象にした「テキスト認識表示」です。Appleはこの経路を一度も文書にしていません。QRコードの読み取りに関する案内が扱うのは、カメラと、自分で追加するコントロールセンターのボタンだけで、保存済みの写真には触れていません。

Androidでは、コードをその場で丸く囲む

すでに画面に映っているコード向けに作られているのが「かこって検索」です。ホームボタンかナビゲーションバーを長押しし、コードを丸で囲みます。メール、PDF、写真、動画の中のコードを読み取れます。

使うにはGoogleアプリが必要で、アシスタントにGoogleが設定されている必要があります。Android 17のそれ以外の手段は、Pixelのカメラアプリを含めてカメラを向ける方式で、ポートレートモードや動画モードではスキャンしません。メーカー独自のUIでは動作が異なります。

Visual Intelligenceはこの用途の道具ではない

iOS 26では画面に映っているものに対して使えるようになり、まさに求めていた機能に聞こえます。実際は違います。QRコードやバーコードには一切関与せず、iPhone 15 Pro以降が必要で、対応は16言語、しかもベータ版です。

その経路が行き止まる場所

土台にある認識エンジンは一次元バーコードを読めます。ところが、その上に載っているボタンはリンクを前提にしています。どちらのプラットフォームが用意する操作も、結局は「このサイトを開く」の変形です。店舗のカードはただのEAN-13で、アドレスなど入っていません。

そもそもリンクではない中身もあります。Wi-Fiの認証情報は文字列ですし、eSIMのアクティベーションコードも同じです。後者は、iPhoneならカメラ越しには処理しますが、「写真」からは処理しません。

しかも何も残りません。リンクをタップし、シートが閉じ、来週にはまた同じスクリーンショットを探すことになります。Apple Walletも助けにはなりません。パスは店舗が発行して署名しなければ存在できないからです: Apple・Google Walletのカード

このアプリが存在する理由は、まさにそこにあります。カードとして保存したコードは、2度目に必要になったときもそこにあり、探し回る必要がありません。ScanKeeperはiOS、Androidで無料です。

いちばん短い経路では、画像を保存しない

ここまでの経路はどれも、画像がどこかに置かれていることが前提でした。写真ライブラリの中か、保存しておいたファイルの中か。けれども多くのコードは、そういう届き方をしません。メール、チャット、予約確認、開いたままのページ — 何かの中に入って届きます。先に保存するという手順は、道具がそれを求めたから踏むだけの手順です。

ですから、保存しないでください。画像を表示しているアプリには共有ボタンがあり、その一覧の中に、メッセージアプリと並んでScanKeeperがあります。

クーポンメールのスクリーンショットの上にiOSの共有シートが開き、候補のアプリにScanKeeperが並んでいるところ
誰かに送るときと同じ並びです。

iOSでは、アプリを離れないまま名前を付けられる

いま読んでいた画面の上に、パネルが重なって開きます。コードだけが明るく残りが暗くなった画像、名前の入力欄、そして「保存」。パネルが閉じると、画面はメールに戻っています。ScanKeeperは一度も開きません。これは演出ではなく、iOSが共有拡張に自分のアプリを開くことを許していないためです。だからその場で終えられることは、すべてその場で終わらせます。

1枚に複数のコードが写っていれば、順番に1件ずつ表示され、カウンターと、不要なものを飛ばす「スキップ」が付きます。バツ印で閉じるのは、後回しではなく取りやめです。保存していないものは破棄され、次にアプリを開いても何も待っていません。

Androidではアプリが開いて、同じ作業を行う

Androidに同じ仕組みのパネルはないため、ScanKeeperが前面に出て、「アクション」から進んだ場合と同じ読み込み画面を表示します。結果は変わらず、経路が1画面だけ長くなります。両方の端末を使っていて同じ動きを期待していたなら、知っておく価値のある違いです。

チケットはPDFのまま渡せる

添付ファイルを途中でスクリーンショットに変える必要はありません。ファイルそのものを送れば、ページは端末上で画像として描き出され、他の画像と同じように読み取られます。原寸のコードと、画面の拡大率のまま固定されたコードとの違いは、ここで生まれます。

どの経路も、元のデータには手を触れません。届いたものは複製され、読み取られるのはその複製で、複製は処理後に破棄されます。写真ライブラリにもメールにもファイルにも、何かが書き戻されることはありません。

画像が読めないとき

1モジュールあたり3ピクセルが目安

QRコードは、モジュールと呼ばれる小さな四角を並べた格子です。読み取りが安定するのは1モジュールあたり3ピクセルほどからで、2ピクセルは規格上の下限であって、目指す値ではありません。

つまり、幅25モジュールのコードには横およそ75ピクセルが必要で、幅95単位のEAN-13には少なくとも190ピクセルが必要です。

余白もコードの一部

問題のなかったコードを壊す原因でいちばん多いのが、ぎりぎりまでの切り抜きです。QRコードは四辺すべてに4モジュール分の余白を必要とします。EAN-13は左に11モジュール幅、右に7モジュール幅を求めるので、左端を削るほうが痛手になります。

コントラストと、30パーセントという俗説

白地に薄いグレーは、等級評価の基準をそのまま外れます。コードの背後に写真やグラデーションを敷くと、モジュール単位でコントラストが崩れます。明るい地に暗いコードが確実です。

QRコードは30パーセント欠けても読めるとよく言われますが、その割合はコードワードの比率であって、面積の比率ではありません。四隅の3つの四角にいたっては、まったく保護されていません。中央のロゴなら耐えられますが、隅を指で覆えば読めなくなります。

一次元コードには誤り訂正がまったくありません。チェックディジットは誤りに気づけますが、直すことはできません。QRコードなら何ともない光の帯も、バーの上を横切れば致命的です。

どうやっても読めないとき

画像がもう手の施しようのない状態でも、コードの下にある値はたいてい無事です。

カメラ、画像読み込み、手入力の3方法すべてが同じ編集可能カードを作ります。

写真ライブラリいっぱいにあるなら、もっと速い経路があります: 一括読み込み

画像に写っているコードが、すべて残す価値のあるものとは限らない

写真ライブラリには、頼まなくてもこうしたコードが溜まっていきます。

名前を付ける価値のあるコード

もう一度提示を求められるものです。メールで届いた会員証のバーコード、ジムや図書館の番号、配達通知に書かれたロッカーのコード、期限の付いたクーポン。

画像には収まらないコード

切り替わり続けるチケットのバーコードは15秒ごとに更新され、そのスクリーンショットでは改札を通れません。コードが動いたりカウントダウンしたりしているなら、画像に価値はありません。保存したコードがいつまで使えるかは、それ自体がひとつの話題です: バーコード整理アプリ

スクリーンショットや保存した写真からQRコードを読む手順

  1. 01

    スキャナーを開いてギャラリーを選ぶ

    ライブラリでスキャナーボタンをタップし、上部の写真のボタンを押します。どこかにカメラを向ける必要はなく、複数の画像をまとめて選んでも構いません。

    印刷バーコードとギャラリー・複数読み込み操作を表示するスキャナー
    同じスマートフォンの既存画像を選択します。
  2. 02

    読み取り結果を確認する

    ScanKeeperは端末上で画像を読み取り、認識した形式を、解読した値と並べて表示します。

    検出したEAN-13値とカード名を表示する新規フォーム
    検出した種類と値を確認します。
  3. 03

    カードとして保存する

    口に出して言うときの呼び方で名前を付け、保存します。カードには値と形式がそのまま残ります。

    検出したEAN-13値とカード名を表示する新規フォーム
    1か月後には、数字の羅列より名前のほうが役に立ちます。
  4. 04

    画像なしでもう一度開く

    保存したカードには、コードと、コピーボタン付きの値、形式、これまでに開いた回数が表示されます。

    A saved ScanKeeper card showing its barcode, encoded value, and format
    解読した値を、そのままコピーできます。

保存したコードにできて、画像にはできないこと

2台目のスマートフォン不要

同じ端末のメール、メッセージ、PDFのスクリーンショット、保存写真に表示されたコードを解析します。

端末上で検出

画像は端末内で読み取り、ScanKeeperサーバーへ送信しません。

リンクだけでなく、値そのもの

ウェブアドレスを含まないコードは、読んでコピーできる値として返ってきます。

始める前に知っておくこと

同じスマートフォンのスクリーンショットからQRを読めますか?

はい。しかも、保存しなくて済むこともあります。画像が入っているアプリからそのままScanKeeperへ共有するか、いったん保存して、後からギャラリーで選びます。どちらの経路でも、2台目の端末は必要ありません。

カメラでは読めたのに、保存した写真では読めないのはなぜですか?

カメラを向けている間は何度でも試せます。動かし、ピントを合わせ直し、角度を変えながら、どれか1コマが読めるまで続けられます。保存済みの画像は、撮ったときの画質のまま一度きりの勝負です。

写真からQRとバーコードの両方を読めますか?

はい。QR、EAN、UPC、Code 128、PDF417、Data Matrix、Aztecなどを画像から認識します。

PDFの中にあるQRコードを読めますか?

スクリーンショットではなく、PDFそのものを渡してください。ページは端末上で画像として描き出され、他の画像と同じように読み取られます。表示していた拡大率のまま固定されることなく、コードを原寸で扱えます。

画像に複数のコードが写っているときは?

1件ずつ順番に提示され、そのコードだけが明るく、写真の残りは暗く表示されます。チケットのコードとラウンジのパスが載った確認メールなら、両方が提示され、不要なほうには「スキップ」が用意されます。

イベントチケットのスクリーンショットで入場できますか?

通れないことが多いです。数秒ごとに更新されるバーコードは、静止画に価値がないように作られています。チケットアプリの中には、スクリーンショット自体を禁止しているものもあります。

どうやっても画像が読めないときは?

手で入力してください。バーコードの下に印刷された番号がコードそのもので、正しい形式を選んで手入力すれば、スキャンした場合と同じカードができます。

画像の読み取りにインターネットは必要ですか?

不要です。画像解析は端末上で行われ、アカウントもインターネットも必要ありません。

アプリを入手

登録もメールアドレスもパスワードも不要。インストールしたら、あとはカードを追加するだけです。

App StoreからダウンロードGoogle Playで入手
または、スマートフォンのカメラをこれに向けて、コードを読み取ってください。