Bilder aus PDFs ohne Resampling mit Python extrahieren
Zum effizienten Extrahieren aller Bilder aus einem PDF-Dokument unter Beibehaltung ihrer nativen Auflösung und ihres nativen Formats ohne Resampling können Sie das PyMuPDF-Modul verwenden. Dieses Modul bietet eine effektive Lösung für die Bildextraktion und gibt Bilder als PNG-Dateien aus.
Verwendung von 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>
Verbesserungen:
Für eine aktualisierte Version des Skripts, die fitz 1.19.6 unterstützt:
<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>
Dieses erweiterte Skript bietet Fortschrittsbalken für mehr Sichtbarkeit und speichert die extrahierten Bilder mit einheitlichen Dateinamenskonventionen.
Das obige ist der detaillierte Inhalt vonWie können Sie mit Python Bilder aus PDFs extrahieren und dabei ihre ursprüngliche Auflösung beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!