将PDF转换为图像的省时方法

Posted

技术标签:

【中文标题】将PDF转换为图像的省时方法【英文标题】:Time efficient way to convert PDF to image 【发布时间】:2021-08-08 17:44:56 【问题描述】:

上下文:

我有正在处理的 PDF 文件。 我正在使用ocr 从这些文档中提取文本,为了能够做到这一点,我必须将我的 pdf 文件转换为图像。 我目前使用pdf2image 模块的convert_from_path 功能,但它的时间效率非常低(9 页 pdf 需要 9 分钟)。

问题:

我正在寻找一种方法来加速此过程或另一种将我的 PDF 文件转换为图像的方法。

其他信息:

我知道函数中有一个thread_count 参数,但经过几次尝试似乎没有任何区别。

这是我正在使用的全部功能:

def pdftoimg(fic,output_folder):
# Store all the pages of the PDF in a variable 
pages = convert_from_path(fic, dpi=500,output_folder=output_folder,thread_count=9, poppler_path=r'C:\Users\Vincent\Documents\PDF\poppler-21.02.0\Library\bin') 

image_counter = 0

# Iterate through all the pages stored above 
for page in pages: 
    filename = "page_"+str(image_counter)+".jpg"
    page.save(output_folder+filename, 'JPEG') 
    image_counter = image_counter + 1
    
for i in os.listdir(output_folder):
    if i.endswith('.ppm'):
        os.remove(output_folder+i)

Link 到 convert_from_path 引用。

【问题讨论】:

【参考方案1】:

我使用另一个名为 fitz 的模块找到了该问题的答案,该模块是与 MuPDF 的 Python 绑定。

首先安装 PyMuPDF:

可以在here 找到文档,但对于 Windows 用户来说,它相当简单:

pip install PyMuPDF

然后导入fitz模块:

import fitz
print(fitz.__doc__)

>>>PyMuPDF 1.18.13: Python bindings for the MuPDF 1.18.0 library.
>>>Version date: 2021-05-05 06:32:22.
>>>Built for Python 3.7 on win32 (64-bit).

打开您的文件并将每个页面保存为图片:

get_pixmap() 方法接受不同的参数,允许您控制图像(变化、分辨率、颜色...),因此我建议您将文档 here 红色。

def convert_pdf_to_image(fic):
    #open your file
    doc = fitz.open(fic)
    #iterate through the pages of the document and create a RGB image of the page
    for page in doc:
        pix = page.get_pixmap()
        pix.save("page-%i.png" % page.number)

希望这对其他人有帮助。

【讨论】:

时间效率低下是由 dpi 引起的,在您的函数中,您在 convert_from_path 中设置 dpi=500 这意味着如果将其更改为 200 dpi(默认值),您的结果质量非常好,您会得到相同的结果,例如菲茨

以上是关于将PDF转换为图像的省时方法的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像转换为PDF?

怎么用ABBYY将PDF转换为JPEG图像

使用python将图像文件夹转换为单独的pdf

如何通过目标c中的编码将pdf文件转换为图像

[pdf转txt格式]技能!如何将PDF转成TXT文本格式?

ImageMagick 命令行:将 PDF 转换为高清图像