在Python 中從PDF 中提取本機分辨率圖像而無需重新採樣
從PDF 中以其本機分辨率和格式提取圖像,同時保留佈局可以是一個挑戰。然而,Python 的 PyMuPDF 模組提供了一個簡單的解決方案。
使用 PyMuPDF
PyMuPDF 可以將圖像輸出為 PNG 文件,確保高解析度並保持原始格式(例如 TIFF) ,JPEG)。下面的程式碼示範了它的用法:
<code class="python">import fitz doc = fitz.open("file.pdf") for i in range(len(doc)): for img in doc.getPageImageList(i): xref = img[0] pix = fitz.Pixmap(doc, xref) if pix.n < 5: # GRAY 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 pix = None</code>
Fitz 1.19.6的修改版本
對於最新版本的fitz(1.19.6),修改如下可使用程式碼:
<code class="python">import os import fitz from tqdm import tqdm workdir = "your_folder" for each_path in os.listdir(workdir): if ".pdf" in each_path: 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"): 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>
此修改程式碼利用tqdm進行進度條顯示,並最佳化影像擷取與儲存流程。
以上是如何使用 Python 從 PDF 中提取高解析度圖像而不改變尺寸?的詳細內容。更多資訊請關注PHP中文網其他相關文章!