PDFから画像を抽出する

PDFファイルから画像を抽出する必要があるとき

目次

PDFファイルから画像をスクリーンショットやレンダリングせずに保存する必要がある場合があります。
pdfimagesはそのような状況で役立ちます。

マンがスクリーン上の図を撮影しているコミック画像

LinuxでPDFファイルから画像を抽出する最も一般的で効果的なツールは、コマンドラインユーティリティのpdfimagesです。
これはpoppler-utilsパッケージの一部です。

Linuxでpdfimagesユーティリティを使用するステップバイステップの手順

1. pdfimagesをインストール(すでにインストールされている場合は飛ばしてください):

多くのLinuxディストリビューションではpdfimagesがデフォルトで含まれています。必要であれば、パッケージマネージャーを使用してインストールしてください:

sudo apt-get install poppler-utils

またはFedoraの場合:

sudo dnf install poppler-utils

2. テルミナルを開く:

Ctrl + Alt + Tを押してテルミナルウィンドウを開きます。

3. pdfimagesを使用して画像を抽出:

基本的な構文:

pdfimages  

例:

pdfimages /path/to/file.pdf /path/to/output/image
  • これにより、file.pdfからすべての画像が抽出され、指定された出力ディレクトリにimage-000.ppmimage-001.ppmなどのファイルとして保存されます。

4. JPEG形式で画像を抽出(希望する場合):

画像をJPEG形式で抽出したい場合は、-jオプションを使用してください:

pdfimages -j /path/to/file.pdf /path/to/output/image
  • これにより、JPEG画像は.jpgファイルとして保存されます。

5. 特定のページから画像を抽出:

  • 特定のページ範囲から画像を抽出するには、-f(最初のページ)と-l(最後のページ)を使用してください:
pdfimages -f 2 -l 5 -j /path/to/file.pdf /path/to/output/image
  • これにより、ページ2からページ5の画像が抽出されます。

6. その他のオプション:

  • PNG形式で画像を抽出するには、-png(バージョンによってサポートされている場合)を使用してください。
  • パスワード付きのPDFから画像を抽出するには、-opw 'ownerpassword'または-upw 'userpassword'を使用してください。

注意事項

  • デフォルトの出力形式はPPM(カラー)またはPBM(モノクロ)です。JPEG形式にしたい場合は-jを使用してください。必要に応じて、ImageMagickのconvertなどのツールを使ってPPM/PBMファイルを他の形式に変換してください。
  • 出力ファイルは自動的に番号付けされ、指定されたディレクトリに保存されます。

要約表

コマンド例 説明
pdfimages input.pdf image デフォルトのPPM/PBM形式ですべての画像を抽出
pdfimages -j input.pdf image 可能な限りJPEG形式で画像を抽出
pdfimages -f 3 -l 5 input.pdf image ページ3からページ5の画像を抽出
pdfimages -opw 'password' -j input.pdf image 所有者パスワード付きPDFから画像を抽出

この方法は効率的で、埋め込まれた画像を含むほとんどのPDFに適用できます。ただし:

  • pdfimagesは画像を元の解像度のみで抽出します。
  • 出力解像度を制御したい場合は、PyMuPDFなどのPDFレンダリングライブラリを使用し、画像を作成する際の希望するDPIを指定してください。

PDFから特定の解像度で画像を保存する方法

pdfimagesを使用して画像を抽出する際、抽出された画像の解像度を指定することはできません。このツールは、リサンプリングや品質の変更なしに、埋め込まれた画像の元の形式と解像度で画像を抽出します。解像度は、画像がPDFに保存された方法によって決まり、pdfimagesは抽出中に解像度をスケーリングするオプションを提供していません。

特定の解像度(例えば、ページまたはページの一部を指定したDPIで画像としてレンダリング)で画像を抽出したい場合は、PyMuPDF(fitz)などのPDFレンダリングライブラリやツールを使用してください。PyMuPDFでは、ページを画像にレンダリングする際、dpiパラメータを使用して希望する解像度を指定できます:

import fitz  # PyMuPDF
doc = fitz.open("input.pdf")
page = doc.load_page(0)  # 最初のページ
pix = page.get_pixmap(dpi=300)  # 300 DPIでレンダリング
pix.save("output.png")

この方法では、指定したDPIでページのラスタライズされた画像が作成され、元の埋め込まれた画像ではなくなります。

PDFから画像を抽出する他のツール

画像を抽出する際、解像度を失うことなく最も優れたソフトウェアは、レンダリングやリサンプリングせずに元の埋め込まれた画像を直接抽出するツールです。上位の選択肢には以下が含まれます:

  • Adobe Acrobat Pro: 「すべての画像をエクスポート」機能を提供し、画像を元の品質と形式でスタンドアロンファイルとして抽出します。この方法は非常に信頼性が高く、PDFに保存された画像の正確な解像度と品質を保持します。

  • pdfimages(XPDF/Poppler suiteから): Linuxおよび他のプラットフォームで利用可能な無料でオープンソースのコマンドラインツールです。pdfimagesは、JPEG、JPEG2000、その他の形式でPDFからすべての画像を元の形式と解像度で抽出します。コストをかけずに高品質な抽出プロセスを希望するユーザーには広く推奨されています。

  • オンラインツール(例: PDF24 Tools, PDFCandy, pdfforge): PDFをアップロードし、抽出された画像をダウンロードできるサービスです。迅速なタスクに便利で、インストール不要ですが、機密性の高いドキュメントではプライバシーの懸念が生じる可能性があります。

要約表

ソフトウェア/ツール プラットフォーム 元の解像度を保持する メモ
Adobe Acrobat Pro Windows/Mac はい 有料、プロフェッショナルグレード、非常に信頼性が高い
pdfimages(Poppler) Linux/Windows はい 無料、オープンソース、コマンドラインユーティリティ
PDF24 Tools, PDFCandy ウェブベース はい 無料、使いやすい、プライバシーの考慮が必要

重要なポイント:

常に画像を抽出するツールを使用してください(レンダリングやスクリーンショットではなく)。Adobe Acrobat Proとpdfimagesは、この目的のために業界標準であり、画像がPDFに存在するまま保存されるように保証します。

pdfimagesのコマンドラインオプション

pdfimages /helpを実行すると、以下のような出力が表示されます:

$ pdfimages /help
pdfimages version 24.02.0
Copyright 2005-2024 The Poppler Developers - http://poppler.freedesktop.org
Copyright 1996-2011, 2022 Glyph & Cog, LLC
Usage: pdfimages [options] <PDF-file> <image-root>
  -f <int>       : 画像を変換する最初のページ
  -l <int>       : 画像を変換する最後のページ
  -png           : デフォルトの出力形式をPNGに変更
  -tiff          : デフォルトの出力形式をTIFFに変更
  -j             : JPEG画像をJPEGファイルとして出力
  -jp2           : JPEG2000画像をJP2ファイルとして出力
  -jbig2         : JBIG2画像をJBIG2ファイルとして出力
  -ccitt         : CCITT画像をCCITTファイルとして出力
  -all           : -png -tiff -j -jp2 -jbig2 -ccittと同等
  -list          : 画像リストを出力し、保存しない
  -opw <string>  : 暗号化されたファイルの所有者パスワード
  -upw <string>  : 暗号化されたファイルのユーザーパスワード
  -p             : 出力ファイル名にページ番号を含める
  -q             : どんなメッセージやエラーも表示しない
  -v             : 著作権とバージョン情報を表示
  -h             : 使用方法情報を表示
  -help          : 使用方法情報を表示
  --help         : 使用方法情報を表示
  -?             : 使用方法情報を表示

有用なリンク