随着 AI 生成内容的爆发式增长,各大模型厂商(Claude、Gemini SynthID、OpenAI、各类开源大模型)都在给生成物打上「隐形水印」——有的是不可见的 Unicode 字符,有的是概率采样层面的统计指纹,还有的是嵌入到图片/PDF 元数据里的 C2PA 溯源标记。这些标记对平台方很有价值,但对普通用户来说,也可能带来隐私泄露与内容「卫生」问题。
今天要介绍的 watermarks-remover(GitHub 8.3k+ stars)是一个主打「多厂商 AI 溯源标记清除」的开源工具,专为你自己拥有或有权处理的内容服务。它把复杂的去水印流程拆成了清晰的分层架构,既能当 CLI 脚本用,也能作为本地 HTTP 服务被任何 web 应用或 AI Agent 调用。
它到底能去掉什么?
watermarks-remover 把「AI 标记」分成三层来处理,每一层的原理和手段都不同:
Layer A:隐形 Unicode / 编辑型文本水印
很多模型会在文本里注入零宽空格(ZWSP)、双向控制字符(bidi)、异体空格、标签字符等「肉眼不可见但可被程序读取」的载体。Layer A 用确定性的 Python 脚本精确剥离这些字符——这是可验证、可测试的干净手段,也是文本处理的默认安全选项。
Layer B:统计采样型文本水印(尽力而为)
现代 LLM 水印往往藏在「哪些 token 被选中」的概率偏差里,而不是某个具体字符。针对这类,工具提供重写钩子(paraphrase / 词选择 + 句法攻击),可对接本地 Ollama 或 OpenAI 兼容后端,用非原厂模型对文本做大幅重写,从而打散统计指纹。官方也诚实标注:这是「尽力而为」,无法保证厂方检测器一定失效。
文件元数据 / C2PA 溯源清除
针对 PNG / JPEG / WebP / SVG / PDF / DOCX / ODT / HTML / Markdown 等格式,直接剥离 C2PA、XMP、EXIF、docProps 等溯源元数据段。特别值得一提的是 PDF:工具会用 exiftool 做增量清理后再用 qpdf 做结构化重建,避免「元数据字节仍可被恢复」的隐性泄露。
核心特色
- 多厂商覆盖:Claude、Gemini/SynthID-Text、OpenAI provenance、开源 KGW(Kirchenbauer)类标记,一张矩阵表讲清楚覆盖范围。
- 纯 stdlib,零依赖:核心脚本只需 Python 3.10+ 标准库,无 Docker 也能跑。
- HTTP 服务 + OpenAPI:内置 stdlib HTTP server(/health、/inspect、/clean、/capabilities),甚至动态生成 OpenAPI 3.0.3 规范,任何 web 应用都能轻松集成。
- AI Agent 技能形态:作为 Grok / Claude 等 Agent 的 skill 使用,技能本体是「纯 markdown 客户端」,通过 HTTP 驱动服务,Agent 宿主无需装 Python。
- 安全加固:原子写入、默认 loopback 绑定、可选 Bearer 鉴权、输入大小/地址空间上限、拒绝二进制误判。
- 可选的像素级水印移除:通过外部后端(CtrlRegen、MarkDiffusion、reverse-SynthID)对图片像素域水印做再生成式移除,强度可调且默认保守。
上手步骤
1. 克隆仓库并启动 HTTP 服务(最快路径)
git clone https://github.com/guillaumemeyer/watermarks-remover.git
cd watermarks-remover
make serve # 启动于 http://127.0.0.1:8765
# 或直接:
python3 service/scripts/server.py --host 127.0.0.1 --port 8765
2. 命令行脚本方式(不启动服务)
SCRIPTS=service/scripts
# 统一检查 / 清理文件(用 --out 指定输出)
python3 "$SCRIPTS/inspect_file.py" draft.md
python3 "$SCRIPTS/clean_file.py" draft.md --out draft.cleaned.md
python3 "$SCRIPTS/clean_file.py" photo.png --out photo.cleaned.png
# 文本 Layer A(去掉隐形 Unicode)
python3 "$SCRIPTS/inspect_text.py" draft.md
python3 "$SCRIPTS/clean_text.py" draft.md --out draft.cleaned.md --stats
3. Layer B 重写(默认仅打印提示,不调用模型)
python3 "$SCRIPTS/rewrite_text.py" draft.md --backend print-prompt --strength paraphrase
# 可选:使用本地 Ollama 重写
export WATERMARKS_REWRITE_BACKEND=ollama
export WATERMARKS_REWRITE_MODEL=llama3.2
python3 "$SCRIPTS/rewrite_text.py" draft.md --out draft.rewritten.md
4. 通过 HTTP 调用(供其他应用集成)
服务启动后暴露 /health、/inspect、/clean、/capabilities 等端点。任何能发 HTTP 请求的客户端(requests、urllib、fetch、axios 等)都能调用,例如:
import urllib.request, json, base64
# 健康检查
print(urllib.request.urlopen("http://127.0.0.1:8765/health").read().decode())
# 清理文件(POST /clean,JSON 负载)
payload = json.dumps({
"file": base64.b64encode(open("notes.md", "rb").read()).decode(),
"name": "notes.md",
}).encode()
req = urllib.request.Request(
"http://127.0.0.1:8765/clean",
data=payload,
headers={"Content-Type": "application/json"},
)
print(urllib.request.urlopen(req).read().decode())
5. Docker 部署(含 exiftool / qpdf / c2patool)
make docker-core-build
docker run --rm -p 127.0.0.1:8765:8765 --read-only --tmpfs /tmp watermarks-remover
适用场景
- 内容隐私与卫生:发布前清理自己内容里无意携带的溯源元数据与隐形字符。
- AI Agent 工作流:作为 skill 集成进 Grok / Claude 等,自动对产出做「去水印」后处理。
- 研究 / 逆向实验:配合 MarkLLM / MarkDiffusion 等验证 harness,研究不同水印方案在重写下的存续性。
- 文档合规处理:批量剥离 PDF / DOCX 里的生成器元数据,避免敏感信息泄露。
重要的诚实提醒
这个项目在 README 里写得很坦诚:「去掉文本统计水印等同于重写」,重写会损失原文的语气、风格与精确度,且任何工具都无法 100% 保证厂方检测器失效。Layer A + 文件元数据清理是「可验证」的干净;Layer B 是「尽力而为」。请仅在你自己拥有或已获授权的内容上使用,并遵守当地法规。
项目地址:https://github.com/guillaumemeyer/watermarks-remover,采用 MIT 协议。
















cqlbgzs@163.com 1年前0
d好879445037@qq.com 2年前0
购买了 无法下载Alexcc 3年前0
强大Alexcc 3年前0
看不了教程Alexcc 3年前0
雷刺下载Alexcc 3年前0
下载Alexcc 3年前0
下载dsa456159 3年前0
下载