# 身份证识别接口 - 快速测试指南 ## 📌 实现总结 ✅ **已完成** - 身份证识别接口 `/marriage/ocr/parseIdCard` 已成功添加到 OcrController ## 🚀 快速测试步骤 ### 前提条件 - 已配置百度OCR API Key和Secret Key - 应用已启动,监听在 8080 端口 - 已获取验证码和手机号 ### 测试流程 #### 1️⃣ 上传身份证图片 ```bash curl -X POST \ -F "file=@/path/to/idcard_front.jpg" \ http://localhost:8080/marriage/ocr/upload ``` **保存返回的 uploadId** #### 2️⃣ 调用身份证识别接口 ```bash curl -X POST \ -H "Content-Type: application/json" \ -d '{ "mobile": "18888888888", "smsCode": "123456", "uploadId": "xxx" }' \ http://localhost:8080/marriage/ocr/parseIdCard ``` ## 📋 完整的请求/响应示例 ### 请求 ```json { "mobile": "18888888888", "smsCode": "123456", "uploadId": "a1b2c3d4e5f6g7h8" } ``` ### 成功响应(识别成功) ```json { "code": 200, "msg": "success", "data": { "raw": "{...百度API原始响应JSON...}", "words": ["王连杰", "男", "汉族", "1995年04月01日", "江苏省南京市建邺区...", "320321199504011218"], "parsed": { "name": "王连杰", "gender": "男", "nationality": "汉族", "birthday": "1995-04-01", "address": "江苏省南京市建邺区...", "id_number": "320321199504011218" }, "parsed_detailed": { "name": { "word": "王连杰", "probability": { "average": 20.68798065, "min": 0.9106679559 }, "location": { "width": 109, "height": 47, "top": 933, "left": 253 } }, "gender": { "word": "男", "probability": { "average": 24.97878838, "min": 0.9302400351 }, "location": { "width": 39, "height": 40, "top": 973, "left": 792 } }, "nationality": { "word": "汉族", "probability": { "average": 17.19703484, "min": 0.7144192457 }, "location": { "width": 79, "height": 43, "top": 1011, "left": 249 } }, "birthday": { "word": "1995-04-01", "probability": { "average": 20.66628647, "min": 0.7240950465 }, "location": { "width": 250, "height": 55, "top": 1044, "left": 857 } }, "address": { "word": "江苏省南京市建邺区...", "probability": { "average": 18.5, "min": 0.75 }, "location": { "width": 300, "height": 60, "top": 1100, "left": 300 } }, "id_number": { "word": "320321199504011218", "probability": { "average": 13.2870388, "min": 0.5172381401 }, "location": { "width": 341, "height": 68, "top": 1081, "left": 343 } } } } } ``` ### 失败响应示例 **缺少关键字段**: ```json { "code": 400, "msg": "请上传完整清晰的身份证正面", "data": null } ``` **验证码错误**: ```json { "code": 400, "msg": "验证码错误,请重新输入!", "data": null } ``` **文件过期**: ```json { "code": 400, "msg": "上传文件不存在或已过期,请重新上传!", "data": null } ``` ## 🔍 响应字段说明 ### parsed 字段(简化格式) 用于快速获取识别结果,仅包含文本内容: - `name` - 姓名 - `gender` - 性别 - `nationality` - 民族 - `birthday` - 出生日期(已格式化为 YYYY-MM-DD) - `address` - 住址 - `id_number` - 身份证号 ### parsed_detailed 字段(详细格式) 用于获取完整的识别信息,每个字段包含: - `word` - 识别的文本内容 - `probability` - 识别概率 - `average` - 平均概率 (0-100) - `min` - 最小概率 - `location` - 在图片中的位置 - `width` - 宽度(像素) - `height` - 高度(像素) - `top` - 距顶部(像素) - `left` - 距左侧(像素) ## 💡 使用建议 ### 1. 检查识别质量 ```javascript // 检查识别概率 if (data.parsed_detailed.name.probability.average < 60) { console.warn('姓名识别质量较低,建议人工审核'); } ``` ### 2. 提取特定字段 ```javascript // 简单方式 const name = data.parsed.name; // 详细方式 const nameData = data.parsed_detailed.name; const nameWord = nameData.word; const nameConfidence = nameData.probability.average; ``` ### 3. 验证关键信息 ```javascript // 验证身份证号长度 if (data.parsed.id_number.length !== 18) { console.error('身份证号长度不正确'); } // 验证日期格式 const dateRegex = /^\d{4}-\d{2}-\d{2}$/; if (!dateRegex.test(data.parsed.birthday)) { console.error('出生日期格式不正确'); } ``` ## 🔧 常见问题 ### Q: 如何区分结婚证识别和身份证识别? A: - 结婚证识别:POST `/marriage/ocr/parse` - 身份证识别:POST `/marriage/ocr/parseIdCard` ### Q: 上传接口可以共用吗? A: 是的,使用相同的上传接口:POST `/marriage/ocr/upload` ### Q: 识别概率很低怎么办? A: 1. 上传更清晰的身份证照片 2. 确保光线充足 3. 避免倾斜和反光 4. 考虑人工审核 ### Q: location 信���有什么用? A: - 在前端标注识别位置 - 裁剪识别结果进行二次处理 - 验证识别的准确性 ### Q: 支持身份证反面吗? A: 当前实现仅支持身份证正面(id_card_side: "front")。如需支持反面,可参考代码逻辑进行扩展。 ## 📊 API对比 | 功能 | 结婚证识别 | 身份证识别 | |------|---------|---------| | 接口URL | `/marriage/ocr/parse` | `/marriage/ocr/parseIdCard` | | 上传接口 | `/marriage/ocr/upload` | `/marriage/ocr/upload` | | 百度API | marriage_certificate | idcard | | 支持反面 | 是(可扩展) | 否(仅正面) | | probability | ✅ | ✅ | | location | ✅ | ✅ | | 向后兼容 | ✅ | ✅ | ## 🧪 使用 Postman 测试 ### 1. 新建 POST 请求 URL: `http://localhost:8080/marriage/ocr/parseIdCard` ### 2. 设置 Headers | Key | Value | |-----|-------| | Content-Type | application/json | ### 3. 设置 Body (raw JSON) ```json { "mobile": "18888888888", "smsCode": "123456", "uploadId": "a1b2c3d4e5f6g7h8" } ``` ### 4. 点击 Send ## 📖 相关文档 - [OCR功能完整文档](OCR_API_DOCUMENT.md) - [身份证识别实现详情](IDCARD_IMPLEMENTATION.md) - [快速参考指南](OCR_QUICK_REFERENCE.md) --- **实现完成日期**: 2025-11-26 **版本**: v1.0.0 **状态**: ✅ 生产就绪