# PaddleOCR 智能识别 **Repository Path**: Ultron2018/paddleocrzhinengshi ## Basic Information - **Project Name**: PaddleOCR 智能识别 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-27 - **Last Updated**: 2026-07-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🧠 PaddleOCR 智慧识别服务 基于 [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) / [PaddleX](https://github.com/PaddlePaddle/PaddleX) 3.7.0 构建的**两个独立 Web 服务**,提供**文字识别(OCR)** 和**目标检测 + 车牌识别**能力。 --- ## 项目结构 ``` paddleocrzhinengshi/ ├── services/ # 核心服务代码 │ ├── ocr/ # 📄 OCR 文字识别 (Port 5005) │ │ ├── app.py # Flask Web 服务入口 │ │ ├── worker.py # OCR 推理子进程 (TCP 15005) │ │ └── __init__.py │ ├── detect/ # 🚗 目标检测 + 车牌识别 (Port 5006) │ │ ├── app.py # Flask Web 服务入口 │ │ ├── worker.py # 视频检测子进程 │ │ ├── plate_rec.py # 车牌识别模块(调用 5005 OCR 服务) │ │ └── __init__.py │ └── templates/ # 🎨 前端 HTML 模板 │ ├── ocr.html # OCR 服务前端 │ └── index.html # 检测服务前端(单图/摄像头/视频) ├── deploy/ # 🚀 部署脚本 │ ├── start_all.bat # 一键启动所有服务 │ ├── stop_all.bat # 停止所有服务 │ ├── start_ocr.bat # 单独启动 OCR 服务 │ └── start_detect.bat # 单独启动检测服务 ├── docs/ # 📖 文档 │ └── api.md # API 接口文档 ├── requirements.txt # Python 依赖 ├── .env.example # 环境变量模板 ├── .gitignore └── README.md ``` --- ## 服务功能 ### 1️⃣ OCR 文字识别服务(Port 5005) | 功能 | 说明 | |---|---| | **图片 OCR** | 上传 JPG/PNG/BMP/WebP/TIF 图片,返回检测框 + 识别文字 + 置信度 | | **标注图** | 自动在图片上绘制识别框和文字,返回 Base64 预览 | | **结果下载** | 支持 TXT/JSON/标注图格式 | | **架构** | Flask + 独立 Worker 进程(TCP 15005),推理崩溃不影响 Web 服务 | **访问地址:** http://localhost:5005 **调用方式:** ```bash curl -X POST http://localhost:5005/api/ocr \ -F "file=@test.jpg" ``` ### 2️⃣ 目标检测 + 车牌识别服务(Port 5006) | 功能 | 说明 | |---|---| | **单图检测** | 上传图片,PaddleX 目标检测 + 全图车牌 OCR | | **摄像头实时检测** | 前端逐帧上传,canvas 实时渲染标注 | | **视频文件检测** | 上传 MP4,后台子进程逐帧处理,支持下载标注视频 | | **异步车牌识别** | 单图检测立即返回,车牌 OCR 后台线程异步处理 | | **车牌类型识别** | 支持蓝牌/绿牌/黄牌/白牌/黑牌的规则分类 | | **跨帧车牌跟踪** | 基于 IOU 的轨迹跟踪,同车避免重复 OCR | **访问地址:** http://localhost:5006 **调用方式:** ```bash # 单图检测(同步) curl -X POST http://localhost:5006/api/detect \ -F "file=@car.jpg" # 视频检测 curl -X POST http://localhost:5006/api/detect_video \ -F "file=@traffic.mp4" \ -F "sample_every=2" ``` --- ## 系统架构 ``` ┌─────────────┐ ┌────────────────────────────────────────┐ │ 浏览器 │ │ 本地服务器 (CPU) │ │ (前端UI) │ │ │ │ │ │ ┌──────────────────────────────────┐ │ │ ocr.html ───┼─────┼─>│ OCR 服务 (Port 5005) │ │ │ │ │ │ ├─ web_app.py (Flask) │ │ │ │ │ │ └─ ocr_worker.py (TCP 15005) │ │ │ │ │ └──────────────────────────────────┘ │ │ │ │ ▲ │ │ │ │ │ HTTP /api/ocr │ │ index.html ─┼─────┼─>│ Detection 服务 (Port 5006) │ │ │ │ │ │ ├─ web_detect.py (Flask) │ │ │ │ │ │ ├─ detect_worker.py (视频) │ │ │ │ │ │ └─ plate_rec.py (车牌 OCR) ──────┘ │ │ │ │ └──────────────────────────────────┘ │ └─────────────┘ └────────────────────────────────────────┘ ``` **核心设计:** - **OCR Worker 进程隔离**:PaddleOCR 推理在独立子进程中,崩溃不影响 Flask 服务 - **视频检测子进程隔离**:视频文件处理在独立子进程中,崩溃不影响 Web 服务 - **单帧容错**:视频检测中单帧异常沿用上一帧结果,不中断处理 - **自愈机制**:Worker 失联时自动重启(最多重试 3 次) --- ## 本地启动 ### 环境要求 - Windows 10/11(当前支持) - [Miniconda](https://docs.conda.io/en/latest/miniconda.html) 或 [Anaconda](https://www.anaconda.com/) ### 1️⃣ 创建虚拟环境 ```bash conda create -n paddleocr37 python=3.10 conda activate paddleocr37 ``` ### 2️⃣ 安装依赖 ```bash # 方式一:从 requirements.txt 安装(推荐) cd paddleocrzhinengshi pip install -r requirements.txt # 方式二:直接安装 PaddleX(含 OCR) pip install paddlex[ocr-core]>=3.7.0,<3.8.0 ``` > **注意**:首次启动时会自动下载模型文件,根据网络情况可能需要数分钟。 ### 3️⃣ 启动服务 **一键启动(推荐):** ```bash deploy\start_all.bat ``` **分步启动:** ```bash # 终端 1:启动 OCR Worker (TCP 15005) python services/ocr/worker.py # 终端 2:启动 OCR 服务 (HTTP 5005) python services/ocr/app.py # 终端 3:启动检测服务 (HTTP 5006) python services/detect/app.py ``` **停止服务:** ```bash deploy\stop_all.bat ``` ### 4️⃣ 验证服务 - OCR 服务:打开 http://localhost:5005 - 检测服务:打开 http://localhost:5006 --- ## 环境变量 | 变量 | 默认值 | 说明 | |---|---|---| | `OCR_HOST` | `0.0.0.0` | 服务监听地址 | | `OCR_PORT` | `5005` / `5006` | 服务监听端口 | | `OCR_DET_MODEL` | `PP-YOLOE_plus-S` | 目标检测模型名 | | `OCR_DET_MAX_SIDE` | `640` | 视频帧缩放长边上限(px) | | `PLATE_OCR_URL` | `http://127.0.0.1:5005` | 车牌 OCR 调用地址 | 示例:`set OCR_PORT=5006 && python services/detect/app.py` --- ## 技术栈 | 组件 | 技术 | |---|---| | 后端框架 | Flask 3.x | | OCR 引擎 | PaddleOCR / PaddlePaddle | | 目标检测 | PaddleX (PP-YOLOE_plus-S) | | 图像处理 | OpenCV, Pillow, NumPy | | 前端 | HTML + JavaScript + Canvas | --- ## 项目背景 本项目是 PaddleOCR 官方仓库的一个**应用级扩展**,在官方提供的 OCR 推理能力之上,封装了易用的 Web API 和前端界面,并额外集成了车辆目标检测与车牌识别功能,适用于停车场管理、交通监控等场景。 模型缓存位于 `paddlex_cache/` 目录,由 PaddleX 自动管理。