Maison  >  Article  >  développement back-end  >  Comment extraire des images de documents PDF avec une résolution et un format natifs en Python ?

Comment extraire des images de documents PDF avec une résolution et un format natifs en Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-22 07:55:30564parcourir

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

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn