首页  >  文章  >  后端开发  >  如何在Python中以本机分辨率和格式从PDF文档中提取图像?

如何在Python中以本机分辨率和格式从PDF文档中提取图像?

Patricia Arquette
Patricia Arquette原创
2024-10-22 07:55:30564浏览

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

以原始分辨率和格式从 PDF 文档中提取图像

处理 PDF 文档时,可以使用原始分辨率和格式提取图像至关重要的。这可确保提取的图像保留与源文档相同的质量和完整性。在本文中,我们提出了一种使用 Python 从 PDF 文档中提取图像而无需重新采样的解决方案,使您能够获得原始格式的高质量图像。

用于图像提取的 PyMuPDF

用于 PDF 操作的最流行的 Python 模块之一是 PyMuPDF。该模块提供了一种从 PDF 文档中提取图像的强大方法,同时保留其原始分辨率和格式。下面是使用 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>

此代码迭代 PDF 文档中的所有页面和图像,并将它们提取为 PNG 文件。它保留了每个图像的原始分辨率和格式,确保您获得高质量的图像。

更新 PyMuPDF 的修改版本

如果您使用的是较新版本PyMuPDF 版本(例如 1.19.6),您可能需要稍微修改上面的代码。以下代码片段反映了必要的更改:

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

此修改后的代码使用 get_page_images() 方法获取图像并将其保存为指定工作目录中的 PNG 文件。

以上是如何在Python中以本机分辨率和格式从PDF文档中提取图像?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn