医疗单据隐私脱敏开源项目:OCR + Vision LLM + 四点定位打码,适配弯曲、旋转、复杂拍摄场景

医疗单据隐私脱敏开源项目: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
  • 交流实际场景里的改进建议

十一、后续计划

后面准备继续补这些方向:

  • 更多复杂版式适配
  • 更细粒度的敏感字段识别
  • 更多对象存储支持
  • 更完善的测试样例
  • 更完整的开源文档和最佳实践

如果你刚好也在做类似方向,欢迎交流。

相关推荐
qq_206901392 分钟前
为什么宝塔面板网站无法正常连接外部远程数据库_检查服务器安全组放行端口并开启IP授权
jvm·数据库·python
空空潍19 分钟前
Miniconda完整安装教程(win版)
python·miniconda
深兰科技33 分钟前
深兰科技与淡水河谷合作推进:矿区示范加速落地
java·人工智能·python·c#·scala·symfony·深兰科技
weixin_5860614640 分钟前
JavaScript中Redux-Thunk处理异步Action的任务流
jvm·数据库·python
2401_897190551 小时前
Golang怎么写TODO待办应用_Golang TODO应用教程【深入】
jvm·数据库·python
m0_678485451 小时前
CSS实现浮动图标与文本居中对齐_配合浮动与flex
jvm·数据库·python
YuanDaima20481 小时前
二分查找基础原理与题目说明
开发语言·数据结构·人工智能·笔记·python·算法
2401_887724501 小时前
uni-app动画效果实现 uni-app如何使用animation API
jvm·数据库·python
Luca_kill1 小时前
实战指南:用 Python + NLP 搭建一套轻量级 AI 舆情监控系统
人工智能·python·机器学习·nlp·舆情监控
七颗糖很甜1 小时前
python实现全国雷达拼图数据的SCIT风暴识别
python·算法·scipy