ESC
开源 3 分钟阅读

watermarks-remover:去除多供应商AI溯源标记——Unicode文本清理、统计重写钩子及PNG/JPEG/SVG/PDF/DOCX/HTML/MD中的C2PA/元数据

watermarks-remover 是一个开源工具集,提供 Agent 技能和 Python 脚本,用于去除文本和文件中的多供应商 AI 溯源标记(如 Claude、Gemini/SynthID、OpenAI 等),涵盖不可见 Unicode 字符、统计水印及 C2PA/EXIF 等元数据。支持多种文件格式,强调隐私保护和内容清洗,并明确区分可验证清除与尽力而为的改写操作。

来源:GitHub

_ _ _ ____ ___ ____ ____ _  _ ____ ____ _  _ ____    ____ ____ _  _ ____ _  _ ____ ____
| | | |__|  |  |___ |__/ |\/| |__| |__/ |_/  [__  __ |__/ |___ |\/| |  | |  | |___ |__/
|_|_| |  |  |  |___ |  \ |  | |  | |  \ | \_ ___]    |  \ |___ |  | |__|  \/  |___ |  \

watermarks-remover

CI Release

Agent 技能 + 仅用标准库的 Python 脚本,用于去除文本和文件中的多供应商 AI 溯源标记——适用于你拥有内容的隐私和卫生。

层目标方式
A不可见 Unicode、特殊空格、双向文本、标签字符确定性 Python 脚本
B统计(token 采样)文本水印Agent 重写 + 可选 rewrite_text.py 钩子
文件C2PA / EXIF / XMP / 文档属性PNG、JPEG、SVG、PDF、DOCX、ODT、HTML、Markdown

厂商/生态系统(类级):Claude、Gemini / SynthID-Text、OpenAI 溯源表面、open-LLM Kirchenbauer 风格标记。

最新版本: v0.1.0

技能路径:skills/remove-ai-marks/ (迁移:原为 remove-claude-marks;斜杠别名 /remove-claude-marks 仍被记录)

安装(Agent 技能)

# Grok Build / 项目本地
mkdir -p .grok/skills
ln -sfn "$(pwd)/skills/remove-ai-marks" .grok/skills/remove-ai-marks

# 用户全局 Grok
mkdir -p ~/.grok/skills
ln -sfn "$(pwd)/skills/remove-ai-marks" ~/.grok/skills/remove-ai-marks

通过 /remove-ai-marks 调用,或要求“去除 AI 水印 / C2PA / Claude 标记 / SynthID 类文本”。

可选系统工具(存在时自动使用):

工具作用
c2patool检查 C2PA 清单
exiftool残留元数据去除(尤其是 PDF)

核心脚本仅需 Python 3.10+ 标准库。B 层的模型调用是可选的。

快速使用(脚本)

SCRIPTS=skills/remove-ai-marks/scripts

# 统一检查 / 清理
python3 "$SCRIPTS/inspect_file.py" draft.md
python3 "$SCRIPTS/clean_file.py" draft.md -o draft.cleaned.md
python3 "$SCRIPTS/clean_file.py" photo.png -o photo.cleaned.png
python3 "$SCRIPTS/clean_file.py" notes.docx -o notes.cleaned.docx

# 文本 A 层
python3 "$SCRIPTS/inspect_text.py" draft.md
python3 "$SCRIPTS/clean_text.py" draft.md -o draft.cleaned.md --stats

# B 层重写钩子(默认:仅打印提示——无需模型)
python3 "$SCRIPTS/rewrite_text.py" draft.md --backend print-prompt --strength paraphrase
# 可选的本地 Ollama:
# WATERMARKS_REWRITE_BACKEND=ollama WATERMARKS_REWRITE_MODEL=llama3.2 \
#   python3 "$SCRIPTS/rewrite_text.py" draft.md -o draft.rewritten.md

# 图片
python3 "$SCRIPTS/inspect_image.py" shot.png
python3 "$SCRIPTS/clean_image.py" shot.png -o shot.cleaned.png

覆盖矩阵

渠道ClaudeGemini/SynthIDOpenAIOpen-LLM
Unicode / 基于编辑的文本A 层A 层A 层A 层
统计采样文本B 层尽力而为B 层尽力而为B 层(若存在)B 层尽力而为
C2PA / 文件元数据是(列出的格式)存在时是存在时是存在时是
像素图像标记超出范围超出范围超出范围超出范围
训练后门超出范围超出范围超出范围超出范围

