ネイティブの解像度と形式で 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 サイトの他の関連記事を参照してください。