将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转换为图像的省时方法的主要内容,如果未能解决你的问题,请参考以下文章