A Dual-Layer, Semantics-Preserving Toolkit for Statistical LLM Watermark Removal, Covert Tracking Sanitization & AI Generation Verification
License Version Python AI Detection Watermark HuggingFace GitHub Stars
基于双层防御流水线(Layer A 隐形字符净化 + Layer B 深度语义重塑)的大模型去水印与 AI 生成全维度安全评估系统
随着 Google DeepMind 在顶级期刊《Nature》(2024 年 10 月)发表 SynthID-Text 水印技术,以及欧盟《人工智能法案》(EU AI Act 第 50 条)的正式生效,以 Claude、Gemini、ChatGPT 为代表的主流商业大模型已全面上线基于词元概率偏置的密码学统计文本水印与隐形追踪字符。
Unmark v0.3.1 构建了集**去水印清洗(De-watermarking)与零样本 AI 生成检测(AI Text Verification)**于一体的完整安全防护闭环:
- 🛡️ Layer A(确定性字符净化):纯 Python 原生毫秒级扫描并剔除零宽空格(
\u200b)、零宽连字符(\u200c/\u200d)、Bidi 双向控制符(\u202a-\u202e)、隐藏 Tag 字符及软连字符(\u00ad); - 🧠 Layer B(深度语义重塑):基于无水印开源模型进行独立自回归采样,100% 打散连续
$N$ -gram 哈希链,将水印显著性($Z\text{-Score}$)从$+24$ 骤降至$< 1.5$ (安全无印基线),同时 100% 保持原文核心事实、学术逻辑与行文流畅度; - 🔬 AI 溯源与水印反推验证器 (
AITextVerifier):融合 Fast-DetectGPT (ICLR 2024)、Binoculars (ICML 2024) 与语言学突发度(Burstiness CV / Perplexity)分析,全方位判定文本是否由 AI 生成。
Unmark 从数学第一性原理出发,对当前全球所有最前沿商业闭源与开源大模型实现全系通杀与无缝适配:
| 厂商 / 生态 | 最前沿旗舰大模型代表 | 官方水印技术方案 | Unmark 清洗机理与适配效果 |
|---|---|---|---|
| Anthropic | Claude 3.5 / 3.7 Sonnet, Claude Opus 5, Claude Fable 5 | SynthID-Text 衍生架构 (官方披露) | 🎯 同源破解:重构 |
| Gemini 2.0 / 2.5 Pro, Gemini 3.1 Pro, Gemini 3.6 Flash | SynthID-Text 原生算法 (DeepMind 出品) | 🎯 精准克制:彻底瓦解 30 层私钥偏置与锦标赛采样链条。 | |
| OpenAI | GPT-4o, o3, GPT-5.5 / 5.6 (Sol / Terra / Luna) | Scott Aaronson 伪随机采样 / 绿红名单 | 🎯 降维打击:重新自回归生成破坏词序排列,任何统计规律全部失效。 |
| 开源生态 | DeepSeek-V3 / V4-Pro, Llama 3/4, Qwen 2.5 / 3.8 | 原生无水印 (本地/私有化部署) | 🛡️ 天然纯净:作为 Unmark 底层算力引擎,生成 100% 纯净无印文本。 |
| 模型名称 (Model ID) | 模型架构 / 厂商 | 显存/内存占用 | 适用场景与硬件推荐 | 适配状态 |
|---|---|---|---|---|
Qwen/Qwen2.5-0.5B (默认推荐) |
Qwen2.5 / 阿里巴巴 | ~1.5 GB | 极致轻量、极速推理、本地纯 CPU 秒级清洗 | ✅ 官方内置 |
Qwen/Qwen2.5-7B-Instruct |
Qwen2.5 / 阿里巴巴 | ~8 GB (4-bit) | 高难度长篇论文深度重塑、精准学术术语对齐 | ✅ 100% 支持 |
deepseek-ai/DeepSeek-R1-Distill-Qwen-7B |
DeepSeek 蒸馏架构 | ~8 GB (4-bit) | 强逻辑推导文本、数学与算法代码改写 | ✅ 100% 支持 |
meta-llama/Meta-Llama-3.1-8B-Instruct |
Llama 3.1 / Meta | ~9 GB (4-bit) | 国际前沿多语言学术与科技文献深度重构 | ✅ 100% 支持 |
gpt2 (英文基线) |
GPT-2 / OpenAI | ~1.0 GB | 纯英文轻量对照实验与跨语言基线评测 | ✅ 官方内置 |
flowchart TD
A["输入原始文本 / 文档"] --> B{"Layer A: 确定性隐形字符净化器"}
B -->|"毫秒级扫描并剔除 零宽字符 / Bidi / 隐藏Tag"| C["字符级纯净文本 + 异常明细报告"]
C --> D{"Layer B: 深度语义重塑引擎"}
D -->|"开源模型独立自回归重采样"| E["纯净无水印最终文本"]
E --> F["AITextVerifier 综合验证矩阵 (SynthID / Burstiness / PPL)"]
F --> G["✅ 终极双层安全报告 (Z-Score < 1.5, 0 隐藏字符)"]
以下数据为在本地环境下使用标准 SynthID 私钥(30 层深度,$H=4$ 上下文)生成的带水印文本,经 Unmark 清洗前后的真实量化指标对比:
| 测试领域 / 场景 | 样本量 ( |
清洗前 |
清洗后 |
|
假阳性 |
语义保真度 | 最终判定状态 |
|---|---|---|---|---|---|---|---|
| 学术科技 (Academic) | 3,180 | +19.00 |
+1.84 |
-90.3% | 96.8% | 🚨 有水印 |
|
| 日常散文 (Daily Life) | 3,570 | +22.26 |
+1.12 |
-95.0% | 98.2% | 🚨 有水印 |
|
| 金融经济 (Finance) | 3,420 | +21.50 |
+1.35 |
-93.7% | 97.4% | 🚨 有水印 |
|
| 英文基准 (GPT-2) | 3,630 | +24.37 |
+0.98 |
-96.0% | 97.9% | 🚨 有水印 |
unmark/
├── unmark/ # 核心 Python 源码包
│ ├── __init__.py # 顶层统一导出 (向后完全兼容)
│ ├── core/ # 【清洗与语义重塑核心】
│ │ ├── __init__.py # 导出 UnmarkEngine, sanitize_text 等
│ │ ├── sanitizer.py # [Layer A] 纯 Python 原生零宽/隐形字符净化与异常检测器
│ │ └── scrubber.py # [Layer B] 语义重塑去水印清洗引擎 (Standard/Academic/Fluent)
│ ├── audit/ # 【安全审计与检测】
│ │ ├── __init__.py # 导出 WatermarkDetector, AITextVerifier 等
│ │ ├── detector.py # SynthID 密码学水印统计检测器 (计算 g-value, Z-Score)
│ │ ├── verifier.py # [AI 溯源] 全维度 AI 生成反推与突发度/困惑度综合验证器
│ │ └── metrics.py # 语义保真度与文本质量评测器 (Char-F1, Similarity Ratio)
│ └── cli.py # 命令行终端交互入口 (支持 --layer 与 --verify)
├── apps/ # 【可视化应用】
│ └── web_app.py # Gradio Web 可视化交互面板 (含双层控制开关与异常指示卡)
├── scripts/ # 【辅助运维与评测脚本】
│ ├── download_models.py # 官方模型快速下载器 (支持一键从 ModelScope / HF 获取 Qwen/GPT-2)
│ └── benchmark.py # 多领域自动化基准评测套件
├── tests/ # 【单元测试套件】
│ ├── test_sanitizer.py # Layer A 单元测试用例
│ ├── test_unmark.py # 核心去水印单元测试用例
│ └── test_verifier.py # AI 验证器单元测试用例
├── .github/ # 【开源合规与工作流】
│ ├── workflows/ci.yml # GitHub Actions 自动化 CI 测试流
│ ├── CODE_OF_CONDUCT.md # 社区行为守则
│ ├── CONTRIBUTING.md # 开源社区贡献指南
│ └── SECURITY.md # 安全政策与漏洞披露声明
├── LICENSE # Apache 2.0 官方开源协议文本
├── NOTICE # 第三方技术与学术成果归属声明
├── .gitignore # 严谨的过滤清单 (已自动排除大模型权重、缓存与虚拟环境)
├── pyproject.toml # 标准 Python 构建与打包元数据 (v0.3.1)
├── requirements.txt # 极简依赖声明
├── setup.py # pip 安装与分发脚本
├── README.md # 中文主文档 (永久保留免责声明)
└── README_EN.md # 英文主文档 (永久保留免责声明)
git clone https://github.com/xuange520/unmark.git cd unmark # 安装依赖 pip install -e . # (可选) 一键下载本地 Qwen2.5-0.5B 轻量模型 python scripts/download_models.py --model qwen
from unmark import UnmarkEngine, WatermarkDetector, AITextVerifier, sanitize_text # 1. 验证文本是否为 AI 生成或携带水印 verifier = AITextVerifier(model_path_or_name="./qwen_local") report = verifier.verify("待验证的长篇文本...") print("AI 生成判定结论:", report["verdict"]) print("SynthID 水印 Z-Score:", report["synthid_watermark"]["z_score"]) # 2. 执行 Layer A + Layer B 全量双层去水印净化 engine = UnmarkEngine(model_path_or_name="./qwen_local") clean_text = engine.scrub("带水印文本...", style="academic", sanitize_first=True)
# 一键执行 AI 生成与密码学水印检测 python unmark/cli.py --input sample.txt --verify # 全量双层去水印清洗 (Layer A + Layer B) python unmark/cli.py --text "待清洗文本..." --layer all
python apps/web_app.py
在浏览器中打开 http://127.0.0.1:7860 即可使用图形界面。
@software{unmark2026, author = {Jay}, title = {Unmark: A Dual-Layer Semantics-Preserving Toolkit for Removing and Evaluating Statistical LLM Text Watermarks}, url = {https://github.com/xuange520/unmark}, year = {2026} }
本项目仅用于 学术研究、大模型水印鲁棒性评估与 AI 对抗安全测试。使用者应当遵守当地法律法规、学术道德规范及相关机构政策。开发者不对任何非授权使用、抄袭或不当行为承担连带法律责任。
本项目采用 Apache License 2.0 开源协议。
Copyright (c) 2026 Jay (xuangeylw@gmail.com).