医疗单据隐私脱敏开源项目:OCR + Vision LLM + 四点定位打码,适配弯曲、旋转、复杂拍摄场景
最近把自己做的一个医疗单据隐私脱敏项目整理并开源了,想分享出来,给有类似需求的同学一个可直接落地的方案。
这个项目主要解决的是:
- 医疗票据、检查单、报告单、病历图片中的敏感信息自动识别
- 自动打码,输出脱敏后的图片
- 保留原始业务链路,适合接入已有 COS/对象存储流程
- 支持"只检测不打码"和"检测+打码"两种模式
项目地址:
https://github.com/CodeChatter/midecal_tool
一、为什么要做这个项目
很多业务里都会碰到医疗单据图片处理的问题,比如:
- 病历资料归档
- 医疗单据审核
- 客服/运营后台查看用户上传材料
- 质检、标注、训练前的数据预处理
- 第三方协作场景下的图片脱敏
这些图片里通常会包含大量敏感字段,比如:
- 姓名
- 身份证号
- 手机号
- 地址
- 病历号 / 就诊号 / 检查号
- 医院名称
- 医生姓名
- 出生日期、年龄等
如果完全靠人工脱敏,效率低、成本高,而且很容易漏掉。
二、这个项目的核心思路
这个项目不是单纯 OCR,也不是单纯大模型,而是把两者结合起来:
- 先用 OCR 提取文本行和位置信息
- 再结合 Vision LLM 做敏感信息判别
- 最后基于文本行四点框做精准打码
整体链路可以概括为:
OCR 提取文本 -> 敏感信息识别 -> 四点定位遮罩 -> 输出脱敏图片
三、这个项目的几个优势
1. 四点定位打码,不是粗暴盖矩形
很多脱敏方案做法比较简单,直接框一个矩形盖住整块区域。
这个项目基于 OCR 文本行四点框做遮罩,能更贴合文字实际形状。
面对倾斜文本、轻度畸变文本时,遮罩效果会更自然,也更精确。
2. 自动方向纠正,适合真实拍照场景
真实场景里,图片并不总是"正正好好"的扫描件,经常会有:
- 手机拍照方向不对
- 图片倒置
- 页面倾斜
- OCR 首次识别效果差
项目里做了多层处理:
- EXIF 方向识别
- 投影分析方向纠正
- OCR 结果异常时旋转重试
所以对扫描件、手机拍照件、方向不标准的图片会更友好。
3. 对复杂拍摄场景更稳
医疗单据并不总是高质量扫描图,实际业务里经常会遇到:
- 页面轻微弯曲
- 拍照透视不完全规整
- 压缩噪声
- 反光
- 摩尔纹
- 模糊、倾斜
这个项目采用 OCR + Vision LLM 的组合方式,不只依赖规则,也不只依赖 OCR 文本本身,在复杂场景下鲁棒性会更强一些。
4. 更适合接业务链路
这个项目不是一个"demo 脚本",而是按服务化方式整理的,适合直接接入业务流程:
- 支持 FastAPI 接口调用
- 支持腾讯云 COS 链路
- 保留原图 URL,不覆盖原始文件
- 输出新的
masked_url - 支持 Docker / 裸机部署
- 支持只检测、不打码
四、适合哪些场景
我觉得这类项目比较适合下面这些场景:
- 医疗 SaaS 系统
- 互联网问诊/随访平台
- 医疗资料采集平台
- OCR 数据清洗前处理
- 数据脱敏导出
- 医疗影像/单据审核后台
- 需要对用户上传病历图片做隐私保护的系统
五、目前支持的能力
目前项目支持:
1. 敏感信息检测
可识别常见敏感类别,例如:
- 患者姓名
- 身份证号
- 手机号码
- 病历号 / 就诊号 / 检查号
- 医生姓名
- 医院名称
- 地址
- 邮箱
- 出生日期
- 年龄
2. 多种打码方式
支持多种遮罩模式:
- 白色覆盖
- 黑色覆盖
- 灰色覆盖
- 高斯模糊
- 马赛克
3. 多模型提供商接入
目前支持:
- OpenAI 兼容接口
- Claude
- 智谱 GLM
- 阿里云百炼
- 火山引擎豆包
如果只是想先把整条链路跑通,项目里也支持使用 GLM-4.6V-Flash 做初步联调测试。
六、项目技术栈
项目主要基于下面这些技术:
- Python
- FastAPI
- PaddleOCR
- OpenCV
- Vision LLM
- 腾讯云 COS
整体结构比较清晰,服务化改造也比较方便。
七、为什么没有展示真实图片效果
这里也提前说明一下:
因为项目涉及医疗隐私场景,所以仓库里不会放真实病历、检查单、报告单图片。
这也是我在开源前专门处理的一部分内容:
- 清理敏感配置
- 移除历史里的隐私信息
- 示例配置全部替换为占位值
- 文档里不展示真实患者数据
所以仓库里主要保留的是:
- 接口文档
- 配置模板
- 项目结构
- 部署方式
- 代码实现
如果你本身有类似业务场景,拿自己的测试图片跑一下会更有感知。
八、如何快速跑起来
项目支持两种方式:
1. 本地直接启动
pip install -r requirements.txt
cp .env.example .env
python run.py
2. Docker 部署
bash deploy.sh
如果只是想快速联调接口,推荐先把服务起起来,再调这几个接口:
- /health
- /api/ocr
- /api/detect
- /api/mask
九、我觉得这个项目适合哪些人参考
如果你是下面几类开发者,我觉得这个仓库应该会有一些参考价值:
- 想做 OCR + 大模型落地的人
- 想做图片脱敏 / 文档脱敏服务的人
- 想做医疗场景数据处理的人
- 想看 FastAPI 服务化封装的人
- 想接 COS / 对象存储文件处理链路的人
十、开源地址
GitHub:
https://github.com/CodeChatter/midecal_tool
如果这个项目对你有帮助,欢迎:
- Star
- 提 Issue
- 提 PR
- 交流实际场景里的改进建议
十一、后续计划
后面准备继续补这些方向:
- 更多复杂版式适配
- 更细粒度的敏感字段识别
- 更多对象存储支持
- 更完善的测试样例
- 更完整的开源文档和最佳实践
如果你刚好也在做类似方向,欢迎交流。