Bilder aus PDF-Dokumenten mit nativer Auflösung und nativem Format extrahieren
Bei der Arbeit mit PDF-Dokumenten kann das Extrahieren von Bildern mit ihrer ursprünglichen Auflösung und ihrem ursprünglichen Format möglich sein entscheidend. Dadurch wird sichergestellt, dass die extrahierten Bilder die gleiche Qualität und Integrität wie das Quelldokument behalten. In diesem Artikel stellen wir eine Lösung zum Extrahieren von Bildern aus PDF-Dokumenten in Python ohne Resampling vor, sodass Sie qualitativ hochwertige Bilder in ihren nativen Formaten erhalten können.
PyMuPDF für die Bildextraktion
Eines der beliebtesten Python-Module zur PDF-Bearbeitung ist PyMuPDF. Dieses Modul bietet eine robuste Möglichkeit, Bilder aus PDF-Dokumenten zu extrahieren und dabei ihre native Auflösung und ihr natives Format beizubehalten. Hier ist ein Codeausschnitt mit 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>
Dieser Code durchläuft alle Seiten und Bilder im PDF-Dokument und extrahiert sie als PNG-Dateien. Es behält die native Auflösung und das Format jedes Bildes bei und stellt so sicher, dass Sie qualitativ hochwertige Bilder erhalten.
Modifizierte Version für aktualisiertes PyMuPDF
Wenn Sie eine neuere Version verwenden Wenn Sie eine Version von PyMuPDF (z. B. 1.19.6) verwenden, müssen Sie den obigen Code möglicherweise geringfügig ändern. Der folgende Codeausschnitt spiegelt die notwendigen Änderungen wider:
<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>
Dieser geänderte Code verwendet die Methode get_page_images(), um die Bilder abzurufen und sie als PNG-Dateien im angegebenen Arbeitsverzeichnis zu speichern.
Das obige ist der detaillierte Inhalt vonWie extrahiere ich Bilder aus PDF-Dokumenten mit nativer Auflösung und nativem Format in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!