Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengekstrak Imej dari Dokumen PDF dengan Resolusi dan Format Asli dalam Python?

Bagaimana untuk Mengekstrak Imej dari Dokumen PDF dengan Resolusi dan Format Asli dalam Python?

Patricia Arquette
Patricia Arquetteasal
2024-10-22 07:55:30564semak imbas

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

Mengekstrak Imej daripada Dokumen PDF dengan Resolusi dan Format Asli

Apabila bekerja dengan dokumen PDF, mengekstrak imej dengan resolusi dan format asalnya boleh penting. Ini memastikan bahawa imej yang diekstrak mengekalkan kualiti dan integriti yang sama seperti dokumen sumber. Dalam artikel ini, kami membentangkan penyelesaian untuk mengekstrak imej daripada dokumen PDF dalam Python tanpa pensampelan semula, membolehkan anda memperoleh imej berkualiti tinggi dalam format aslinya.

PyMuPDF untuk Pengekstrakan Imej

Salah satu modul Python yang paling popular untuk manipulasi PDF ialah PyMuPDF. Modul ini menyediakan cara yang teguh untuk mengekstrak imej daripada dokumen PDF sambil mengekalkan resolusi dan format aslinya. Berikut ialah coretan kod menggunakan 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>

Kod ini berulang melalui semua halaman dan imej dalam dokumen PDF dan mengekstraknya sebagai fail PNG. Ia mengekalkan resolusi asli dan format setiap imej, memastikan anda mendapat imej berkualiti tinggi.

Versi Diubah Suai untuk PyMuPDF yang Dikemas kini

Jika anda menggunakan yang lebih baharu versi PyMuPDF (cth., 1.19.6), anda mungkin perlu mengubah suai kod di atas sedikit. Coretan kod berikut menggambarkan perubahan yang diperlukan:

<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>

Kod yang diubah suai ini menggunakan kaedah get_page_images() untuk mendapatkan imej dan menyimpannya sebagai fail PNG dalam direktori kerja yang ditentukan.

Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Imej dari Dokumen PDF dengan Resolusi dan Format Asli dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn