Comment extraire des images de PDF sans rééchantillonnage en Python ?
Pour extraire des images d'un document PDF avec leur résolution et leur format d'origine, sans rééchantillonnage, vous pouvez utiliser le module PyMuPDF. Ce module Python vous permet de traiter efficacement les fichiers PDF et de manipuler leur contenu. Voici comment utiliser PyMuPDF pour extraire des images :
<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>
Dans ce code, nous parcourons les pages et les images du PDF. La variable 'xref' représente l'identifiant unique de l'image. En fonction de l'espace colorimétrique de l'image (RVB ou CMJN), soit nous écrivons l'image PNG directement, soit nous convertissons CMJN en RVB avant de l'enregistrer.
Alternativement, si vous utilisez la version 1.19.6 de fitz, vous pouvez utiliser le code suivant pour effectuer l'extraction avec une barre de progression pour une meilleure visibilité :
<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>
Ces extraits de code vous permettront d'extraire des images d'un PDF, en préservant leur résolution et leur format d'origine.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!