時々、商工会議所からセミナーの案内メールが届きます。ところが案内にはQRコードだけが貼り付けてあり、URLが記載されていません。パソコンでメールを受信している場合、わざわざスマートフォンを取り出してQRコードを読み取るのは手間がかかります。「パソコン画面に表示されているQRコードをそのまま読み取って、URLを開くことはできないのか」と思い、いろいろな方法を試してみました。しかし、一筋縄ではいかず、なかなかうまくいきません。現時点では以下の方法がベストのようです。

AIチャットツール(ChatGPT / Gemini)で読み取る方法を試してみた
まず思いつくのが、ChatGPTやGeminiなどのAIにQRコードの画像を送って読み取ってもらう方法です。
手順としては非常にシンプルです:
- ChatGPTやGeminiのチャット画面を開く
- QRコードの画像ファイルを添付してアップロードする
- 「このQRコードの内容を読み取ってください」と指示する
- AIがQRコードを解析し、URLや文字列などの内容を返答する
しかし、実際に試してみると以下のような返答が返ってきました:
「申し訳ありませんが、私のようなAIの画像認識機能では、画像内のQRコードを直接読み取ってリンク先のURL(ウェブサイトの番地)を解読することができません。」
なぜAIはQRコードを読み取れないのか
AIからの説明によると、理由は以下の通りです。
対話型AIは画像の中に何が写っているか(文字、人、風景など)の「パターン」をふんわりと認識するのは得意です。しかしQRコードは「白と黒のドットの厳密な配列を、特定の計算式(アルゴリズム)に当てはめてデジタルデータに変換する」という処理が必要です。現在の画像認識の仕組みは、このような計算処理を直接行うようには作られていないため、解読ができないのです。
つまり、ChatGPTやGeminiなどのAIチャットツールでQRコードを読み取ることは現時点では基本的にできません。
パソコン画面のQRコードを読み取る現実的な方法
① オンラインQRリーダーを使う(最もおすすめ)
実際に複数のサービスを試した結果、qrcode.red が最も使いやすいです。広告もなくシンプルで、操作もわかりやすいのでまずこちらを試してみてください。
手順:
Win + Shift + SでQRコード部分だけをスクリーンショットで切り取る- qrcode.red をブラウザで開く
- 切り取った画像をアップロードする
- QRコードの内容(URLや文字列)が表示される
インストール不要、Windows・Mac両対応、ブラウザだけで完結します。
② Pythonコードで実装する方法(自動化・開発向け)
プログラムとしてQRコード読み取りを自動化したい場合は、Pythonの pyzbar ライブラリと OpenCV を組み合わせる方法が定番です。
ライブラリのインストール(コマンドプロンプトで実行):
pip install opencv-python pyzbar
静止画像からQRコードを読み取るコード:
import cv2
from pyzbar.pyzbar import decode
# 画像のパスを指定
image = cv2.imread(r"C:\Users\syste\qr.png")
# QRコードを読み取る
decoded_objects = decode(image)
if decoded_objects:
for obj in decoded_objects:
print("✅ QRコードの内容:", obj.data.decode("utf-8"))
else:
print("❌ QRコードが検出されませんでした")
パソコン画面に表示されているQRコードをリアルタイムで読み取るコード:
コマンドプロンプトを表示するとQRコードの画面が隠れてしまうという問題があります。そこで、スクリプト実行後に5秒間の猶予を設けて、その間にQRコードの画面を前面に出す方法が有効です。
まず pyautogui をインストールします:
pip install pyautogui
次にスクリプトを実行します:
import pyautogui
import cv2
import numpy as np
from pyzbar.pyzbar import decode
import time
print("5秒後にスクリーンショットを撮ります...")
print("QRコードの画面を表示してください!")
# 5秒待つ(この間にQRコードの画面を前面に出す)
time.sleep(5)
# 画面全体をスクリーンショット
screenshot = pyautogui.screenshot()
# OpenCV形式に変換
image = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR)
# QRコードを読み取る
decoded_objects = decode(image)
if decoded_objects:
for obj in decoded_objects:
print("✅ QRコードの内容:", obj.data.decode("utf-8"))
else:
print("❌ QRコードが検出されませんでした")
使い方:
- コマンドプロンプトでスクリプトを実行する
- 「5秒後に撮ります」と表示されたらすぐにQRコードの画面をクリックして前面に出す
- 5秒後に自動的にスクリーンショットが撮られてQRコードを読み取る
- 読み取り後にコマンドプロンプトをクリックして結果を確認する
time.sleep(5) の数字を大きくすれば待ち時間を延ばすことができます。
まとめ
| 方法 | 難易度 | コード不要 | おすすめ度 |
|---|---|---|---|
| AIチャット(ChatGPT等) | ★☆☆ | ✅ | ❌ 現時点では読み取り不可 |
| qrcode.red(オンライン) | ★☆☆ | ✅ | ◎ 最もお手軽で確実 |
Python pyzbar + OpenCV | ★★☆ | ✕ | ◎ 自動化・開発向けに最適 |
| Python 画面キャプチャ版 | ★★☆ | ✕ | ◎ 画面表示中のQRコードに対応 |
パソコン画面のQRコードを読み取りたい場合、最も手軽で確実な方法は qrcode.red へのスクリーンショットアップロードです。自動化や繰り返し処理が必要な場合はPythonスクリプトが強力な選択肢になります。AIチャットツールへの期待は現時点では難しいですが、今後の技術進化に注目です。
次回は下記の画面のような入力欄にAIで自動入力する方法を説明します。
