PaddleOCR打包exe--Pyinstaller

一、前期准备

首先确保代码在虚拟环境中能够成功运行,
gui.py

from paddleocr import PaddleOCR
# 模型路径下必须含有model和params文件
ocr = PaddleOCR(det_model_dir = './inference/default_det_model_dir/', # 检测模型所在文件夹
                rec_model_dir = './inference/default_rec_model_dir/', # 识别模型所在文件夹。
                cls_model_dir = './inference/default_cls_model_dir/', # 分类模型所在文件夹。
                #rec_char_dict_path = './dict/japan_dict.txt', # 识别模型字典路径。
                #lang = 'en',
                use_angle_cls = True, # 是否加载分类模型
                use_gpu = False) # 是否使用gpu
img_path = './image/chi.jpg'
result = ocr.ocr(img_path, cls = True)
ocr_result=[line[1][0] for line in result] # 组合成列表形式
text='\n'.join(ocr_result) #  回车符连接列表中的每个元素
print(text)

二、关闭线程(很重要)

关闭多进程,否则当运行exe时电脑会有10多个 main.exe 进程,电脑内存占用直接90%。
方法:找到所在环境下的 image.py 文件
我的是
“D:\virtualenv\OCR\Lib\site-packages\paddle\dataset\image.py”

把这一部分代码 注释掉


```python
if six.PY3:
    import subprocess
    import sys
    import_cv2_proc = subprocess.Popen(
        [sys.executable, "-c", "import cv2"],
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE)
    out, err = import_cv2_proc.communicate()
    retcode = import_cv2_proc.poll()
    if retcode != 0:
        cv2 = None
    else:
        import cv2
else:
    try:
        import cv2
    except ImportError:
        cv2 = None

最后 成这样

# if six.PY3:
#     import subprocess
#     import sys
#     import_cv2_proc = subprocess.Popen(
#         [sys.executable, "-c", "import cv2"],
#         stdout=subprocess.PIPE,
#         stderr=subprocess.PIPE)
#     out, err = import_cv2_proc.communicate()
#     retcode = import_cv2_proc.poll()
#     if retcode != 0:
#         cv2 = None
#     else:
#         import cv2
# else:
#     try:
#         import cv2
#     except ImportError:
#         cv2 = None
try:
    import cv2
except ImportError:
    cv2 = None
import os

因为会用到 cv2 ,所以cv2 要重新导入。





三、新建 spec 文件

gui.spec

# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['gui.py'],
     pathex=['D:\\virtualenv\\OCR\\Lib\\site-packages\\paddleocr', 'D:\\virtualenv\\OCR\\Lib\\site-packages\\paddle\\libs'],
     binaries=[('D:\\virtualenv\\OCR\\Lib\\site-packages\\paddle\\libs', '.')],
     datas=[],
     hiddenimports=[],
     hookspath=['.'],
     runtime_hooks=[],
     excludes=['matplotlib'],
     win_no_prefer_redirects=False,
     win_private_assemblies=False,
     cipher=block_cipher,
     noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
     cipher=block_cipher)
exe = EXE(pyz,
     a.scripts,
     [],
     exclude_binaries=True,
     name='main',
     debug=False,
     bootloader_ignore_signals=False,
     strip=False,
     upx=True,
     console=True)
coll = COLLECT(exe,
     a.binaries,
     a.zipfiles,
     a.datas,
     strip=False,
     upx=True,
     upx_exclude=[],
     name='main')

修改自己的路径,保存。

四、打包

进入当前 gui.py 的运行环境,

pyinstaller -y gui.spec

打包完成后会在当前目录下有dist —》main 文件夹。

 如上图所示即表示打包成功。

注意

1、最后把运行环境下的 ppocr 文件夹,放到 main 文件下即可。
ppocr 文件夹 在 D:\virtualenv\OCR\Lib\site-packages\paddleocr\ppocr

2、将libs文件夹拷贝到dist/main/paddle文件夹中,路径在D:\virtualenv\OCR\Lib\site-packages\paddle\libs

3、拷贝模型和测试图片至main文件夹下。

打包结果

在这里插入图片描述

现在直接运行main.exe ,输出结果后会闪退,所以cmd到main.exe 目录下运行

在这里插入图片描述

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
您可以使用PyInstallerPaddleOCR代码打包为可执行文件。首先,确保在虚拟环境中成功运行代码。根据提供的代码,可以看到PaddleOCR的初始化和图像处理部分。接下来,您需要使用PyInstaller命令将代码打包exe文件。基本的命令是"pyinstaller -D xxx.py",其中"xxx.py"是要打包的入口程序。使用"-D"参数会生成".spec"和".exe"文件,其中exe文件位于"dist/paddleocr"目录下。通过命令行运行exe文件,可以检查是否有报错并进行相应的修改。 在打包过程中,有一些注意事项需要考虑。首先,如果您在虚拟环境中使用了cv2库,可能会遇到打包问题。您可以通过修改虚拟环境中的"envs\paddle2.0\Lib\site-packages\paddle\dataset\image.py"文件来解决。根据引用,您需要在文件中添加一段代码来处理cv2库的导入。这样可以确保在虚拟环境下正常导入cv2库。 总结来说,要将PaddleOCR打包exe文件,您可以使用PyInstaller命令,并确保在虚拟环境中处理cv2库的导入问题。希望这些信息对您有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [PaddleOCR打包exe--Pyinstaller](https://blog.csdn.net/u013066730/article/details/121420342)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [paddleocr打包exe全过程详细介绍,包括遇到的问题及解决方案](https://blog.csdn.net/u012254599/article/details/128013680)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值