Python でリサンプリングせずに PDF から画像を抽出する方法
PDF ドキュメントから画像を元の解像度と形式で抽出するには、リサンプリングするには、PyMuPDF モジュールを利用できます。この Python モジュールを使用すると、PDF ファイルを効率的に処理し、そのコンテンツを操作できます。 PyMuPDF を使用して画像を抽出する方法は次のとおりです:
<code class="python">import fitz doc = fitz.open("input.pdf") for page_num in range(len(doc)): for img in doc.getPageImageList(page_num): xref = img[0] pix = fitz.Pixmap(doc, xref) if pix.n < 5: # Check if it's grayscale or RGB pix.writePNG(f"page_{page_num}_img_{xref}.png") else: # Convert CMYK to RGB before saving pix1 = fitz.Pixmap(fitz.csRGB, pix) pix1.writePNG(f"page_{page_num}_img_{xref}.png")</code>
このコードでは、PDF 内のページと画像を反復処理します。 「xref」変数は、画像の一意の識別子を表します。画像の色空間 (RGB または CMYK) に応じて、PNG 画像を直接書き込むか、保存する前に CMYK を RGB に変換します。
また、fitz バージョン 1.19.6 を使用している場合は、次のようにすることもできます。視認性を高めるために進行状況バーを使用して抽出を実行する次のコード:
<code class="python">import os import fitz from tqdm import tqdm workdir = "path_to_pdf_folder" for each_path in os.listdir(workdir): if ".pdf" in each_path: doc = fitz.Document(os.path.join(workdir, each_path)) for i in tqdm(range(len(doc)), desc="pages"): for img in tqdm(doc.get_page_images(i), desc="page_images"): xref = img[0] image = doc.extract_image(xref) pix = fitz.Pixmap(doc, xref) pix.save(os.path.join(workdir, f"{each_path[:-4]}_p{i}-{xref}.png"))</code>
これらのコード スニペットを使用すると、元の解像度と形式を維持したまま PDF から画像を抽出できます。
以上がPython を使用してリサンプリングせずに PDF から高解像度の画像を抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。