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

PyInstaller打包PaddleOCR工具体积过大,如何优化?

解决PaddleOCR PyInstaller打包体积过大与模块缺失问题

一、定位不必要的大型依赖项

  • 分析PyInstaller打包日志:执行打包命令时添加--log-level DEBUG参数,例如pyinstaller --log-level DEBUG your_script.py。日志会完整记录所有被打包的模块、文件路径及体积,重点关注几GB级的目录(如paddle、paddleocr下的冗余子文件夹),对比代码实际调用的功能,标记未使用的模块。
  • 生成代码依赖树:使用pydeps工具(本地运行,无需联网)生成代码的依赖关系图,命令为pydeps your_script.py --output dot,可视化后可直观看到哪些依赖是代码未实际调用的,这些就是优先排除的对象。
  • 检查打包后文件结构:在onedir模式下,打开生成的dist文件夹,按文件大小排序,定位体积最大的文件/目录。比如PaddleOCR默认会打包多个预训练模型,若仅用到其中一个,可直接删除未使用的模型文件后重新打包。

二、生成可靠的PyInstaller Spec文件

  • 从默认Spec文件逐步优化:先通过pyinstaller your_script.py生成基础spec文件,不要直接使用AI生成的版本,手动修改以下部分:
    1. 排除冗余模块:在Analysis段的excludes参数中添加明确未使用的依赖。例如无需GPU支持时,排除paddle.fluid.core_avx、paddle.fluid.cuda等GPU相关模块;仅用文字识别功能时,排除paddleocr.tools.infer_det等检测模块。
    2. 补全缺失模块:运行打包后的程序,记录报错的缺失模块,逐个添加到hiddenimports列表,避免一次性批量添加导致冗余。
    3. 手动指定资源文件:通过datas参数仅打包所需的预训练模型,例如datas=[('path/to/your/used_model', 'paddleocr/ppocr/utils/')],替代PyInstaller自动打包所有模型的行为。
  • 2025年可用的辅助工具:
    • PyInstaller-Analyzer:可扫描代码实际调用的依赖,自动生成包含合理excludes和hiddenimports的初始spec文件,减少手动排查工作量。
    • PaddleOCR定制化Spec模板:社区针对PaddleOCR打包场景推出的开源模板,默认排除冗余模型与GPU依赖,可直接基于模板适配自身代码。

三、额外体积优化技巧

  • 精简预训练模型:删除paddleocr/ppocr/utils/下未使用的检测、方向分类模型,或在代码中明确指定仅加载所需模型。
  • 合理使用UPX压缩:UPX对PaddleOCR核心二进制文件(如.so、.dll)压缩可能导致运行错误,建议仅压缩非核心Python模块与资源文件。
  • 使用干净虚拟环境:在仅安装代码必需依赖(如paddleocr、pyinstaller)的虚拟环境中打包,避免PyInstaller混入无关系统依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:27:07