メインコンテンツまでスキップ

Pythonを使用してPDFを画像に変換する

開発中に、PDFファイルを画像フォーマットに変換する必要がよくあります。これは、ドキュメントの表示、データ処理、またはコンテンツの共有に使用されます。

この記事では、PDFファイルをPIL画像に変換できる便利なPythonモジュール、pdf2image を紹介します。

依存関係のインストール

pdf2imageは、pdftoppmpdftocairoという2つのツールに依存しています。異なるオペレーティングシステムにおけるインストール方法は若干異なります:

  • Mac:Homebrewを使用してPopplerをインストールするには、以下のコマンドを実行します:

    brew install poppler
  • Linux:ほとんどのLinuxディストリビューションには、pdftoppmpdftocairoが事前にインストールされています。もしインストールされていない場合は、以下のコマンドでインストールできます:

    sudo apt-get install poppler-utils   # Ubuntu/Debianシステム
  • condaを使用する:どのプラットフォームでも、condaを使ってPopplerをインストールできます:

    conda install -c conda-forge poppler

インストールが完了したら、pdf2imageをインストールします。

pdf2imageのインストール

以下のコマンドを実行して、pdf2imageをインストールします:

pip install pdf2image

使用方法

PDFを画像に変換する基本的な使い方は非常にシンプルです。

以下の例では、PDFの各ページをPIL画像オブジェクトに変換し、画像ファイルとして保存する方法を示します:

from pdf2image import convert_from_path

# PDFファイルを画像のリストに変換
images = convert_from_path('/path/to/your/pdf/file.pdf')

# 各ページをPNG形式で保存
for i, image in enumerate(images):
image.save(f'output_page_{i+1}.png', 'PNG')

もしバイナリデータから変換したい場合は、以下のようにします:

with open('/path/to/your/pdf/file.pdf', 'rb') as f:
pdf_data = f.read()

images = convert_from_bytes(pdf_data)

オプションと高度な設定

pdf2imageは、画像の品質や範囲をカスタマイズできる多くのオプションを提供しています:

  • DPI設定dpiパラメータを調整すると、画像の解像度を向上させることができ、高品質な画像が必要な場合に便利です:

    images = convert_from_path('/path/to/your/pdf/file.pdf', dpi=300)
  • ページ範囲の指定first_pageおよびlast_pageパラメータを使用すると、特定のページだけを変換できます:

    images = convert_from_path('/path/to/your/pdf/file.pdf', first_page=2, last_page=5)
  • 出力画像フォーマットfmtパラメータを使って、出力する画像のフォーマットをJPEGやPNGなどに指定できます:

    images = convert_from_path('/path/to/your/pdf/file.pdf', fmt='jpeg')
  • エラーハンドリング:変換中にフォーマットエラーやファイル破損が発生することがあります。try/exceptを使用して例外をキャッチすることをお勧めします:

    try:
    images = convert_from_path('/path/to/your/pdf/file.pdf')
    except Exception as e:
    print("変換失敗:", e)

結論

pdf2imageは非常に便利なツールで、より多くのオプションや詳細な使い方についてはpdf2image公式ドキュメントを参照してください。