Python を使用して PDF ファイルから画像を抽出する

Lakshay Kapoor 2023年10月10日
  1. Python で PyMuPDF ライブラリをインストールする
  2. Python で PDF ファイルから画像を抽出する
Python を使用して PDF ファイルから画像を抽出する

Python を使用して、外部ファイルとソースで多くの操作を実行できます。操作の 1つは、Python で PDF ファイルから画像を抽出することです。これは、PDF が長すぎて手動で管理できない場合に、非常に便利です。

このガイドでは、Python で PDF ファイルから画像を抽出する方法を説明します。

Python で PyMuPDF ライブラリをインストールする

この操作を実行するには、Python に PyMuPDF ライブラリをインストールする必要があります。このライブラリは、ユーザーが PDFXPSFB2OpenXPS、および EPUB 形式のファイルを処理するのに役立ちます。これは、その高性能とレンダリング品質で知られる非常に用途の広いライブラリです。ただし、Python にはプリインストールされていません。このライブラリをインストールするには、次のコマンドを実行します。

pip install PyMuPDF Pillow

Python で PDF ファイルから画像を抽出する

ここで、PDF ファイルから画像を抽出するには、段階的な手順があります。

  • 最初に、必要なすべてのライブラリがインポートされます。
import fitz
import io
from PIL import Image
  • 次に、画像を抽出する必要のあるファイルへのパスを定義します。ファイルは、fitz モジュールの open() 関数を使用して開かれます。
file_path = "randomfile.pdf"
open_file = fitz.open(file_path)
  • その後、PDF ファイルのすべてのページが繰り返され、各ページで使用可能な画像があるかどうかが確認されます。
for page_number in range(len(open_file)):
    page = pdf_file[page_number]
    list_image = page.getImageList()

    if list_image:
        print(f"{len(list_image)} images found on page {page_number}")
    else:
        print("No images found on page", page_number)

このステップでは、getImageList() 関数を使用して、タプルのリストとして、画像オブジェクトの形式ですべての画像を抽出します。

  • 次に、extractImage() 関数を使用して、画像サイズや画像の拡張子など、画像に関するすべての追加情報が返されます。このステップは、最初の反復自体の内部の反復として実行されます。
for image_number, img in enumerate(page.getImageList(), start=1):

    xref = img[0]

    image_base = pdf_file.extractImage(xref)
    bytes_image = image_base["image"]

    ext_image = base_image["ext"]

これらすべての手順を 1つのプログラムにまとめると、PDF ファイルからすべての画像を簡単に抽出できます。

ここで、randomfile.pdf ファイルに 5 ページあるとします。これらの 5 ページでは、最後の画像は 1つだけです。たとえば、5 ページ目です。したがって、出力は次のようになります。

0 images found on page 0
0 images found on page 1
0 images found on page 2
0 images found on page 3
0 images found on page 4
1 images found on page 5
著者: Lakshay Kapoor
Lakshay Kapoor avatar Lakshay Kapoor avatar

Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.

LinkedIn

関連記事 - Python PDF