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!