ホームページ  >  記事  >  バックエンド開発  >  Python でネイティブ解像度と形式で PDF ドキュメントから画像を抽出する方法

Python でネイティブ解像度と形式で PDF ドキュメントから画像を抽出する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-22 07:55:30564ブラウズ

How to Extract Images from PDF Documents with Native Resolution and Format in Python?

ネイティブの解像度と形式で PDF ドキュメントから画像を抽出する

PDF ドキュメントを操作する場合、元の解像度と形式で画像を抽出できます。重要な。これにより、抽出された画像がソース文書と同じ品質と完全性を保持することが保証されます。この記事では、リサンプリングせずに Python で PDF ドキュメントから画像を抽出するソリューションを紹介します。これにより、ネイティブ形式で高品質の画像を取得できるようになります。

画像抽出用の PyMuPDF

PDF 操作用の最も人気のある Python モジュールの 1 つは PyMuPDF です。このモジュールは、ネイティブの解像度と形式を維持しながら PDF ドキュメントから画像を抽出する堅牢な方法を提供します。 PyMuPDF を使用したコード スニペットは次のとおりです。

<code class="python">import fitz

# Open the PDF document
doc = fitz.open("file.pdf")

# Iterate through pages and images
for i in range(len(doc)):
    for img in doc.getPageImageList(i):
        xref = img[0]

        # Convert picture object to PNG
        pix = fitz.Pixmap(doc, xref)
        if pix.n < 5:  # grayscale or RGB
            pix.writePNG("p%s-%s.png" % (i, xref))
        else:  # CMYK
            pix1 = fitz.Pixmap(fitz.csRGB, pix)
            pix1.writePNG("p%s-%s.png" % (i, xref))
            pix1 = None</code>

このコードは、PDF ドキュメント内のすべてのページと画像を反復処理し、それらを PNG ファイルとして抽出します。各画像のネイティブ解像度と形式が保持され、高品質の画像が確実に得られます。

更新された PyMuPDF の修正バージョン

新しいバージョンを使用している場合PyMuPDF のバージョン (例: 1.19.6) では、上記のコードを若干変更する必要がある場合があります。次のコード スニペットには、必要な変更が反映されています。

<code class="python">import os
import fitz
from tqdm import tqdm

# Set working directory
workdir = "your_folder"

# Process PDF files in the directory
for each_path in os.listdir(workdir):
    if ".pdf" in each_path:
        # Open the PDF document
        doc = fitz.Document((os.path.join(workdir, each_path)))

        # Iterate through pages and images
        for i in tqdm(range(len(doc)), desc="pages"):
            for img in tqdm(doc.get_page_images(i), desc="page_images"):
                xref = img[0]

                # Extract the image and save it as PNG
                image = doc.extract_image(xref)
                pix = fitz.Pixmap(doc, xref)
                pix.save(os.path.join(workdir, "%s_p%s-%s.png" % (each_path[:-4], i, xref)))

# Print a completion message
print("Done!")</code>

この変更されたコードは、get_page_images() メソッドを使用して画像を取得し、指定された作業ディレクトリに PNG ファイルとして保存します。

以上がPython でネイティブ解像度と形式で PDF ドキュメントから画像を抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。