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

我已成功使用以下代码从多个 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)

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



慕田峪9158850
浏览 221回答 3
3回答

红糖糍粑

给出的例子是:zoom = 2    # zoom factor mat = fitz.Matrix(zoom, zoom) pix = page.getPixmap(matrix = mat, <...>)该问题还指出,如果您不使用矩阵,则默认分辨率为 72 dpi,这可能解释了您的分辨率较低的原因。

守候你守候我

比制作矩阵更简单,文档显示getPixmap()您可以使用该dpi参数来获得更高分辨率:pix = page.getPixmap(dpi=200)这是从 v1.19.2 开始的新增内容。

森栏

为了获得最佳质量,请使用“matrix”和“dpi”。该代码解决了结果分辨率更高的问题。我实现了一个解决方案,以最佳质量转换文件夹中的所有文件:# pip install fitz# pip install pip install PyMuPDF==1.19.0import fitzimport globfor filename in glob.glob("*.pdf"):&nbsp; &nbsp; pdffile = filename&nbsp; &nbsp; doc = fitz.open(pdffile)&nbsp; &nbsp; for page_index in range(doc.pageCount):&nbsp; &nbsp; &nbsp; &nbsp; try:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; page = doc.load_page(page_index)&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; zoom = 2&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mat = fitz.Matrix(zoom, zoom)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pix = page.get_pixmap(matrix = mat,dpi=1200)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; output = '_' + filename.replace(".pdf","") + "-" + str(page_index) + ".png"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pix.save(output)&nbsp; &nbsp; &nbsp; &nbsp; except Exception as e:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print(str(filename) + ' > ' + str(e))&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; doc.close()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python