1. 项目概述
在本项目中,我们将构建一个 车牌号识别网站,用户可以上传车辆图片,系统会通过 OCR 车牌识别模型(PaddleOCR / HyperLPR) 提取车牌号码,并将结果展示到前端。同时,用户可以选择不同的 OCR 模型,并查看识别历史记录。
2. 网站功能需求
✅ 核心功能
- 图片上传 📷 - 用户上传包含车牌的图片
- 车牌号识别 🔍 - 通过 OCR 识别车牌号
- 模型选择 🏷 - 用户可切换 PaddleOCR / HyperLPR
- 结果展示 📜 - 前端显示识别结果
- 识别历史 🕒 - 存储识别记录,用户可查看历史
- API 支持 🖥 - 提供 RESTful API,支持前后端交互
🎨 扩展功能
- 数据库存储 - 使用 MySQL 存储识别记录
- 用户权限管理 - 采用 JWT 进行认证
- 批量上传 - 允许用户一次上传多张图片并识别
3. 技术选型
🖥️ 后端(FastAPI)
- FastAPI - Python 的轻量级 Web 框架,支持异步、高性能 API 开发
- PaddleOCR / HyperLPR - 车牌识别 OCR
- MySQL - 存储用户识别记录
- SQLAlchemy - ORM 进行数据库管理
- JWT / OAuth2 - 用户认证
🌐 前端(React)
- React + Vite - 现代前端框架,提供快速交互体验
- Ant Design - 美观的 UI 组件库
- Axios - 进行 API 请求
4. 项目架构
car-plate-recognition/
├── backend/ # FastAPI 后端
│ ├── main.py # FastAPI 入口
│ ├── models.py # 数据库模型
│ ├── routes/ # API 路由
│ │ ├── ocr.py # 车牌识别 API
│ │ ├── auth.py # 用户认证 API
│ │ ├── history.py # 识别历史 API
│ ├── services/ # 业务逻辑
│ │ ├── ocr_service.py # OCR 识别处理
│ ├── database.py # 数据库连接
│ ├── config.py # 配置文件
│ ├── requirements.txt # 依赖库
│ ├── Dockerfile # 容器化部署
├── frontend/ # React 前端
│ ├── src/
│ │ ├── components/ # 组件
│ │ ├── pages/ # 页面
│ │ ├── services/ # API 请求
│ │ ├── App.tsx # 入口
│ │ ├── index.tsx # 渲染入口
│ ├── package.json # 前端依赖
│ ├── vite.config.ts # Vite 配置
├── docker-compose.yml # 一键部署
5. FastAPI 后端开发
5.1 安装依赖
pip install fastapi uvicorn paddleocr hyperlpr mysql-connector-python sqlalchemy python-multipart pydantic jwt
5.2 配置 FastAPI 入口
backend/main.py
from fastapi import FastAPI
from routes import ocr, auth, history
from database import engine, Base
# 初始化数据库
Base.metadata.create_all