1. 项目概述与背景
考勤管理一直是企业日常运营中的痛点问题。记得去年我帮一家200人规模的公司做系统升级时,发现他们还在用纸质签到表+指纹打卡的混合方式。每月底HR部门要花整整3天时间核对考勤数据,还经常出现代打卡、漏打卡的纠纷。这正是人脸识别考勤系统能大显身手的地方。
这个基于PyQt5和MySQL的系统,核心解决了三个传统考勤的顽疾:
- 身份冒用问题:人脸特征的唯一性从根本上杜绝了代打卡
- 数据孤岛问题:所有记录实时入库,告别Excel表格的版本混乱
- 流程低效问题:识别+记录全程自动化,HR只需处理异常情况
技术选型上特别说明:PyQt5的跨平台特性让系统可以部署在Windows/Linux/macOS,而MySQL的ACID特性确保了考勤数据的绝对可靠。这两个选择经过了实际生产环境的验证。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心架构设计
2.1 系统模块划分
整个系统采用典型的三层架构:
code复制表示层(PyQt5 UI)
↓
业务逻辑层(人脸识别+考勤规则)
↓
数据访问层(MySQL CRUD)
2.2 关键技术栈深度解析
- 人脸识别方案对比:
- OpenCV Haar级联:速度快但准确率低(实测约85%)
- Dlib HOG:平衡性好(实测92%)
- face_recognition库:基于dlib的深度学习模型(实测98%+)
最终选择face_recognition库,因其:
- 单次识别仅需300-500ms
- 自带128维特征向量生成
- 对光照变化鲁棒性强
2.3 数据库设计精要
people表优化方案:
sql复制CREATE TABLE `people` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) COLLATE utf8mb4_bin NOT NULL, -- 区分大小写
`employee_id` VARCHAR(20) GENERATED ALWAYS AS (CONCAT('EMP',LPAD(id,5,'0'))) STORED,
`face_encoding` BLOB NOT NULL,
`c
