Heim > Backend-Entwicklung > Python-Tutorial > Wie extrahiere ich Bilder aus PDF-Dokumenten mit nativer Auflösung und nativem Format in Python?

Wie extrahiere ich Bilder aus PDF-Dokumenten mit nativer Auflösung und nativem Format in Python?

Patricia Arquette
Freigeben: 2024-10-22 07:55:30
Original
679 Leute haben es durchsucht

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

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage