# 项目已完成!🎉 ## ✅ 已完成的工作 ### 1. 核心功能实现 - [x] SpringBoot 后端框架搭建 - [x] Vue.js 3 前端界面(CDN 方式,无需构建) - [x] 摄像头拍照功能(H5 调用浏览器摄像头) - [x] 百炼平台 qwen-vl 模型身份证识别 - [x] CSV 文件本地数据存储 - [x] 完整的患者建档流程 - [x] 手动输入身份证号的容错方案 ### 2. 技术实现 - [x] 使用阿里云百炼官方 SDK(而非 LangChain4J) - [x] 临时文件自动清理机制 - [x] 多层响应解析策略 - [x] 完善的异常处理 - [x] 详细的日志记录 ### 3. 文档和脚本 - [x] README.md - 完整使用文档 - [x] QUICK_START.md - 快速启动指南 - [x] TECHNICAL_NOTES.md - 技术实现说明 - [x] CHANGELOG.md - 更新日志 - [x] start.sh - Mac/Linux 启动脚本 - [x] start.bat - Windows 启动脚本 - [x] .gitignore - Git 忽略文件 ## 📁 项目结构 ``` establish_medical_demo/ ├── pom.xml # Maven 配置 ├── README.md # 主文档 ├── QUICK_START.md # 快速开始 ├── TECHNICAL_NOTES.md # 技术说明 ├── CHANGELOG.md # 更新日志 ├── start.sh # Linux/Mac 启动脚本 ├── start.bat # Windows 启动脚本 ├── .gitignore # Git 配置 └── src/ └── main/ ├── java/com/medical/demo/ │ ├── HospitalRegistrationApplication.java │ ├── config/ │ │ └── AppConfig.java │ ├── controller/ │ │ ├── AppController.java │ │ └── PatientController.java │ ├── entity/ │ │ ├── ApiResponse.java │ │ ├── IdCardRecognitionResult.java │ │ └── PatientInfo.java │ └── service/ │ ├── IdCardRecognitionService.java ← 百炼 SDK 实现 │ └── PatientDataService.java └── resources/ ├── application.yml └── static/ └── index.html ← Vue.js 前端 ``` ## 🚀 快速开始(3 步) ### 1. 配置 API Key 编辑 `src/main/resources/application.yml`: ```yaml bailian: api-key: sk-xxxxxxxxxxxxx # 替换为你的百炼平台 API Key ``` ### 2. 启动项目 ```bash # Windows start.bat # Mac/Linux ./start.sh ``` ### 3. 访问系统 打开浏览器访问:`http://localhost:8080` ## 🎯 核心特性 ### 1. 百炼平台集成(官方 SDK) 使用 `MultiModalConversation` 类直接调用: ```java MultiModalConversation conversation = new MultiModalConversation(); MultiModalConversationParam param = MultiModalConversationParam.builder() .apiKey(apiKey) .model("qwen-vl-max") .messages(Arrays.asList(userMessage)) .build(); MultiModalConversationResult result = conversation.call(param); ``` **优势:** - ✅ 性能更好(直接调用,无中间层) - ✅ 准确率更高(官方优化) - ✅ 配置简单(只需 API Key) - ✅ 异常处理完善(专门的异常类型) ### 2. 智能识别策略 多层解析确保高成功率: 1. **正则直接提取**:匹配 18 位身份证号 2. **JSON 解析**:从结构化响应中提取 3. **失败判断**:识别错误关键词 4. **格式验证**:18 位 + 前 17 位数字 + 最后一位数字或 X ### 3. 临时文件管理 ```java // 1. 保存到临时目录 Path tempFile = Path.of(TEMP_DIR, "idcard_" + UUID.randomUUID() + ".jpg"); Files.copy(file.getInputStream(), tempFile); // 2. 调用 API(使用本地文件路径) callDashScopeAPI(tempFile.toString()); // 3. 自动清理 Files.delete(tempFile); ``` ### 4. 前端功能 - **Vue.js 3**:响应式设计,支持移动端 - **Element Plus**:美观的 UI 组件 - **Axios**:简洁的 HTTP 请求 - **H5 摄像头**:直接调用浏览器摄像头 - **容错机制**:识别失败可手动输入 ## 📊 技术对比 | 特性 | 之前的方案 | 当前方案 | |------|----------|---------| | SDK | LangChain4J | 阿里云百炼官方 SDK | | 图片传递 | Base64 编码 | 本地文件路径 | | 配置复杂度 | 高(5+ 个参数) | 低(2 个参数) | | 性能 | 较好 | 更好 | | 准确率 | 较好 | 更好 | | 代码量 | 较多 | 更精简 | ## 🔧 配置说明 ### application.yml ```yaml # 服务器配置 server: port: 8080 # 百炼平台配置 bailian: api-key: YOUR_API_KEY_HERE # 必填:从百炼平台获取 model: qwen-vl-max # 可选:qwen-vl-max/plus/v1 # 应用配置 app: hospital-name: 甘肃省中医院 data-file-path: ./data/patients.csv ``` ### 支持的模型 - **qwen-vl-max**:最强性能(推荐) - **qwen-vl-plus**:性能均衡 - **qwen-vl-v1**:经济实惠 ## 📝 API 接口 ### 1. 识别身份证 ``` POST /api/patient/recognize Content-Type: multipart/form-data 参数: file (图片文件) 响应: { "code": 200, "message": "身份证识别成功", "data": { "isIdCard": true, "idCardNumber": "110101199001011234" } } ``` ### 2. 查询患者信息 ``` GET /api/patient/info?idCardNumber=110101199001011234 响应: { "code": 200, "data": { "idCardNumber": "110101199001011234", "name": "张三", "gender": "男", ... } } ``` ### 3. 保存患者信息 ``` POST /api/patient/save Content-Type: application/json 请求体: { "idCardNumber": "110101199001011234", "name": "张三", "gender": "男", ... } ``` ## 🐛 常见问题 ### Q1: 启动时提示端口被占用? **A:** 修改 `application.yml` 中的 `server.port` 为其他端口 ### Q2: 摄像头无法访问? **A:** - 确保浏览器允许摄像头权限 - 使用 Chrome 或 Edge 浏览器 - 检查是否使用 HTTPS 或 localhost ### Q3: 身份证识别失败? **A:** - 检查 API Key 是否配置正确 - 确保图片清晰、光线充足 - 使用手动输入功能作为备选方案 ### Q4: 数据存储在哪里? **A:** 项目根目录的 `./data/patients.csv` 文件 ### Q5: 如何查看详细日志? **A:** 控制台会输出所有 DEBUG 级别日志,包括: - API 调用参数 - 百炼平台响应 - 解析过程和结果 ## 📚 相关文档 - **README.md** - 完整的使用文档 - **QUICK_START.md** - 4 步快速启动指南 - **TECHNICAL_NOTES.md** - 百炼 SDK 技术实现详解 - **CHANGELOG.md** - 版本更新记录 ## 🎓 学习资源 - [阿里云百炼平台](https://bailian.console.aliyun.com/) - [百炼 Java SDK](https://github.com/aliyun/dashscope-sdk-java) - [qwen-vl 模型文档](https://help.aliyun.com/zh/model-studio/models/qwen-vl) ## 🎉 项目特点总结 1. **开箱即用**:配置 API Key 后即可启动 2. **前端无依赖**:Vue.js CDN 方式,无需 npm/webpack 3. **数据持久化**:CSV 文件存储,可用 Excel 查看 4. **容错完善**:AI 识别 + 手动输入双重保障 5. **代码精简**:使用官方 SDK,代码更简洁 6. **文档齐全**:4 份文档覆盖所有使用场景 7. **跨平台**:Windows/Mac/Linux 都有启动脚本 ## 🚀 下一步 你可以: 1. **测试系统**:启动项目并完成建档流程 2. **自定义配置**:修改医院名称、模型选择等 3. **扩展功能**:添加身份证反面识别、OCR 填充等 4. **部署上线**:打包成 jar 部署到服务器 --- **祝使用愉快!如有问题,请查看相关文档或提 Issue。** 🏥✨