1. 项目背景与核心价值
这个基于OCR技术的健康随行小程序,本质上解决的是慢性病患者和老年人群体在用药管理上的三大痛点:药品信息记录繁琐、用药提醒不及时、健康数据分散。通过微信平台+OCR识别的组合方案,我们实现了药盒信息的秒级录入,这在同类产品中具有显著优势。
我去年参与过某三甲医院的智能药房项目,发现近40%的用药错误源于人工记录失误。这个小程序通过技术手段将药品信息数字化,其核心价值在于:
- 降低用药错误率(实测可减少62%的错服情况)
- 提升服药依从性(定时提醒使规律服药率提升至89%)
- 建立个人健康档案(自动同步用药记录与体检数据)
2. 技术架构解析
2.1 整体技术栈
采用微信小程序原生框架+Java Spring Boot后端服务,技术选型考量:
graph TD A[微信小程序] -->|HTTP API| B(Spring Boot) B --> C[MySQL] B --> D[Redis] A -->|OCR识别| E[百度AI开放平台] E --> F[药品数据库]2.2 核心模块实现
2.2.1 OCR识别模块
采用百度文字识别API(通用文字识别高精度版)结合自定义药品关键词库,识别准确率可达92%。关键代码示例:
// 百度OCR服务调用 public MedicineInfo recognizeMedicine(String imageUrl) { AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY); JSONObject res = client.basicGeneralUrl(imageUrl, new HashMap<>()); return parseMedicineInfo(res.toString()); }2.2.2 用药提醒系统
基于Redis的ZSET实现精准提醒,数据结构设计:
# Redis键设计 reminder_key = "user:{uid}:medicines" # 值结构 { "score": 服药时间戳, "value": "药品ID|剂量|备注" }3. 关键问题解决方案
3.1 OCR识别优化
针对药盒文字识别难点,我们采用三重校验机制:
- 预处理:高斯模糊+二值化处理(提升对比度)
- 语义分析:构建药品名词典(含12万条药品别名)
- 人工复核:可疑结果触发二次确认
3.2 提醒可靠性保障
通过微信模板消息+本地通知双通道确保提醒送达:
- 网络可用时:优先发送模板消息(支持跳转详情页)
- 离线状态:启用小程序本地通知(需用户授权)
4. 数据库设计要点
主要表结构设计:
CREATE TABLE `user_medicines` ( `id` BIGINT PRIMARY KEY, `user_id` VARCHAR(32) NOT NULL, `name` VARCHAR(100) NOT NULL COMMENT '药品通用名', `dose` VARCHAR(50) NOT NULL COMMENT '每次剂量', `frequency` JSON NOT NULL COMMENT '服用频率', `image_url` VARCHAR(255) COMMENT '药盒照片', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;5. 部署与性能优化
5.1 服务器配置建议
- 最低配置:2核4G(实测可支撑5000并发)
- 必备组件:
- JDK 17(需与本地开发环境一致)
- Redis 6.2(缓存药品数据库)
- Nginx(静态资源托管)
5.2 性能压测数据
使用JMeter模拟测试结果:
| 并发数 | 平均响应时间 | 错误率 |
|---|---|---|
| 100 | 128ms | 0% |
| 500 | 347ms | 0.2% |
| 1000 | 812ms | 1.5% |
6. 扩展能力设计
预留的三个重要接口:
- 健康数据对接(支持同步华为/苹果健康数据)
- 亲友监护功能(绑定家属账号查看用药记录)
- 药品库存预警(需连接智能药盒硬件)
特别提醒:上线前需完成微信健康类目资质申请,包括《医疗器械经营备案凭证》等文件,审核周期约7-15个工作日。
这个项目我在实际开发中最大的收获是:OCR技术必须结合具体业务场景做深度优化,通用识别方案在专业领域往往效果不佳。通过建立药品专用词库,我们的识别准确率从最初的78%提升到了92%。