Extraire des images de PDF sans rééchantillonnage à l'aide de Python
Pour extraire efficacement toutes les images d'un document PDF tout en préservant leur résolution et leur format d'origine sans rééchantillonnage , vous pouvez utiliser le module PyMuPDF. Ce module fournit une solution efficace pour l'extraction d'images, en produisant des images sous forme de fichiers PNG.
Utilisation de PyMuPDF :
<code class="python">import fitz # Open the PDF document doc = fitz.open("file.pdf") # Iterate through the pages for i in range(len(doc)): # Extract images from the current page for img in doc.getPageImageList(i): # Retrieve the image's XREF and create a Pixmap xref = img[0] pix = fitz.Pixmap(doc, xref) # Check if the image is grayscale or RGB if pix.n < 5: # Save the image in PNG format pix.writePNG("p%s-%s.png" % (i, xref)) # If the image is CMYK, convert it to RGB and save else: pix1 = fitz.Pixmap(fitz.csRGB, pix) pix1.writePNG("p%s-%s.png" % (i, xref)) pix1 = None # Release the Pixmaps pix = None</code>
Améliorations :
Pour une version mise à jour du script prenant en charge fitz 1.19.6 :
<code class="python">import os import fitz from tqdm import tqdm # Specify the work directory workdir = "your_folder" # Iterate through the PDFs 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)) for i in tqdm(range(len(doc)), desc="pages"): for img in tqdm(doc.get_page_images(i), desc="page_images"): # Extract the image and save as PNG xref = img[0] 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)))</code>
Ce script amélioré fournit des barres de progression pour une visibilité accrue et enregistre les images extraites avec des conventions de dénomination de fichiers cohérentes.
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!