Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

车牌识别系统 (Plate Recognizer)

一个本地运行的中国车牌识别小工具:

  • 🎥 拍照识别:调用摄像头实时预览,一键抓拍并自动识别车牌
  • 📁 图像导入:也可从本地图片识别
  • 📋 表格存储:识别结果(车牌号 / 置信度 / 时间 / 图片路径)持久化到 SQLite
  • ✏️ 手动更正:识别错误时可双击或点击「修正」编辑车牌号,并填写备注
  • 💾 CSV 导出:一键导出全部记录

目录结构

plate-recognizer/
├── src/
│   ├── __init__.py
│   ├── main.py             # 入口
│   ├── gui.py              # Tkinter 主界面
│   ├── camera.py           # OpenCV 摄像头封装
│   ├── recognizer.py       # 识别引擎 (hyperlpr3 / easyocr / mock)
│   ├── plate_validator.py  # 中国车牌格式校验
│   └── db.py               # SQLite 仓储 (Repository Pattern)
├── tests/
│   └── test_core.py        # 单元测试
├── data/                   # 运行时生成 (SQLite + 抓拍图)
├── requirements.txt
└── README.md

安装

cd plate-recognizer
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt

hyperlpr3 安装失败(如 macOS / Apple Silicon),程序会自动回退到 easyocr; 如果两者都不可用,仍可手动输入车牌号录入。

运行

python src/main.py
#
python -m src.main

测试

python -m unittest discover -s tests -v

测试覆盖:

  • 车牌格式校验(普通 / 新能源 / 异常输入)
  • SQLite 仓储增删改查、CSV 导出、不可变更新模式

使用流程

  1. 启动后顶部预览实时摄像头画面
  2. 点击 「📷 抓拍并识别」:自动保存 JPG → 调用 OCR → 入库
  3. 若识别结果不合规,会弹窗提示并允许立即修正
  4. 在右侧表格中:
    • 双击任一行 → 修正车牌号
    • 选中后点击 「✏️ 修正选中 / 🗑 删除选中 / 🖼 查看图像」
  5. 点击 「💾 导出 CSV」 将全部记录导出(兼容 Excel,UTF-8 BOM)

设计要点

  • 小文件、高内聚:每个模块 < 250 行,单一职责
  • 不可变数据PlateRecord@dataclass(frozen=True),更新走 replace()
  • Repository 模式:业务逻辑只依赖 PlateRepository 接口
  • 引擎可插拔RecognitionEngine 协议 + 自动回退(hyperlpr3 → easyocr → manual)
  • 后台识别:OCR 在后台线程执行,UI 不卡顿
  • 输入校验:所有手动输入车牌均经过格式校验
  • 错误处理:摄像头 / 文件 / OCR 异常均有用户可读提示

About

中国车牌识别桌面程序:摄像头拍照 + 自动OCR + SQLite存储 + 手动更正 + CSV导出(Python + Tkinter + OpenCV + hyperlpr3/easyocr)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages