
UNIX Cafe | 第22回
はじめに|PDFの中の「画像だけ」を取り出したいあなたへ
PDFファイルを見ていると、
- 写真や図だけを使いたい
- スライドや資料から画像だけ抜き出したい
- 劣化せずに元の画質のまま保存したい
そんな場面に出会うことがあります。
実は、ターミナルを使えば PDF の中に入っている画像を、かんたん・高速・高品質で取り出すことができます。
今回は、UNIX Cafe のカウンターでの会話を交えながら、pdfimages コマンドを使った PDF → 画像抽出の方法を、初心者向けにやさしく解説します。
PDFの画像抽出に使うコマンド:pdfimages
pdfimages は、PDF 内に埋め込まれている画像を再圧縮せず、
そのままの形式と品質で抽出できる便利なコマンドです。
ポイントは次の3つです。
- 画質が劣化しない
- PNG / JPEG を自動判別
- 一括処理がとても速い
PDF資料を扱う人にとって、まさに「定番ツール」と言えます。
事前準備|macOS でのインストール方法
macOS では、Homebrew を使って簡単にインストールできます。
brew install popplerこの中に pdfimages コマンドが含まれています。
インストール後は、すぐに使える状態になります。
PDFから画像を抽出する基本コマンド
基本形はとてもシンプルです。
pdfimages -all input.pdf output意味は次のとおりです。
input.pdf:元のPDFファイルoutput:出力される画像ファイル名のプレフィックス
実行例
pdfimages -all input.pdf output実行すると、カレントディレクトリに次のような画像が生成されます。
output-000.jpg
output-001.jpg
output-002.jpg
...PDF 内に保存されていた形式のまま、画像が取り出されます。
画質が変わらないのが最大の魅力です。
よく使うオプション一覧
| オプション | 内容 |
|---|---|
-all | すべての画像を元の形式で抽出 |
-png | PNG形式で出力(再圧縮あり) |
-j | JPEG画像のみ抽出 |
-list | PDF内の画像一覧を表示 |
基本的には -all を使えばOK です。
PDF内の画像を「確認だけ」したい場合
画像を抽出する前に、「どんな画像が入っているかだけ知りたい」こともありますよね。
そんなときは次のコマンドを使います。
pdfimages -list input.pdf出力例:
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
1 0 image 1365 2048 rgb 3 8 jpeg yes 15 0 300 300 200K 1.0
2 1 image 1200 1600 rgb 3 8 jpeg yes 23 0 300 300 150K 1.0
これで、
- 画像のサイズ
- 解像度
- ファイル形式
- ページ番号
などを一覧で確認できます。
無駄な抽出を防げる便利な機能です。
注意点|抽出できないケースもある
pdfimagesはとても強力ですが、次のような場合は注意が必要です。- ベクター描画(図形・線・文字)は画像として抽出されない
- スキャンPDFは「1ページ=1画像」になることがある
- 透明レイヤーや特殊形式は対象外の場合がある
- 「画像として埋め込まれているかどうか」が判断基準になります。
複数PDFを一括で処理するシェルスクリプト
#!/bin/bash
# ==========================================
# PDF から画像を一括抽出するスクリプト
# 使い方:
# ./pdf_extract_img.sh file1.pdf file2.pdf ...
# ./pdf_extract_img.sh *.pdf ←複数OK
# ==========================================
# 引数チェック
if [ $# -eq 0 ]; then
echo "使い方: $0 <pdfファイル> ..."
exit 1
fi
# pdfimages が使えるか確認
if ! command -v pdfimages >/dev/null 2>&1; then
echo "⚠ 'pdfimages' が見つかりません。"
echo " macOS: brew install poppler"
exit 1
fi
# PDFを1つずつ処理
for file in "$@"; do
if [ ! -f "$file" ]; then
echo "⚠ ファイルがありません: $file"
continue
fi
base=$(basename "$file" .pdf)
outdir="${base}_images"
echo "📦 抽出中: $file → $outdir"
mkdir -p "$outdir"
# -all → 全ての画像を抽出
pdfimages -all "$file" "$outdir"/img
# 抽出されたか確認
if ls "$outdir"/* >/dev/null 2>&1; then
echo "✅ 完了!画像を $outdir/ に保存しました"
else
echo "⚠ 画像が見つかりませんでした: $file"
fi
done
使い方
スクリプトの保存
pdf_extract_img.sh例:pdf_extract_img.sh という名前でファイルを保存します。
実行権限を付ける
chmod +x pdf_extract_img.shchmod +x でファイルに実行権を付けます。
単一ファイルを処理
./pdf_extract_img.sh sample.pdf1枚だけのPDFファイルを処理する場合は、ファイル名「sample.pdf」を指定してください。
複数ファイルもOK
./pdf_extract_img.sh *.pdf複数のPDFファイルを処理する場合は、ファイル名ではなく「 *.pdf」で*アタリスクを指定してください。
抽出結果
sample.pdf
↓
sample_images/
├ img-000.jpg
├ img-001.png
├ ...
「sample_images」というフォルダが作成され、フォルダの中に画像が抽出されます。
ターミナルを使うと、専用ソフトを使わずに「面倒な作業」を自動化することができます。
まとめ|PDFの画像抽出はターミナルが最速・最強
最後に、今回のポイントをまとめます。
| 操作 | コマンド |
|---|---|
| インストール | brew install poppler |
| 画像抽出 | pdfimages -all input.pdf output |
| 一括処理 | ./pdf_extract_img.sh *.pdf |
PDFから画像だけを取り出したいなら、pdfimages はシンプルで失敗しにくい最適解です。
さらに学びたいあなたへ
📘 用途ごとに選ぶ Linux のおすすめ本

