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

十一、后续计划

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

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

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

相关推荐
QQ2422199791 天前
基于python+微信小程序的家教管理系统_mh3j9
开发语言·python·微信小程序
RSTJ_16251 天前
PYTHON+AI LLM DAY THREETY-SEVEN
开发语言·人工智能·python
郝学胜-神的一滴1 天前
深度学习优化核心:梯度下降与网络训练全解析
数据结构·人工智能·python·深度学习·算法·机器学习
Aision_1 天前
Agent 为什么需要 Checkpoint?
人工智能·python·gpt·langchain·prompt·aigc·agi
清水白石0081 天前
《Python性能深潜:从对象分配开销到“小对象风暴”的破解之道(含实战与最佳实践)》
开发语言·python
Land03291 天前
RPA工具选型技术指南:架构差异与实测数据
python·自动化·rpa
kafei_*1 天前
VScode 添加 UV虚拟环境方法
vscode·python·uv
洛_尘1 天前
Python 5:使用库
java·前端·python
m0_596749091 天前
如何防止SQL拼接漏洞_使用PDO对象实现安全的SQL交互
jvm·数据库·python
AIFQuant2 天前
2026 全球股票/外汇/贵金属行情 API 深度对比:延迟、覆盖、价格与稳定性
python·websocket·ai·金融·mcp