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程序打包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 文件(

使用Python和PaddleOCR实现图文识别的代码和步骤

《使用Python和PaddleOCR实现图文识别的代码和步骤》在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等,PaddleOCR是百度开源的一款强大的OCR工具包,它集成了... 目录一、引言二、环境准备2.1 安装 python2.2 安装 PaddlePaddle2.3 安装

将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