我正在使用魔杖和 pytesseract 将 pdf 的文本上传到 django 网站,如下所示:
image_pdf = Image(blob=read_pdf_file, resolution=300)
image_png = image_pdf.convert('png')
req_image = []
final_text = []
for img in image_png.sequence:
img_page = Image(image=img)
req_image.append(img_page.make_blob('png'))
for img in req_image:
txt = pytesseract.image_to_string(PI.open(io.BytesIO(img)).convert('RGB'))
final_text.append(txt)
return " ".join(final_text)
Run Code Online (Sandbox Code Playgroud)
我让它在单独的 ec2 服务器中的 celery 中运行。然而,因为即使是 13.7 mb 的 pdf 文件,image_pdf 也会增长到大约 4gb,所以它被 oom 杀手阻止了。我不想为更高的内存付费,而是想尝试减少魔杖和 ImageMagick 使用的内存。由于它已经是异步的,我不介意增加计算时间。我浏览了这个:http : //www.imagemagick.org/Usage/files/#massive,但我不确定它是否可以用魔杖实现。另一种可能的解决方法是一次一页地打开 pdf,而不是一次将完整图像放入 RAM 中。或者,我如何直接使用 python 与 ImageMagick 接口,以便我可以使用这些内存限制技术?