Paddle使用pyinstaller打包出错的解决方法

使用PyQt5开发了一个基于paddle ocr的文字识别程序,打包的时候报错了。给大家分享一下解决方法https://juejin.cn/post/7287562282669883451

  • 为了测试paddle模块的打包问题,所以当前demo.py只引用了paddleOCR模块
  • demo.py
python 复制代码
from paddleocr import PaddleOCR
def ocr_text(path):
    try:
        ocr = PaddleOCR(use_angle_cls=True, use_gpu=False)
        text = ocr.ocr(path, cls=True)
        result = []
        for t in text[0]:
            txt = t[1][0]
            result.append(txt)
        return result
    except:
        pass


if __name__ == '__main__':
    ocr_text("./screen.png")
步骤一:显式导入依赖项
  • 显式导入依赖项:在你的demo.py文件中,尝试显式导入项目的依赖项,例如paddle和framework_pb2,有助于帮助pyinstaller正确识别这些依赖项。在demo.py文件的顶部添加以导入语句:
python 复制代码
import paddle
from paddle.fluid.proto import framework_pb2
步骤二:pyinstaller的.spec文件中加入--add-data选项
  • 将paddle所需的文件包含进去。通常包括ocr的模型文件和其他依赖项。
  • --add-data选项将本地paddle路径path/to/paddle目录文件添加到生成的可执行文件中,使用;分割,./paddle代表的是生成文件的同级目录下的paddle文件中。
shell 复制代码
pyinstaller --add-data "path/to/paddle;./paddle" --add-data "path/to/paddleocr;./paddleocr" 
完成程序和打包脚本

demo.py

python 复制代码
from paddleocr import PaddleOCR
import paddle  # 新增
from paddle.fluid.proto import framework_pb2  # 新增


def ocr_text(path):
    try:
        ocr = PaddleOCR(use_angle_cls=True, use_gpu=False)
        text = ocr.ocr(path, cls=True)
        result = []
        for t in text[0]:
            txt = t[1][0]
            result.append(txt)
        return result
    except:
        pass


if __name__ == '__main__':
    ocr_text("./screen.png")
  • 打包处理
    • --add-data添加选项包到程序目录中,-F将生成一个单一的可执行文件。
shell 复制代码
pyinstaller -F demo.py --add-data "path/to/paddle;./paddle" --add-data "path/to/paddleocr;./paddleocr"
相关推荐
GISer_Jing7 分钟前
实景三维&点云处理专业软件&ArcGIS根据DSM生成地表点云集
python·arcgis·web3
Thomas_YXQ9 分钟前
Unity3D 如何做好项目性能优化详解
开发语言·性能优化·游戏引擎·unity3d·热更新
凡人的AI工具箱30 分钟前
每天40分玩转Django:Django性能优化
后端·python·性能优化·django·sqlite
凡人的AI工具箱33 分钟前
每天40分玩转Django:Django即时聊天应用实战
数据库·人工智能·后端·python·django·sqlite
矩阵猫咪38 分钟前
basic-validation-using-flask-gladiator-module-in-python
后端·python·flask
矩阵猫咪41 分钟前
covid-vaccine-availability-using-flask-server
后端·python·flask
Eiceblue1 小时前
.NET框架用C#实现PDF转HTML
开发语言·pdf·c#·html·.net
青冘1 小时前
Java开发 PDF文件生成方案
java·开发语言·pdf
觅远1 小时前
python+PyMuPDF库:(三)pdf文件的选择性合并、其他格式文件转pdf
python·pdf·自动化
互联网杂货铺1 小时前
单元测试、系统测试和集成测试知识
自动化测试·软件测试·python·测试工具·单元测试·测试用例·集成测试