使用 Flask 和 PaddleOCR 的车牌识别项目安装与打包教程

news/2025/1/10 14:56:22/

文章目录

  • 一、环境安装
    • 1. 安装 Python
    • 2. 创建虚拟环境
    • 3. 安装依赖
  • 二、项目实现
    • 代码文件 `app.py`
  • 三、打包流程
    • 1. 安装 `pyinstaller`
    • 2. 生成可执行文件
    • 3. 验证可执行文件
  • 四、测试车牌识别服务
    • 1. 使用 Postman 或 curl 测试
    • 2. 校验车牌
  • 五、提供给运维的打包文件

本教程基于 Flask 和 PaddleOCR,提供一个简易的车牌识别服务。

功能包括:

  • 处理上传的图像文件,提取车牌文字信息。
  • 通过 PaddleOCR 提供高效的 OCR 识别能力。
  • 返回 JSON 格式的车牌识别结果。

本文将详细介绍如何安装环境、配置依赖、实现车牌识别逻辑,以及将项目打包提供给运维。


一、环境安装

1. 安装 Python

确保系统已安装 Python 3.7 或更高版本。

  • 下载 Python:Python 官网
  • 安装时勾选 Add Python to PATH,确保命令行可直接使用 pythonpip

2. 创建虚拟环境

推荐使用虚拟环境隔离依赖。

python -m venv venv

激活虚拟环境:

  • Windows:
    .\venv\Scripts\activate
    
  • Linux/Mac:
    source ./venv/bin/activate
    

3. 安装依赖

首先确保 pip 是最新版本:

pip install --upgrade pip

安装必要的依赖包:

pip install flask paddleocr pillow numpy

注意:如果系统的 CPU 不支持 AVX 指令集,请使用以下命令安装无 AVX 支持的 PaddleOCR:

pip install paddlepaddle==2.5.0 -f https://www.paddlepaddle.org.cn/whl/cpu/noavx.html

二、项目实现

代码文件 app.py

python">from flask import Flask, request, jsonify
from paddleocr import PaddleOCR
from io import BytesIO
from PIL import Image
import numpy as npapp = Flask(__name__)# 初始化 PaddleOCR 模型
ocr = PaddleOCR(use_angle_cls=True, lang="ch")@app.route('/recognize', methods=['POST'])
def recognize():# 获取上传的文件file = request.files.get('image')# 如果没有上传文件,返回错误信息if not file:return jsonify({"error": "No file uploaded"}), 400try:# 从上传的文件读取图片并处理image = Image.open(BytesIO(file.read())).convert("RGB")image_np = np.array(image)# 使用 PaddleOCR 进行车牌识别result = ocr.ocr(image_np, cls=True)# 提取识别结果中的车牌信息plates = [line[1][0] for line in result[0]]  # 提取所有识别的文字return jsonify({"plates": plates})except Exception as e:# 发生异常时返回错误信息return jsonify({"error": str(e)}), 500if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)

三、打包流程

为了方便运维,我们需要将项目打包为可执行文件,便于分发。

1. 安装 pyinstaller

使用 pyinstaller 将项目打包为单独的可执行文件。

pip install pyinstaller

2. 生成可执行文件

在项目根目录下运行以下命令:

pyinstaller --onefile app.py

此命令将在 dist 文件夹中生成一个名为 app.exe 的文件。

3. 验证可执行文件

进入 dist 文件夹并运行打包后的文件:

cd dist
./app.exe

如果一切正常,服务将启动,监听 http://0.0.0.0:5000


四、测试车牌识别服务

1. 使用 Postman 或 curl 测试

可以使用以下命令测试服务:

curl -X POST -F "image=@<path_to_image>" http://127.0.0.1:5000/recognize

或者通过 Postman 工具发送图片文件至 /recognize 端点。

2. 校验车牌

识别结果通过 JSON 返回,例如:

{"plates": ["粤B12345"]
}

如果需要进一步验证车牌格式,可以在代码中加入正则表达式检查,例如:

