[English](README.md)
# Gemini & NotebookLM 无损去水印工具
基于浏览器的隐私优先去水印工具,专为处理 Gemini 和 NotebookLM 生成的内容(图片及 PDF)而设计。项目采用原生 JavaScript 构建,结合了数学精确的无损还原算法与鲁棒的智能修补技术。
## ✨ 功能特性
- **多格式支持**:完美支持 Gemini 生成的标准图片 (`.jpg`, `.png`, `.webp`) 以及 NotebookLM 文档 (`.pdf`)。
- **无损还原**:针对 Gemini 标准图片,采用 **反向 Alpha 混合 (Reverse Alpha Blending)** 算法,像素级还原原图,拒绝模糊。
- **智能修补**:针对 NotebookLM 的条状水印或 PDF 幻灯片,采用 **智能克隆 (Simple Clone)** 技术,自动采样邻近像素进行修补融合。
- **隐私优先**:100% 纯浏览器本地处理,任何文件都不会上传至服务器。
- **批量处理**:支持多文件拖拽上传,处理完成后可打包为 ZIP 一键下载。
- **现代 UI**:支持深色/浅色模式切换,界面简洁响应快。
- **PDF 预览**:PDF 处理时实时显示页码进度,完成后可预览处理好的首页。
## 🛠️ 技术栈
- **核心逻辑**: Vanilla JavaScript (ES Modules)
- **PDF 处理**: `pdfjs-dist` (解析) & `jspdf` (生成)
- **UI 样式**: Tailwind CSS (CDN)
- **构建工具**: `esbuild`
## 🧩 原理说明
本工具根据文件类型自动选择两种不同的处理策略:
### 1. 反向 Alpha 混合 (适用于 Gemini 图片)
Gemini 添加水印使用的是标准的 Alpha 合成公式:
$$Pixel_{watermarked} = \alpha \cdot Pixel_{logo} + (1 - \alpha) \cdot Pixel_{original}$$
我们通过反向推导来恢复原始像素:
$$Pixel_{original} = \frac{Pixel_{watermarked} - \alpha \cdot Pixel_{logo}}{1 - \alpha}$$
利用预先提取的 Alpha Map(48px/96px),我们可以精确计算出原始像素值,实现近乎零损失的还原。
### 2. 智能克隆修补 (适用于 NotebookLM & PDF)
对于 NotebookLM 的条状水印或某些 PDF 页面,由于缺乏固定的 Alpha Map,工具采用 **Simple Clone** 技术。它自动定位水印区域,从紧邻水印上方或周围的区域“克隆”像素块覆盖水印,并对边缘进行羽化融合,从而达到视觉上的消除效果。
## 🔗 致谢与参考
本项目站在巨人的肩膀上,特别感谢开源社区的杰出贡献:
- **原项目**: [gemini-watermark-remover](https://github.com/journey-ad/gemini-watermark-remover) by [journey-ad](https://github.com/journey-ad)。
- *提供了项目的基础架构、Alpha Map 核心逻辑及反向混合算法的初始实现。*
- **算法起源**: [Gemini Watermark Tool](https://github.com/allenk/GeminiWatermarkTool) by [Allen Kuo](https://github.com/allenk)。
- *最早发现并公开了该数学原理及水印掩膜数据。*
## 🚀 使用指南
### 本地开发
1. 克隆代码仓库:
```bash
git clone http://git.unissense.tech/mula/gemini_watermark_cleaner.git
```
2. 安装依赖:
```bash
pnpm install
```
3. 启动开发模式(持续监听变化):
```bash
pnpm dev
```
4. 启动本地预览服务:
```bash
pnpm serve
```
5. 构建生产版本:
```bash
pnpm build
```
### Docker 部署
1. 构建并启动容器:
```bash
docker-compose up -d --build
```
2. 访问 `http://localhost:3000`(或在 `.env` 中配置的端口)即可使用应用。
### 浏览器使用
构建完成后打开 `dist/index.html`,或直接访问部署好的站点。将文件拖入上传区域即可:
- **图片**:即时预览去水印结果。
- **PDF**:显示处理进度(页码),完成后预览并支持下载。
## 📄 许可证
[MIT License](./LICENSE)