Extraire des images de documents PDF avec une résolution et un format natifs
Lorsque vous travaillez avec des documents PDF, l'extraction d'images avec leur résolution et leur format d'origine peut être crucial. Cela garantit que les images extraites conservent la même qualité et la même intégrité que le document source. Dans cet article, nous présentons une solution pour extraire des images de documents PDF en Python sans rééchantillonnage, vous permettant d'obtenir des images de haute qualité dans leurs formats natifs.
PyMuPDF pour l'extraction d'images
L'un des modules Python les plus populaires pour la manipulation de PDF est PyMuPDF. Ce module fournit un moyen robuste d'extraire des images de documents PDF tout en préservant leur résolution et leur format natifs. Voici un extrait de code utilisant 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>
Ce code parcourt toutes les pages et images du document PDF et les extrait sous forme de fichiers PNG. Il préserve la résolution et le format natifs de chaque image, garantissant ainsi que vous obtenez des images de haute qualité.
Version modifiée pour PyMuPDF mis à jour
Si vous utilisez une version plus récente version de PyMuPDF (par exemple, 1.19.6), vous devrez peut-être modifier légèrement le code ci-dessus. L'extrait de code suivant reflète les modifications nécessaires :
<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>
Ce code modifié utilise la méthode get_page_images() pour obtenir les images et les enregistre sous forme de fichiers PNG dans le répertoire de travail spécifié.
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!