PaddleOCR打包exe--Pyinstaller

2024-08-27 17:18

本文主要是介绍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\ppocr

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

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

打包结果

在这里插入图片描述

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

在这里插入图片描述

这篇关于PaddleOCR打包exe--Pyinstaller的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1112280

相关文章

python项目打包成docker容器镜像的两种方法实现

《python项目打包成docker容器镜像的两种方法实现》本文介绍两种将Python项目打包为Docker镜像的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录简单版:(一次成功,后续下载对应的软件依赖)第一步:肯定是构建dockerfile,如下:第二步

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

nodejs打包作为公共包使用的完整流程

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言一、前置准备二、创建与编码三、一键构建四、本地“白嫖”测试(可选)五、发布公共包六、常见踩坑提醒

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

idea Maven Springboot多模块项目打包时90%的问题及解决方案

《ideaMavenSpringboot多模块项目打包时90%的问题及解决方案》:本文主要介绍ideaMavenSpringboot多模块项目打包时90%的问题及解决方案,具有很好的参考价值,... 目录1. 前言2. 问题3. 解决办法4. jar 包冲突总结1. 前言之所以写这篇文章是因为在使用Mav

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

Maven项目打包时添加本地Jar包的操作步骤

《Maven项目打包时添加本地Jar包的操作步骤》在Maven项目开发中,我们经常会遇到需要引入本地Jar包的场景,比如使用未发布到中央仓库的第三方库或者处理版本冲突的依赖项,本文将详细介绍如何通过M... 目录一、适用场景说明​二、核心操作命令​1. 命令格式解析​2. 实战案例演示​三、项目配置步骤​1

Spring Boot项目打包和运行的操作方法

《SpringBoot项目打包和运行的操作方法》SpringBoot应用内嵌了Web服务器,所以基于SpringBoot开发的web应用也可以独立运行,无须部署到其他Web服务器中,下面以打包dem... 目录一、打包为JAR包并运行1.打包为可执行的 JAR 包2.运行 JAR 包二、打包为WAR包并运行

Python将字库文件打包成可执行文件的常见方法

《Python将字库文件打包成可执行文件的常见方法》在Python打包时,如果你想将字库文件一起打包成一个可执行文件,有几种常见的方法,具体取决于你使用的打包工具,下面就跟随小编一起了解下具体的实现方... 目录使用 PyInstaller基本方法 - 使用 --add-data 参数使用 spec 文件(