README_SUMMARY.md 7.4 KB

项目已完成!🎉

✅ 已完成的工作

1. 核心功能实现

  • SpringBoot 后端框架搭建
  • Vue.js 3 前端界面(CDN 方式,无需构建)
  • 摄像头拍照功能(H5 调用浏览器摄像头)
  • 百炼平台 qwen-vl 模型身份证识别
  • CSV 文件本地数据存储
  • 完整的患者建档流程
  • 手动输入身份证号的容错方案

2. 技术实现

  • 使用阿里云百炼官方 SDK(而非 LangChain4J)
  • 临时文件自动清理机制
  • 多层响应解析策略
  • 完善的异常处理
  • 详细的日志记录

3. 文档和脚本

  • README.md - 完整使用文档
  • QUICK_START.md - 快速启动指南
  • TECHNICAL_NOTES.md - 技术实现说明
  • CHANGELOG.md - 更新日志
  • start.sh - Mac/Linux 启动脚本
  • start.bat - Windows 启动脚本
  • .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

bailian:
  api-key: sk-xxxxxxxxxxxxx  # 替换为你的百炼平台 API Key

2. 启动项目

# Windows
start.bat

# Mac/Linux
./start.sh

3. 访问系统

打开浏览器访问:http://localhost:8080

🎯 核心特性

1. 百炼平台集成(官方 SDK)

使用 MultiModalConversation 类直接调用:

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. 临时文件管理

// 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

# 服务器配置
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 - 版本更新记录

🎓 学习资源

🎉 项目特点总结

  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。 🏥✨