python">import redef validate_plate(plate):pattern = r'^[一-龥][A-Z][0-9A-Z]{5}$'return bool(re.match(pattern, plate))# 使用示例
for plate in plates:if validate_plate(plate):print(f"Valid plate: {plate}")else:print(f"Invalid plate: {plate}")

五、提供给运维的打包文件

最终交付给运维的文件应包括:

  1. 打包生成的可执行文件 app.exe
  2. README.md,说明如何运行服务。
  3. 一个简单的脚本(可选),方便运维启动服务:
@echo off
start app.exe
pause

http://www.ppmy.cn/news/1562000.html

相关文章

边缘计算应用十大领域

边缘计算解决了互联网的网速问题&#xff0c;作为实现边缘计算的基础&#xff0c;那边缘计算是5G与产业互联网、物联网时代的重要技术支撑&#xff0c;也正迎来广阔的增长空间。那么现在我们生活中有哪些领域正在使用边缘计算呢&#xff1f;今天我们来盘点一下我们身边正在使用…

MySQL派生表合并优化的原理和实现

在MySQL中&#xff0c;派生表&#xff08;Derived Table&#xff09;是一个常用的技术&#xff0c;用于在SQL查询中临时创建一个表。派生表通常通过子查询实现。然而&#xff0c;派生表可能会导致性能问题&#xff0c;因为它们在执行过程中可能会创建临时表。在优化SQL查询时&a…

Web网页制作之JavaScript的应用

---------------&#x1f4e1;&#x1f50d;K学啦 更多学习资料&#x1f4d5; 免费获取--------------- 实现的功能&#xff1a;1.通过登录界面跳转至主页面&#xff0c;用户名统一为“admin”&#xff0c;密码统一为“admin123”&#xff0c;密码可显示或隐藏&#xff0c;输入…

【AI游戏】使用强化学习玩 Flappy Bird:从零实现 Q-Learning 算法(附完整资源)

1. 引言 Flappy Bird 是一款经典的休闲游戏&#xff0c;玩家需要控制小鸟穿过管道&#xff0c;避免碰撞。虽然游戏规则简单&#xff0c;但实现一个 AI 来自动玩 Flappy Bird 却是一个有趣的挑战。本文将介绍如何使用 Q-Learning 强化学习算法来训练一个 AI&#xff0c;使其能够…

SwiftUI 是如何改变 iOS 开发游戏规则的?

SwiftUI 是 Apple 推出的现代化声明式 UI 框架&#xff0c;适用于 iOS、macOS、watchOS 和 tvOS 开发。 SwiftUI 与传统 UIKit&#xff08;Swift 和 Objective-C&#xff09; 的优劣势对比&#xff1a; SwiftUI 的优势 一. 声明式编程 优势: SwiftUI 使用声明式语法&#xff…

线性回归的改进-岭回归

2.10 线性回归的改进-岭回归 学习目标 知道岭回归api的具体使用 1 API sklearn.linear_model.Ridge(alpha1.0, fit_interceptTrue,solver"auto", normalizeFalse) 具有l2正则化的线性回归alpha:正则化力度&#xff0c;也叫 λ λ取值&#xff1a;0~1 1~10solver:会根…

爬取电影数据结合Flask实现数据可视化

网站:Scrape | Movie 本案例(爬虫)所需要的模块 requests (网络请求模块)pandas (数据保存模块)parsel (数据解析模块)lxml (数据解析模块) pyecharts (可视化库)flask(框架) 以上的模块均需要通过 指令 pip install 模块名 安装 Explain: 分析此页面的数据为静态的…

flask-admin 非自定义modelview下扩展默认视图(base.html)

背景 在默认视图下实现某些统一的业务需求&#xff0c;如想改变默认视图的某些样式等。本文想阐述的是在默认视图下添加“面包屑”效果 材料&#xff1a; 略 制作&#xff1a; 目标&#xff1a; 1、在不重构的情况下实现如下效果 2、上源码 {% if admin_view.category %}…