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

相关文章

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

Flutter打包APK的几种方式小结

《Flutter打包APK的几种方式小结》Flutter打包不同于RN,Flutter可以在AndroidStudio里编写Flutter代码并最终打包为APK,本篇主要阐述涉及到的几种打包方式,通... 目录前言1. android原生打包APK方式2. Flutter通过原生工程打包方式3. Futte

linux打包解压命令方式

《linux打包解压命令方式》文章介绍了Linux系统中常用的打包和解压命令,包括tar和zip,使用tar命令可以创建和解压tar格式的归档文件,使用zip命令可以创建和解压zip格式的压缩文件,每... 目录Lijavascriptnux 打包和解压命令打包命令解压命令总结linux 打包和解压命令打

将java程序打包成可执行文件的实现方式

《将java程序打包成可执行文件的实现方式》本文介绍了将Java程序打包成可执行文件的三种方法:手动打包(将编译后的代码及JRE运行环境一起打包),使用第三方打包工具(如Launch4j)和JDK自带... 目录1.问题提出2.如何将Java程序打包成可执行文件2.1将编译后的代码及jre运行环境一起打包2

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

PHP执行php.exe -v命令报错的解决方案

《PHP执行php.exe-v命令报错的解决方案》:本文主要介绍PHP执行php.exe-v命令报错的解决方案,文中通过图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录执行phpandroid.exe -v命令报错解决方案执行php.exe -v命令报错-PHP War