読み取る理由と基本的な考え方
PDFに埋め込まれたQRコードは、スマホだけではなくPCでも簡単にデコードできます。
- まず「QRコードが画像としてPDF内に埋まっている」ことを想定し、
- それを「画像ファイルに変換する」か「直接PDFを読み取る」かの二つの流れで進めます。
本ガイドでは、Windows・macOS・Linux全環境で使える無料かつ使いやすいツールをピックアップし、ステップバイステップで解説します。
1. 事前準備 ― 必要なアプリ・ツールは何?
| OS | 推奨ツール | 無料・有料 | 備考 |
|---|---|---|---|
| Windows | QR Code Desktop Reader (ZBar‑DLL) | 無料 | 直接PDFを開いて読み取れる |
| macOS | ZXing Decoder Online (ブラウザ) | 無料 | 画像をドラッグ&ドロップで読み取る |
| Linux | zbarimg (コマンドライン) | 無料 | apt install libzbar0 でインストール |
| 共通 | PDF画像抽出用: pdf2image (Python), Adobe Acrobat Reader (有料/無料版) |
無料/有料 | QRコード一部分だけを抜き出す |
| 共通 | オンラインリーダー: qr-code-reader.com 等 |
無料 | ファイルアップロードですぐ解析 |
ポイント
- PDFのページが多い場合は「バッチ処理」を行えるツールを優先してください。
- 画像の解像度が低いと読めないので、抽出時に「300‑dpi 以上」推奨。
2. PDFからQRコード画像を抜き出す方法
2‑1. Adobe Acrobat Reader を使う(Windows/macOS)
- PDFを開く
- ツール > 画像を選択 を選び、QRコード部分をドラッグで囲む
- 右クリック → 画像をコピー
- 別の画像編集ソフトで 貼り付け → PNG 等で保存
注意
- 画像をコピーすると、ページ全体の解像度で取得されるため、縮小サイズになることがあります。
- 画像編集ソフトは「GIMP」や「Paint.NET」など無料で手軽に利用できます。
2‑2. pdf2image(Python)で一括変換
pip install pdf2image pillow
from pdf2image import convert_from_path
pages = convert_from_path("sample.pdf", dpi=300)
for i, page in enumerate(pages):
page.save(f"page_{i+1}.png", "PNG")
- これで PDF の各ページが画像として保存されます。
- 画像内に複数 QR コードがある場合は OpenCV で二次的に領域を検出して切り出すことも可能です。
メリット
- GUI を持たず自動化やスクリプト化が容易
- 大量のファイルでも高速に変換
2‑3. pdftoppm(Linux)で高速変換
sudo apt-get install poppler-utils
pdftoppm -jpeg -rx 300 -ry 300 sample.pdf output
output-1.jpg, output-2.jpg, …のように出力されます。- JPEG で保存するとファイルサイズが小さく済む点は魅力。
3. 抜き出した画像をQRコードリーダーでデコード
3‑1. Windows:QR Code Desktop Reader
- 公式サイトから ZBar をダウンロード
zbarimg.exeを右クリック → ファイルを開く で画像を選択- コマンドプロンプトにデコード結果が表示
zbarimg.exe "qr_image.png"
推奨解像度:
300dpi以上。低解像度でエラーになる場合は「解像度を上げて再試行」。
3‑2. macOS/ブラウザ:ZXing Decoder Online
https://zxing.org/w/decode.jspxを開く- 「Browse」→ 画像ファイルアップロード
- 解析結果はページ下部に即座に表示
補足
- 上記サイトはブラウザのみで完結し、ソフトインストール不要。
- ただし大きな画像(>5MB)はアップロードに時間がかかる場合があります。
3‑3. Linux:zbarimg(コマンドライン)
zbarimg -q "qr_image.png" # -q は quiet: 結果だけ表示
- 出力は
QR-Code: <URL>. sudo apt-get install libzbar0でインストール可能。
3‑4. Python スクリプトで一括デコード
from pyzbar.pyzbar import decode
from PIL import Image
for i in range(1, 5):
img = Image.open(f"page_{i}.png")
decoded = decode(img)
for d in decoded:
print(f"QR on page {i}: {d.data.decode('utf-8')}")
用途
- 大量 PDF を扱う業務で、QR を自動で抜き出しデータベースへ格納したい場合に便利。
4. よくあるトラブルと対策
| 兆候 | 原因 | 解決策 |
|---|---|---|
| 空白文字(デコード失敗) | 画像の解像度が低い、QR が部分的に切り取られている | 画像を 300‑dpi 以上で再生成、QR の全体を確認 |
| 読み取れない | QR が破損している、または大きさが 0.5 cm 以下 | 画像品質を確認し、可能なら別のコピーを抽出 |
| 長い文字列が途切れる | 出力キャッシュが壊れている | スクリプトを改行で分割表示、または -q オプションで全体を取得 |
| 色彩が逆転 | PDF が「白地に黒コード」ではなく「黒地に白コード」 | 画像を反転(Photoshop 等で簡易 invert) |
- 重要:PDF 生成時に「圧縮して」いると QR コードがモノクロ化されることがあります。
- 逆に解像度を上げすぎると JPEG アーカイブ化でノイズが出るので注意。
5. 業務に役立つ拡張アイデア
- QR‑to‑QR:PDF から抽出した QR コードを再度コード化し、別の形で保存。
- 例えば、データベースへの埋め込み用に
qrcodeライブラリで新規生成。
- 例えば、データベースへの埋め込み用に
- 複数 QR の並列処理:
concurrent.futuresでマルチスレッド処理。 - OCR との統合:QR コードに添えられた画像説明(メッセージ)を OCR で抽出し、データフロー全体を統括。
- API 連携:Google Vision API や Azure QR Reader を使えば、大量データのクラウド化容易。
業務効率化:実際に PDF が 1 つあたり 10 個以上の QR コードを持つケースでは、スクリプトベースで自動バッチを作ると時間を大幅短縮できます。
6. まとめ ― もう一度チェックリストを走れ
- PDF → 画像変換:300‑dpi 以上を確保
- 画像保存:png/jpg で保存、ファイル名は分かりやすく
- QR リーダー:専用アプリ(ZBar、ZXing)やオンラインツールでデコード
- 結果の確認:URL、テキスト、データ構造を必ずチェック
- トラブルシューティング:画像品質が重要
これで「PDF ファイル内の QR コードを PC で読み取る」作業が 初級者から上級者まで実践可能なフロントラインになります。
何度でも手順を踏めば、PDF の裏に潜んだ QR コードがPCで簡単に読み取れるようになるでしょう。


コメント