RedactX·锐消v0.1.10
LOCAL · OFFLINE · OPEN SOURCE

文件脱敏,
只在本机完成。

上传 PDF、图片或 Word 文档,自动识别患者与医护人员姓名、医院名称、证件号、电话、病案号、手写填写区、签名、印章等内容,按指定样式打码,输出栅格化重建的 PDF。

  • 全部在本机处理,不调用任何云端接口
  • 日期一律保留
  • Apache-2.0 开源

在线演示是临时开放的演示环境:需要向项目负责人索取 API Key(打开后点右上角“API Key”填入);请只上传合成或测试文件,不要上传真实病案。

锐消 Web 页:脱敏后的病案首页,姓名、证件号、电话等处换成了浅色标签,右侧为遮盖统计 锐消 Web 页的深色主题
截图中的病案为合成数据,姓名、机构、号码均为虚构。
WHAT IT REDACTS

能遮什么

勾选要遮盖的类型、为每类单独选样式;场景预设一键切换。

人员

患者与联系人姓名(含少数民族、英文姓名)、医护人员姓名、正文叙述里的人名

机构与地址

医院及机构名称、单位名称、地址

证件与号码

身份证、护照、港澳台通行证、军官证、手机与座机、银行卡、统一社会信用代码、邮箱、车牌、微信号

医疗标识

病案号、住院号、门诊号、医保卡号、床号、检验与影像编号

手写与印章

手写填写区、手写与电子签名、红章与淡色章

图片与水印

医院 Logo、二维码与条码;院名水印在识别前整页去除

七种打码样式

浅色标签、背景色擦除、代号替换、安全马赛克、斜线花纹、图像修复、黑色块。所有样式都先擦除原像素,再绘制外观,输出栅格化重建,文字层与元数据一并清除。

复核台

在页面上拖出新框补遮;保留原件的任务还能删框、改框、改类型,保存后只重新打码改动的页。快捷键与修改标记便于大批量标注。

出厂自检

扫描页打码后再识别一遍,补打遗漏的号码与姓名;文字层页默认不做,省下数倍时间。

表单模板

污渍、印章压住字段名时,按本单位表单的模板推算字段位置,照常遮盖内容。模板用空白表单一条命令生成。

隐私设计

上传的原文件处理完立即删除,服务端不保存原文件名;结果按保留时长自动清除,也可随时删除。标注导出默认关闭,开启须设置 API Key 并记审计日志。

接口与批量

异步任务、同步小文件、打码报告(每处遮盖的类型、来源与坐标,不含原文)与预览图接口,便于接入病案系统批量处理。

HOW IT WORKS

工作原理

两遍处理:第一遍逐页识别并收集可靠的姓名、号码,第二遍在全文追踪它们、打码并自检。

  1. 渲染与去水印PDF 结构里的水印对象直接删除;页面上的院名水印按颜色与角度整页擦除,只擦水印像素。
  2. 文字识别文字层直接读取;扫描件用本地 OCR(RapidOCR,PP-OCR 模型),横放页自动转正。
  3. 多路识别号码规则与校验位;字段锚定(“姓名:”后的内容、表格里的签名列);正文人名识别(本地 NER 模型);表单模板兜底。
  4. 全文追踪在字段里认出的姓名、号码作为种子,在全文其他位置一并遮盖,允许一个错字。
  5. 打码与自检手写签名沿笔画整体纳入;按样式擦除重绘;扫描页再识别一遍补打遗漏。
  6. 重建输出每页栅格化后重建 PDF,不留文字层与元数据;报告只记类型与坐标,不含原文。
EVALUATION

评估

合成评估集:虚构病案按 13 种形态生成,覆盖系统导出、白纸与牛皮纸扫描、横放、复印机分层压缩、低质量扫描、手机拍照与各类证件号写法。

98.6–100%各形态遮全率
0误遮(应保留的日期、诊断、检验结果等)
0多遮(与任何应遮项都不重叠的遮盖)
39 份 · 192 页评估文档

剩余漏遮主要是压在临床照片上的院名水印(照片须保留,暂不处理)。合成数据与真实病案有差距,真实文档上的表现以本单位抽检为准;复核台可在交付前人工补遮。

约 0.2 秒/页系统导出(文字层)
约 2–3 秒/页200 DPI 扫描件(含扫描页自检)
约 2 GB内存峰值

Apple M4、16 GB,纯 CPU。

DEPLOY

部署到本机

服务只绑定 127.0.0.1;处理过程不联网。模型文件在准备阶段下载一次。

1取得代码并导出正文人名模型

git clone https://github.com/haydncho/RedactX-OSS.git
cd RedactX-OSS
uv venv .venv --python 3.12
uv pip install --python .venv/bin/python -e ".[dev,ner-export]"
.venv/bin/python deploy/ner_export.py   # 约 100 MB,写入 models/ner/

2用容器运行(macOS Apple container)

deploy/container/run.sh     # 首次运行构建镜像,端口 8090

也可以直接本机运行:.venv/bin/uvicorn service.app:app --host 127.0.0.1 --port 8000。镜像为标准 OCI 格式,也可用 Docker 构建(deploy/container/Containerfile)。

3打开浏览器

访问 http://127.0.0.1:8090 上传文件;接口文档在 /docs。建议 16 GB 内存(容器限制 6 GB、6 核)。

接口示例

curl -F file=@病案.pdf -F 'options={"verify":"auto"}' http://127.0.0.1:8090/v1/jobs
# → {"job_id": "job_…", "status": "queued"}
curl http://127.0.0.1:8090/v1/jobs/job_…            # 轮询状态
curl -o 脱敏.pdf http://127.0.0.1:8090/v1/jobs/job_…/result
上传页:左侧选择场景预设与脱敏字段,右侧拖入文档
上传页:左侧选择场景预设、要遮盖的字段与样式,右侧拖入文档。