详情:skills/remove-ai-marks/references/vendor-notes.md、mark-classes.md。


文本标记的工作原理(简述)

现代 LLM 水印通常将信号隐藏在选择了哪些 token(生成/采样偏差)中,而不仅仅在不可见字符中。基于编辑的方案会注入 Unicode 或同义词规则。文件方案会附加 C2PA 或生成器元数据。

  • A 层 移除基于编辑的 Unicode 载体(可测试)。
  • B 层 通过大量重写攻击采样水印(尽力而为;文献标准攻击如释义/回译)。
  • 文件清理器 从支持的容器中剥离 C2PA/XMP/属性。

在厂商发布公共检测器和密钥之前,没有任何工具能诚实保证“这无法通过官方检查”。报告必须区分可验证工作和尽力而为工作。

对于 B 层,最好使用非起源模型(若试图避免重新盖章,不要用 Claude 重写 Claude 文本)。


文件格式

格式检查清理
PNG / JPEGC2PA 块 / APP11、AI XMP 提示删除元数据段
SVG<metadata>、XMP剥离块
PDF字节/XMP + 可选工具exiftool 优先;缺少时降级
DOCXdocProps / customXml擦除属性,删除 customXml
ODTmeta.xml删除生成器 / AI 类元数据
HTMLmeta、JSON-LD、data-ai*剥离标签/属性
MarkdownYAML 前置元数据中的 AI 键删除键 + A 层正文

像素域水印和 C2PA 软绑定(剥离元数据后可重新链接远程 Content Credentials 清单的内容内水印)仍超出范围。剥离硬绑定 C2PA 不会清除这些渠道。

清理后的残留风险

此工具报告可验证的移除(Unicode 计数、元数据操作)和尽力而为的 B 层重写。它不能保证厂商检测器会失败。

要自行检查残留信号(可选、外部):

渠道我们移除的内容可能残留的内容外部检查(示例)
硬绑定 C2PA / EXIF / XMP是软绑定 / 像素标记c2patool、Content Credentials 验证
SynthID 类媒体否像素/音频/视频水印提供商工具(如 Google SynthID / Vertex 检测器,若提供)
统计文本尽力而为重写轻编辑后的强标记无公共通用检测器;厂商工具可用时使用

行业两层背景(C2PA + 不可察觉水印):Institute of AI PM 指南。


移除选项(摘要)

选项移除备注
Unicode 擦除(A 层)ZWSP、双向文本、标签、特殊空格等文本的安全默认
重写(B 层)统计 token 标记(尽力而为)技能始终提供
容器/元数据剥离文件溯源见格式表
开放权重本地模型避免用起源模型重新盖章操作替代方案

矩阵:skills/remove-ai-marks/references/removal-matrix.md。

伦理

参见 skills/remove-ai-marks/references/ethics.md。用于你的内容的隐私和研究——而非学术欺诈或虚假的“人类撰写”声明。

测试

python3 -m venv .venv && .venv/bin/pip install pytest
.venv/bin/python -m pytest          # 或:make test
make smoke                          # 在固定样本上快速 CLI 冒烟测试

更新日志

v0.1.0 — 打包打磨 + 溯源诚实

  • Makefile(test / smoke / install-skill)和 pytest.ini
  • Markdown、HTML、SVG 的固定样本;PDF 降级清理测试
  • 文档:行业两层模型(硬绑定 C2PA 与软绑定 / SynthID 媒体)
  • README 残留风险表 + 外部验证工具链接
  • 参考:Institute of AI PM C2PA/SynthID 指南
  • 软绑定和像素/音频/视频水印明确排除在技能/矩阵/伦理范围之外

v0.0.1 — 初始多供应商版本

  • Agent 技能 remove-ai-marks(替换仅支持 Claude 的 remove-claude-marks)
  • A 层: 不可见 Unicode / 双向文本 / 标签字符 / 空格同形字(inspect_text / clean_text)
  • B 层: 重写指南 + 可选 rewrite_text.py(print-prompt、Ollama、OpenAI 兼容)
  • 文件: PNG、JPEG、SVG、PDF、DOCX、ODT、HTML、Markdown 的 C2PA/AI 元数据剥离
  • 统一 inspect_file.py / clean_file.py
  • 多供应商文档(Claude、Gemini/SynthID 类、OpenAI、open-LLM)
  • 优先标准库脚本;可选 c2patool / exiftool

许可证

MIT — 见 LICENSE。

参考