# ZKFinger **Repository Path**: shatong_jari/zkfinger ## Basic Information - **Project Name**: ZKFinger - **Description**: 基于springboot和ZKFinger SDK的网页端指纹添加和识别,可做为项目集成测试用 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-01 - **Last Updated**: 2025-07-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ZKFinger 指纹识别Web系统 ## 🌐 项目概述 这是一个基于ZKTeco ZKFinger SDK 5.0.0.32的现代化Web指纹识别系统。该项目采用Spring Boot + WebSocket架构,提供完整的指纹录入、验证、识别功能,支持实时Web界面操作和数据管理。 ## 🏗️ 系统架构 ### 技术栈 - **后端框架**: Spring Boot 2.7.0 - **WebSocket**: 实时双向通信 - **数据库**: H2内存数据库 / MySQL - **指纹SDK**: ZKFinger SDK 5.0.0.32 - **前端**: 原生HTML5 + JavaScript + CSS3 - **JNI集成**: 原生指纹设备调用 ### 架构图 ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ Web浏览器 │◄──►│ Spring Boot │◄──►│ ZKFinger SDK │ │ (前端界面) │ │ (后端服务) │ │ (指纹设备) │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ │ │ │ WebSocket H2/MySQL数据库 JNI原生调用 实时通信 数据持久化 硬件设备接口 ``` ## 🚀 快速开始 ### 环境要求 - **Java**: JDK 8+ - **操作系统**: Windows (支持ZKFinger SDK) - **硬件**: ZKTeco指纹识别设备 - **浏览器**: Chrome/Firefox/Edge (支持WebSocket) ### 启动方式 #### 方式一:Maven启动 (推荐) ```bash # 编译项目 mvn clean compile # 启动Web应用 mvn spring-boot:run ``` #### 方式二:JAR包启动 ```bash # 打包项目 mvn clean package -DskipTests # 运行JAR包 java -jar target/fingerprint-web-1.0.0.jar ``` ### 访问系统 - **Web界面**: http://localhost:8080 - **WebSocket端点**: ws://localhost:8080/fingerprint-websocket ## 🎯 核心功能 ### 1. 设备管理 - **🔌 设备连接**: 自动检测并连接指纹设备 - **📊 设备状态**: 实时显示设备连接状态和参数 - **🔧 设备配置**: 支持设备参数调整和优化 - **❌ 设备断开**: 安全释放设备资源 ### 2. 指纹录入系统 ```javascript // Web端录入流程 { "action": "enroll_start", "userId": "user001", "userName": "张三" } ``` - **👆 多次录入**: 支持3次指纹录入提高模板质量 - **🎯 重复检测**: 自动检测重复指纹,避免重复录入 - **💾 模板存储**: 指纹模板安全存储到数据库 - **📸 图像预览**: 实时显示指纹图像和质量评估 ### 3. 指纹验证 (1:1) ```javascript // 验证请求 { "action": "verify", "userId": "user001", "templateData": "base64编码的指纹模板" } ``` - **⚡ 快速验证**: 毫秒级1:1指纹比对 - **📈 匹配分数**: 返回详细的匹配度分数 - **🔒 安全验证**: 支持防伪检测和活体识别 ### 4. 指纹识别 (1:N) ```javascript // 识别请求 { "action": "identify", "maxResults": 5 } ``` - **🔍 批量识别**: 在整个指纹库中搜索匹配 - **📊 排序结果**: 按匹配度排序返回候选结果 - **⚡ 高效算法**: 优化的搜索算法,支持大量指纹 ### 5. 数据管理 - **📋 用户管理**: 完整的用户信息CRUD操作 - **🗃️ 指纹库**: 指纹模板的存储、查询、删除 - **📊 统计分析**: 录入成功率、验证准确率统计 - **💾 数据导出**: 支持指纹数据的导出和备份 ## 🌐 Web界面详解 ### 主界面布局 ```html ┌─────────────────────────────────────────────────┐ │ 系统标题栏 │ ├─────────────────────────────────────────────────┤ │ 设备状态 │ 操作面板 │ │ 连接信息 │ ┌─────┐ ┌─────┐ ┌─────┐ │ │ 参数显示 │ │录入 │ │验证 │ │识别 │ │ │ │ └─────┘ └─────┘ └─────┘ │ ├─────────────────────────────────────────────────┤ │ 指纹图像显示区域 │ │ (实时显示采集的指纹图像) │ ├─────────────────────────────────────────────────┤ │ 操作日志区域 │ │ (显示所有操作的详细日志) │ └─────────────────────────────────────────────────┘ ``` ### 实时通信特性 - **📡 WebSocket连接**: 实时双向数据传输 - **🔄 状态同步**: 设备状态实时更新 - **📝 日志推送**: 操作日志实时显示 - **🖼️ 图像传输**: Base64编码的指纹图像实时传输 ## 📡 WebSocket API ### 连接建立 ```javascript const socket = new WebSocket('ws://localhost:8080/fingerprint-websocket'); socket.onopen = function(event) { console.log('WebSocket连接已建立'); }; ``` ### 消息格式 #### 请求消息 ```json { "action": "操作类型", "data": { "参数名": "参数值" }, "timestamp": 1640995200000 } ``` #### 响应消息 ```json { "type": "响应类型", "success": true, "data": { "结果数据": "值" }, "message": "操作描述", "timestamp": 1640995200000 } ``` ### 支持的操作 #### 设备管理 ```javascript // 连接设备 { "action": "connect_device" } // 断开设备 { "action": "disconnect_device" } // 获取设备状态 { "action": "get_device_status" } ``` #### 指纹操作 ```javascript // 开始录入 { "action": "enroll_start", "data": { "userId": "用户ID", "userName": "用户姓名" } } // 验证指纹 { "action": "verify", "data": { "userId": "用户ID" } } // 识别指纹 { "action": "identify", "data": { "maxResults": 10 } } ``` ## 🗄️ 数据库设计 ### 指纹数据表 (fingerprint_data) ```sql CREATE TABLE fingerprint_data ( id BIGINT PRIMARY KEY AUTO_INCREMENT, user_id VARCHAR(50) NOT NULL, user_name VARCHAR(100) NOT NULL, template_data TEXT NOT NULL, -- Base64编码的指纹模板 finger_index INTEGER DEFAULT 0, -- 手指编号 quality_score INTEGER DEFAULT 0, -- 指纹质量分数 status VARCHAR(20) DEFAULT 'ACTIVE', -- 状态:ACTIVE/INACTIVE created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_user_finger (user_id, finger_index) ); ``` ### 数据库配置 ```properties # H2内存数据库 (默认) spring.datasource.url=jdbc:h2:mem:fingerprint spring.h2.console.enabled=true # MySQL数据库 (可选) # spring.datasource.url=jdbc:mysql://localhost:3306/fingerprint # spring.datasource.username=root # spring.datasource.password=password ``` ## 🔧 配置说明 ### application.properties ```properties # 服务器配置 server.port=8080 server.servlet.context-path=/ # WebSocket配置 websocket.endpoint=/fingerprint-websocket websocket.allowed-origins=* # 指纹设备配置 fingerprint.device.timeout=5000 fingerprint.template.size=2048 fingerprint.enroll.retry-count=3 # 日志配置 logging.level.com.zkteco.fingerprint=DEBUG logging.pattern.console=%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n ``` ## 🚀 部署指南 ### 开发环境部署 1. **克隆项目** ```bash git clone https://gitee.com/shatong_jari/zkfinger.git cd zkfinger ``` 2. **安装依赖** ```bash mvn clean install ``` 3. **启动应用** ```bash mvn spring-boot:run ``` ### 生产环境部署 1. **打包应用** ```bash mvn clean package -DskipTests ``` 2. **部署JAR包** ```bash java -jar -Dspring.profiles.active=prod target/fingerprint-web-1.0.0.jar ``` 3. **配置服务** - 配置为Windows服务 - 设置开机自启动 - 配置日志轮转 ## 🔍 故障排除 ### 常见问题 #### 1. 设备连接失败 ``` 错误: 无法连接指纹设备 解决: - 检查设备是否正确连接 - 确认设备驱动已安装 - 检查设备是否被其他程序占用 ``` #### 2. WebSocket连接断开 ``` 错误: WebSocket连接中断 解决: - 检查网络连接 - 确认防火墙设置 - 重新刷新页面建立连接 ``` #### 3. 指纹录入失败 ``` 错误: 指纹质量不够或录入失败 解决: - 清洁手指和设备表面 - 调整手指按压力度 - 尝试不同角度录入 ``` ## 📊 性能优化 ### 系统性能指标 - **响应时间**: 指纹验证 < 100ms - **并发支持**: 支持50+并发WebSocket连接 - **数据库性能**: 10万条指纹记录查询 < 500ms - **内存占用**: 运行时内存 < 512MB ### 优化建议 1. **数据库优化**: 为user_id和created_time添加索引 2. **连接池配置**: 合理设置数据库连接池大小 3. **缓存策略**: 对频繁查询的指纹模板进行缓存 4. **异步处理**: 指纹识别使用异步处理提高响应速度 ## 🔐 安全考虑 ### 数据安全 - **指纹模板加密**: 存储前对指纹模板进行加密 - **传输安全**: 支持HTTPS和WSS加密传输 - **访问控制**: 基于角色的访问权限控制 - **审计日志**: 完整的操作审计日志记录 ### 系统安全 - **输入验证**: 严格的输入参数验证 - **SQL注入防护**: 使用参数化查询 - **XSS防护**: 前端输出转义处理 - **CSRF防护**: 跨站请求伪造防护 ## 📈 扩展功能 ### 计划功能 - **🔐 用户权限系统**: 多角色权限管理 - **📱 移动端支持**: 响应式设计,支持移动设备 - **🌍 多语言支持**: 国际化语言包 - **📊 数据分析**: 指纹使用统计和分析报告 - **🔄 数据同步**: 多设备间数据同步 - **☁️ 云端部署**: 支持Docker容器化部署 ### API扩展 - **RESTful API**: 提供完整的REST API接口 - **SDK开发**: 提供Java/Python/C# SDK - **第三方集成**: 支持与第三方系统集成 ## 📞 技术支持 ### 联系方式 - **项目地址**: https://gitee.com/shatong_jari/zkfinger - **问题反馈**: 通过Gitee Issues提交问题 - **技术文档**: 查阅ZKFinger SDK官方文档 ### 开发团队 - **架构设计**: Spring Boot + WebSocket架构 - **前端开发**: 现代化Web界面设计 - **后端开发**: 指纹识别服务和数据管理 - **测试支持**: 完整的功能测试和性能测试 --- *🎯 本项目专注于提供现代化的Web指纹识别解决方案,支持企业级应用部署。* *📝 基于ZKTeco ZKFinger SDK 5.0.0.32开发,适用于各种指纹识别应用场景。*