PDFから画像を抽出する方法|ターミナルで一括取り出し|UNIX Cafe

当ページのリンクには広告が含まれています。
第22回|UNIX Cafe「PDF の中から画像を取り出す」

UNIX Cafe | 第22回

ユニ先生のカウンター。
ミナちゃんが PDF を手にして興味津々な表情で話しかけてきます。

ミナちゃん

ユニ先生〜!
PDF に入ってる写真だけ取り出したいんだけど…
どうすればいいのかな?

ユニ先生

ふむ、それならpdfimages というコマンドを使うのがカンタン☕
PDF の中の画像をそのままの品質で取り出してくれるよ。

目次

必要なツール:pdfimages

pdfimages は、Poppler という PDF ツールに含まれています。

① インストール(macOS)

bash
$ brew install poppler
ミナちゃん

Homebrew なら簡単だね〜!

② 画像の抽出

bash
$ pdfimages -all input.pdf output
  • input.pdf … 元のPDF
  • output … 出力ファイル名のプレフィックス

例:

bash
$ pdfimages -all textbook.pdf img

→ 出力

bash
$ img-000.png
  img-001.jpg
  img-002.jpeg
ユニ先生

画像は PDF に保存されている形式でそのまま抽出されるんだ。
品質が劣化しないのが嬉しいところだね☕

オプション説明

オプション説明
-allすべての画像をそのまま抽出
-pngPNGで出力(再圧縮あり)
-jJPEGのみ出力
-listPDF内画像の一覧表示

→ 基本は -all でOK!

抽出画像の保存先

コマンドを実行したカレントディレクトリにそのまま保存されます。

ファイル名例:

bash
$ img-000.jpg
  img-001.png

③ PDF 内の画像一覧だけ確認したい

bash
$ 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
ミナちゃん

どんな画像が入ってるか見れるんだ!
便利〜!

④ 注意点

  • PDF内の画像が埋め込み形式でない場合は 抽出できないことがあります(例:ベクター描画、テキスト、透明レイヤー)
  • スキャンPDFは 1ページ=1画像として抽出されることがあります

使い方のまとめ

操作コマンド
画像抽出pdfimages -all input.pdf output
画像一覧pdfimages -list input.pdf
brewインストールbrew install poppler
ミナちゃん

PDFから画像を取り出すって難しいと思ってたけど…
ターミナルならすごく簡単だね☕!

ユニ先生

PDFは書類の“宝箱”みたいなもの。これで画像の宝探しもバッチリだね!

PDF → 画像 を一括抽出するスクリプト

ミナちゃん

PDFの画像だけまとめて取り出したいんだけど、
ひとつひとつ手作業は大変だよ〜😢

ユニ先生

このスクリプトを使えば、複数の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

# poppler が必要
if ! command -v pdfimages >/dev/null 2>&1; then
    echo "⚠ 'pdfimages' が見つかりません。"
    echo "  macOS: brew install poppler"
    exit 1
fi

# 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

使い方

スクリプトの保存

bash
$ pdf_extract_img.sh

実行権限を付ける

bash
$ chmod +x pdf_extract_img.sh

単一ファイルを処理

bash
$ ./pdf_extract_img.sh sample.pdf

複数ファイルもOK

bash
$ ./pdf_extract_img.sh *.pdf

抽出結果

sample.pdf

sample_images/
    img-000.jpg
    img-001.png
    ...
ミナちゃん

sample_images/ って、ちゃんと名前別に分かれて保存されてる!
便利〜!

ユニ先生

ターミナルは“仕分け職人”でもあるんだ。
うまく使えば、作業がぐっと楽になるよ☕

事前準備 — Popplerインストール

bash
$ brew install poppler

※ pdfimages コマンドが使えるようになります。

まとめ

操作コマンド
インストールbrew install poppler
抽出pdfimages -all input.pdf output
スクリプト一括処理./pdf_extract_img.sh *.pdf

→ PDF から画像だけ取り出すなら
pdfimages が最速で高品質!

ミナちゃん

次は、画像をまとめてリサイズできたら便利かも!

ユニ先生

あ!それも良いメニューだね。次のレッスンに追加しよう☕

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次