如何解决将PDF转换为图像的省时方法
上下文:
我有正在处理的 PDF 文件。
我正在使用 ocr
从这些文档中提取文本,为了能够做到这一点,我必须将我的 pdf 文件转换为图像。
我目前使用 convert_from_path
模块的 pdf2image
函数,但时间效率非常低(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 引用。
解决方法
我使用另一个名为 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)
希望这对其他人有帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。