Maison  >  Article  >  développement back-end  >  Comment extraire des images haute résolution à partir de PDF sans rééchantillonnage à l'aide de Python ?

Comment extraire des images haute résolution à partir de PDF sans rééchantillonnage à l'aide de Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-22 07:52:02686parcourir

How to Extract High-Resolution Images from PDFs Without Resampling Using Python?

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!

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