使用 Python 从 PDF 中提取高分辨率图像

Ome*_*ega 11 python pdf pymupdf

我已成功使用以下代码从多个 PDF 页面中提取图像,但分辨率相当低。有办法调整吗?

import fitz    
pdffile = "C:\\Users\\me\\Desktop\\myfile.pdf"
doc = fitz.open(pdffile)
for page_index in range(doc.pageCount):
    page = doc.loadPage(page_index)  
    pix = page.getPixmap()
    output = "image_page_" + str(page_index) + ".jpg"
    pix.writePNG(output)
Run Code Online (Sandbox Code Playgroud)

我还尝试使用此处的代码并将 if pix.n < 5" 更新为 "if pix.n - pix.alpha < 4 但这在我的情况下没有输出任何图像。

Dav*_*che 12

正如本期 PyMuPDF 中所述,您必须使用矩阵: Github 上的问题

给出的例子是:

zoom = 2    # zoom factor
mat = fitz.Matrix(zoom, zoom)
pix = page.getPixmap(matrix = mat, <...>)
Run Code Online (Sandbox Code Playgroud)

该问题还指出,如果您不使用矩阵,则默认分辨率为 72 dpi,这可能会导致分辨率较低。

  • 请提醒大家,PyMuPDF 中的camelCased 名称已重命名为snake_cased 版本 - 加上一些全新的名称,如“pix.writePNG”变成了“pix.save”等。这发生在 v1.18.4 中,并且从 1.20.0 开始是强制性的。 (3认同)

Tim*_*imH 6

比制作​​矩阵更简单,文档显示getPixmap()您可以使用该dpi参数来获得更高分辨率:

pix = page.getPixmap(dpi=200)
Run Code Online (Sandbox Code Playgroud)

这是从 v1.19.2 开始的新增内容。