You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EasyOCR配合PyInstaller打包后生成无限进程占用内存问题

修复方案

1. 代码结构调整

Windows下打包包含多进程逻辑的Python程序,必须将主逻辑放入if __name__ == '__main__'代码块,且在入口最开头调用multiprocessing.freeze_support(),修改后的完整代码如下:

import pyscreenshot as ImageGrab
import easyocr, io
import multiprocessing

def image_to_byte_array(image) -> bytearray:
    image_byte_array = io.BytesIO()
    # 截图默认没有format属性,手动指定为PNG避免报错
    image.save(image_byte_array, format="PNG")
    image_byte_array = image_byte_array.getvalue()
    return image_byte_array

if __name__ == '__main__':
    # 必须放在主逻辑最开头
    multiprocessing.freeze_support()
    bbox_size = [498, 448, 771, 497]
    image = ImageGrab.grab(bbox=bbox_size)
    # 显式关闭GPU、禁用多进程推理
    reader = easyocr.Reader(lang_list=["en"], gpu=False, num_workers=0)
    text = reader.readtext(image_to_byte_array(image), detail=0)
    print(text)

本次代码补充两个关键修复点:

  • 截图生成的Image对象没有默认format属性,手动指定保存格式为PNG避免字节转换报错
  • 初始化EasyOCR Reader时显式设置num_workers=0禁用多进程推理,gpu=False明确使用CPU运算,规避底层PyTorch的多进程分叉问题

2. 调整PyInstaller打包命令

需要补充EasyOCR和PyTorch的隐藏导入,避免打包时遗漏依赖:

pyinstaller.exe --onedir --icon="blue-white.ico" --name="MyProgram_TEST" --hidden-import=easyocr --hidden-import=torch --hidden-import=torchvision --add-data="你的venv路径/Lib/site-packages/easyocr;easyocr" app.py

注意把命令里的你的venv路径替换为你本地虚拟环境的实际路径。

3. 可选优化

如果还是存在启动慢的问题,可以提前把EasyOCR的英文预训练模型下载到本地,打包时一起放入程序目录,避免运行时自动下载模型的异常。

内容的提问来源于stack exchange,提问作者Spectra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:00:03