本文主要是介绍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 subprocessimport sysimport_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 = Noneelse:import cv2
else:try:import cv2except 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\ppocr2、将libs文件夹拷贝到dist/main/paddle文件夹中,路径在D:\virtualenv\OCR\Lib\site-packages\paddle\libs
3、拷贝模型和测试图片至main文件夹下。
打包结果
现在直接运行main.exe ,输出结果后会闪退,所以cmd到main.exe 目录下运行
这篇关于PaddleOCR打包exe--Pyinstaller的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!