基于深度学习图片与文字本地脱敏工具:在 Agent 工作流里做本地 PII 与截图脱敏

前言

把日志、工单截图或对话上下文交给大模型前,手机号、证件号、银行卡和截图里的文字往往来不及人工打码。把敏感内容上传到第三方脱敏服务,又和合规、内网边界冲突。下面介绍 SkillHub 上的社区 Skill「基于深度学习图片与文字本地脱敏工具」:通过 Python 脚本在本地识别并遮盖敏感信息,并可用标准 Skill 安装方式挂到 Cursor、Codex 等 Agent 的 skills 目录,由 Agent 按 SKILL.md 指引调用。

这是什么

一句话定位:面向 Agent 的本地脱敏能力包,覆盖文本、JSON 与图片(含 OCR 与区域模糊),处理在运行环境内完成,SkillHub 标注 requires_api_key=false。

维护与来源:社区发布者 user_cf24022c,坐标 @user_cf24022c/image-text-desensitization,分类 it-ops-security,当前 SkillHub 版本 1.0.0。包内 skill.json 将能力描述为「智能自动脱敏工具」,主入口为 smart_desensitize_skill.py,并附带标准版与高性能版图像脱敏模块(deep_desensitize_skill.py、fast_deep_desensitize_skill.py)。

核心功能

以下能力均来自已安装的 Skill 包内 SKILL.md、skill.json 与 SOP.md:

  1. 文本脱敏:正则识别手机号、身份证、银行卡、邮箱等;SOP.md 还列出姓名、地址、QQ、微信、车牌号等类型的脱敏示例。
  2. JSON 脱敏:按字段名与内容自动处理;skill.json 中配置了常见敏感字段名(如 password、token、phone、id_card 等)。
  3. 图片脱敏:支持 base64 输入;可启用深度学习模式,包含 OCR 文字检测模糊与人脸检测模糊(skill.json 的 image_desensitize.features)。
  4. 性能策略:图像侧提供 standard(DeepLearningDesensitizer)与 fast(FastDeepLearningDesensitizer)两种模式;SmartDesensitizer 可通过 use_deep_learning、high_performance 参数切换。
  5. Agent 侧集成:首次导入可自动创建 ./基础设定/DESENSITIZE_RULES.md,并更新 ./MEMORY.md 中的脱敏规则;用户明确要求「不要脱敏」时可跳过(见 SKILL.md、SOP.md)。

安装与启用

通过 SkillHub CLI(推荐)

先确认本机已安装 skillhub(安装方式见 SkillHub 安装说明)。安装 Skill 时必须用 --dir 指向当前 Agent 的 skills 目录,否则默认装到 ./skills/ 可能不会被识别。

skillhub install image-text-desensitization --namespace user_cf24022c --dir <你的 Agent skills 目录>

常用目录(摘自 SkillHub 安装文档):

  • Cursor:~/.cursor/skills/
  • Codex:~/.codex/skills/ 或项目下的 .agents/skills/
  • Claude Code:~/.claude/skills/

也可将下面提示词发给 Agent,让其按官方安装文档拉取同一坐标:

请根据 https://skillhub.cn/install/skillhub.md,安装 `@user_cf24022c/image-text-desensitization`。

Python 依赖

SKILL.md 写明文本与 JSON 脱敏主要依赖 Python 3.6+ 标准库;图片 OCR 建议安装 easyocr,人脸相关能力可选 opencv-python-headless。skill.json 将 opencv-python、Pillow、numpy 列为图像相关必需依赖,OCR 可选 easyocr 或 paddleocr,OCR 语言包含 ch_sim、en。按你是否启用图像深度学习模式安装对应包即可。

典型用法

安装后,在 Skill 目录或已将路径加入 PYTHONPATH 的环境中调用主类(示例来自 SKILL.md 与 skill.json)。

文本:

from smart_desensitize_skill import SmartDesensitizer

desensitizer = SmartDesensitizer()
result = desensitizer.desensitize_text("手机号:13812345678")
# 示例输出: 手机号:138****5678

JSON:

data = {"name": "张三", "phone": "13812345678"}
result = desensitizer.desensitize_json(data)

图片(base64):

result = desensitizer.desensitize_image_base64(image_base64)

启用图像深度学习 / 高性能模式(skill.json):

desensitizer = SmartDesensitizer(use_deep_learning=True)
# 或
desensitizer = SmartDesensitizer(use_deep_learning=True, high_performance=True)

SOP.md 中的集成流程为:用户内容进入 Agent → 判断是否需要脱敏 → 执行脱敏 → 对图片可删除原图仅保留脱敏结果 → 再继续后续任务。

适用场景与注意

适合谁

  • 需要在把文本、结构化字段或截图交给模型前,在本地做一轮 PII 处理的开发者或运维。
  • 使用 OpenClaw 系或带 MEMORY.md、工具目录约定的 Agent 环境,希望脱敏规则可继承、可自检初始化。

限制与注意

  1. 包内 INSTALL.md 提到可用 python test_full.py 验证,但当前 Skill 包文件列表中未包含该脚本;以你环境中的 import 与单测为准。
  2. SKILL.md 与 SOP.md 均说明:图片脱敏完成后可能自动删除原图,归档需求请在流程里单独保留副本。
  3. OCR 与 OpenCV 依赖体积与算力不低,大图为宜使用 high_performance 模式(见 skill.json 的 fast 配置)。
  4. SkillHub 页面简介较短,具体行为以包内 SKILL.md、SOP.md、skill.json 为准;包内 SKILL.md 头部版本号为 3.0.0,与 SkillHub 展示的 1.0.0 不一致时,以商店坐标版本为准。

结尾

「基于深度学习图片与文字本地脱敏工具」把文本、JSON 与图像脱敏脚本和 Agent 集成说明打成可安装的 Skill,适合在不上传敏感数据的前提下,给对话与自动化任务加一层本地遮盖。官方页面与安装坐标:

  • SkillHub:https://www.skillhub.cn/skills/user_cf24022c/image-text-desensitization
  • API 条目:https://api.skillhub.cn/user_cf24022c/image-text-desensitization
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