Удаление видимых и невидимых водяных знаков ИИ и метаданных о происхождении из изображений и видео. Python-библиотека и CLI для SynthID, C2PA, EXIF, IPTC, XMP и распространённых маркеров генеративного ИИ.
Удаляйте AI-маркеры происхождения с изображений и видео, которые вы создали сами:
Поддержка видео охватывает определение происхождения, полную очистку видимых меток и метаданных, пакетную обработку каталогов, удаление видимых меток Sora, Veo, Seedance, Doubao, Dola, Hailuo AI и Kling AI, а также сертифицированную оракулом VAE-регенерацию для удаления SynthID из видео.
raiw.cc запускает эту библиотеку как хостинг-сервис с включённым GPU и без необходимости установки. Удаление видимых меток и метаданных при стандартном разрешении до 12 МП там бесплатно; исходное разрешение выше 12 МП и удаление невидимых водяных знаков платные.
Этот проект предназначен для законного использования контента, которым вы владеете. Он не нацелен на превью стоковых агентств или другие водяные знаки, защищающие платный контент третьих сторон. См. примечания о сфере применения, безопасности и юридических аспектах.
| Цель | Команда | GPU |
|---|---|---|
| Найти сигналы происхождения и водяные знаки | identify | Нет |
| Классифицировать фотографию по пикселям (по желанию, не происхождение) | classify | Нет |
| Проверить поддерживаемый OpenAI SynthID по пикселям через официальный удалённый API | verify-openai-synthid | Нет |
| Удалить известные видимые AI-метки | visible | Нет |
| Стереть выбранную вами область | erase | Нет |
| Удалить AI-метаданные | metadata | Нет |
| Определить происхождение поддерживаемого видео | video identify | Нет |
| Удалить видимые метки и AI-метаданные из видео | video all | Нет |
| Удалить AI-метаданные из видео | video metadata | Нет |
| Удалить зарегистрированную видимую AI-метку из видео | video visible | Нет |
| Обработать каталог видео | video batch | Зависит от режима |
| Удалить SynthID из видео с сертифицированным профилем VAE | video invisible | Рекомендуется |
| Регенерировать изображение для нарушения невидимых водяных знаков | invisible | Требуется (CUDA) |
| Выполнить удаление видимых, невидимых меток и метаданных | all | Рекомендуется |
| Обработать каталог | batch | Зависит от режима |
Объявления Microsoft Paint и Photos InvisMark автоматически направляются на
пиксельную регенерацию. Команда all удаляет как скрытый пиксельный водяной знак, так и
связанный с ним манифест C2PA; только удаление метаданных убирает лишь манифест.
| Потребность | Установка |
|---|---|
| Проверка и удаление метаданных | remove-ai-watermarks |
| Классификация фотографии AI-против-камеры | remove-ai-watermarks[classify] |
| Официальная удалённая проверка OpenAI SynthID | remove-ai-watermarks[verify] |
| Обнаружение и удаление видимых меток | remove-ai-watermarks[visible] |
| Обработка видимых видео | remove-ai-watermarks[video] |
| Удаление SynthID из видео | remove-ai-watermarks[video,diffusion] |
| Обнаружение DWT-DCT без Torch | remove-ai-watermarks[detect] |
| Удаление невидимых меток с изображений (требуется CUDA) | remove-ai-watermarks[qwen-zimage] |
| Все производственные функции, доступные на активном Python | remove-ai-watermarks[all] |
Дополнительные низкоуровневые и специализированные опции включают pixels, heif, trustmark,
migan, lama и diffusion. В
руководстве по установке документирован их точный
состав зависимостей, совместимость с Python и требования к моделям.
Установите CLI по умолчанию, ориентированный на метаданные:```bash uv tool install remove-ai-watermarks
Inspect an image:```bash
remove-ai-watermarks identify image.png
Чтобы классифицировать фотографию по пикселям (AI против камеры, опциональный провайдер),
установите дополнительный пакет и вызовите classify. identify никогда не запускает его:```bash
uv tool install --force "remove-ai-watermarks[classify]"
remove-ai-watermarks classify image.png
Руководство: [классификация пикселей фото](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/photo-classify.md).
Подписанное происхождение — поддерживаемый маршрут для SynthID, и `identify` его считывает.
В пакете нет локального детектора пикселей SynthID. Исследования по
эксперту периодической решётки находятся в `scripts/synthid_runtime/` и
[synthid-detector-research.md](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/synthid-detector-research.md).
Для поддерживаемых изображений OpenAI дополнительный официальный верификатор предоставляет вердикт о пиксельном
водяном знаке:```bash
uv tool install --force "remove-ai-watermarks[verify]"
remove-ai-watermarks verify-openai-synthid image.png --acknowledge-upload
Команда удаляет метаданные о происхождении ИИ из временной копии, проверяет, что
декодированные пиксели не изменились, загружает в OpenAI только эту копию и использует
только независимый ответ SynthID. Она никогда не запускается неявно из identify.
Требуются API-ключ, доступ к конечной точке и явное подтверждение загрузки.
Для удаления видимого водяного знака установите зависимости для работы с пикселями:```bash uv tool install --force "remove-ai-watermarks[visible]"
Тогда удалите известную видимую метку и метаданные ИИ:```bash
remove-ai-watermarks visible image.png -o clean.png
Снимите метаданные без запуска видимого инpainting или диффузии:```bash remove-ai-watermarks metadata image.png --remove -o clean.png
Без `-o` эта команда перезаписывает исходный файл на месте.
Просмотр или удаление метаданных ИИ из файла MP4, MOV, M4V, WebM, MKV, AVI или FLV:```bash
remove-ai-watermarks video metadata input.mp4 --check
remove-ai-watermarks video metadata input.mp4 --remove -o clean.mp4
Команда video metadata не выполняет транскодирование видео- или аудиопотоков. В отличие от
команды для изображений выше, когда -o опущен, она записывает <source>_clean и
сохраняет оригинал. Проверка MP4 и MOV
включает нативный тег TC260 AIGC в
moov.udta.meta.keys/ilst, включая moov, размещённый после медиаданных,
а также варианты метаданных в формате QuickTime, которые записывает экспорт Doubao для iOS (голый
бокс meta как прямой потомок moov, и список метаданных без ключей hdlr=mdir).
Проверка MKV и WebM считывает нормативное
размещение Segment.Tags.Tag.SimpleTag. AVI использует LIST/INFO/AIGC, тогда как FLV
использует script.onMetaData.AIGC. Не-ISOBMFF форматы переупаковываются с
копированием потоков для удаления.
Используйте ориентированный на продукт видеопуть для идентификации или очистки файла:```bash uv tool install --force "remove-ai-watermarks[video]" remove-ai-watermarks video identify input.mp4 remove-ai-watermarks video all input.mp4 -o clean.mp4
`video all` удаляет стабильную зарегистрированную видимую метку, если она присутствует, и всегда
удаляет проверенные AI-метаданные. Если ни один из сигналов не найден, он всё равно записывает
пакетную передачу в том же контейнере, поэтому вызывающие приложения получают один предсказуемый
контракт вывода. Удаление проприетарных невидимых видео-меток по умолчанию исключено.
`--invisible` включает потерю качества с сертифицированным оракулом профилем SynthID для видео.
Обработайте каталог с тем же контрактом:```bash
remove-ai-watermarks video batch ./videos --mode all
Удалить поддерживаемую видимую видеометку:```bash remove-ai-watermarks video visible input.mp4 -o clean.mp4 remove-ai-watermarks video visible veo.mp4 --mark veo -o veo_clean.mp4 remove-ai-watermarks video visible seedance.mp4 --mark seedance -o seedance_clean.mp4 remove-ai-watermarks video visible dola.mp4 --mark dola -o dola_clean.mp4 remove-ai-watermarks video visible hailuo.mp4 --mark hailuo -o hailuo_clean.mp4 remove-ai-watermarks video visible kling.mp4 --mark kling -o kling_clean.mp4
Этот проход сканирует полную последовательность перед изменением пикселей. Он принимает только
метку, которая повторяется в стабильной позиции на соседних кадрах, а затем повторно использует
те же бэкенды заполнения OpenCV, MI-GAN или LaMa, что и при удалении изображений. Аудио копируется
без перекодирования и может достигать своего естественного конца; видеопоток
перекодируется, поскольку его пиксели меняются. По умолчанию защищённый проход оптического потока
выравнивает по движению предыдущее принятое заполнение и смешивает его только тогда, когда
близлежащий исходный контекст согласуется; используйте `--no-temporal-consistency`, чтобы отключить это.
Кодировщик сохраняет поддерживаемую
8-битную цветовую субдискретизацию источника, цветовые теги и шкалу времени дорожек MP4/MOV
вместо того, чтобы полагаться на неявные значения ffmpeg по умолчанию raw-BGR. Переменные интервалы кадров
сохраняются через мост NUT в памяти с временными метками, а не сглаживаются
до средней частоты кадров. Ненулевые начальные временные метки источника сохраняются
вместе со скопированным смещением аудио. Значение по умолчанию `--mark auto`
сканирует все провайдеры за один проход декодирования и выбирает первое стабильное совпадение в
порядке специфичности, показанном ниже. Передайте явную метку, чтобы ограничить обнаружение
одним провайдером.
Sora охватывает движущийся талисман Sora 2 и словесный знак. Veo охватывает как текущий
четырёхточечный ромб, так и устаревший текст `Veo`. Seedance охватывает фиксированную рамку
с надписью `AI`, Dola охватывает фиксированный текст `Dola AI`, Hailuo AI охватывает составную
надпись `MINIMAX | hailuo AI`, а Kling AI охватывает надпись `KLING AI` в правом нижнем углу
с её суффиксом версии. Завершённое кодирование публикуется атомарно. Никакой
вывод не записывается, если стабильная метка не найдена.
Входные данные HDR, PQ/HLG и с разрядностью более 8 бит отклоняются до кодирования, а не
молча уменьшаются через 8-битную границу BGR OpenCV.
Удалить SynthID из видео:```bash
uv tool install --force "remove-ai-watermarks[video,diffusion]"
remove-ai-watermarks video invisible input.mp4 -o clean.mp4
Этот путь регенерирует полную последовательность с одним общим полем латентного шума
во времени, копирует полное аудио, удаляет метаданные источника и публикует
завершённый энкод атомарно. Профиль по умолчанию noise_std=0.15 прошёл как
калибровку с двумя несущими, так и полную публичную проверку оракула Veo на восемь секунд.
Google не публикует локальный декодер, поэтому свежая проверка провайдера
остаётся полезной для необычно важных файлов или после изменений провайдера, но
это не является состоянием результата продукта.
Для удаления невидимого водяного знака установите дополнительный пакет qwen-zimage. Требуется NVIDIA GPU:
все профили поддерживают только CUDA, и запасного варианта на CPU или MPS нет.```bash
uv tool install --force "remove-ai-watermarks[qwen-zimage]"
remove-ai-watermarks invisible image.png -o clean.png
Если локальные детекторы не могут подтвердить наличие невидимого водяного знака, но вы знаете, что изображение получено от ИИ-генератора, добавьте `--force`:```bash
remove-ai-watermarks invisible image.png -o clean.png --force
Изображения с большим количеством типографики могут подключаться к экспериментальному этапу пост-обработки с проверенным текстом.
Он принимает вручную проверенные строки и рамки строк или манифест, проверенный оператором, содержащий только геометрию; он никогда не рассматривает необработанный вывод OCR как эталонную истину и не запускается автоматически:```bash
uv tool install --force "remove-ai-watermarks[text-restoration]"
remove-ai-watermarks invisible image.png -o clean.png
--text-manifest verified-lines.json --force
См. [руководство по CLI](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/cli.md#restore-operator-verified-text) для схемы
манифеста, ограничений совместимости и особенностей оракула.
См. [руководство по установке](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/installation.md) для Homebrew, uv, дополнительных
функций и настройки разработки.
## Примеры
### Видимая метка Gemini
| До | После |
| --- | --- |
|  |  |
Растр `after` создаётся из отслеживаемого растра `before` через публичный путь:```bash
uv run remove-ai-watermarks visible demo_banana_before.png \
--backend cv2 -o demo_banana_after.png
qwen-zimage — профиль по умолчанию: проход Qwen-Image-2512 Lightning под Canny
ControlNet, за которым следует восстановление Z-Image с маской SAM для любого
обнаруженного лица. Альтернатива, sdxl-zimage, заменяет глобальный этап на SDXL
и сохраняет тот же этап для лица. Третий профиль, chroma-zimage, использует
глобальный проход Chroma1 на Apache-2.0 с собственными плоскими порогами
вендора; см. docs/chroma1-engine-research.md для
калибровки. --pipeline auto выбирает chroma-zimage для происхождения OpenAI и Microsoft
и qwen-zimage в противном случае. Все — только CUDA.```bash
uv tool install --force "remove-ai-watermarks[qwen-zimage]"
remove-ai-watermarks invisible image.png -o clean.png --force
| Пример OpenAI до | Пример OpenAI после |
| --- | --- |
| [](data/synthid/originals/ChatGPT%20Image%20May%2030,%202026,%2010_31_08%20AM.png) | [](docs/images/qwen-zimage/ChatGPT/ChatGPT%20Image%20May%2030,%202026,%2010_31_08%20AM_full_clean.png) |
| Пример Gemini до | Пример Gemini после |
| --- | --- |
| [](data/synthid/originals/Gemini_Generated_Image_633uuy633uuy633u.png) | [](docs/images/qwen-zimage/Gemini/Gemini_Generated_Image_633uuy633uuy633u_full_clean.png) |
Эти точные выходные файлы были проверены с помощью соответствующих верификаторов провайдеров. Этот
результат применим к этим файлам, а не к каждому сиду, изображению или будущей версии
водяного знака.
## Часто используемые рецепты
### Удалить каждый обнаруженный видимый знак```bash
remove-ai-watermarks visible image.png -o clean.png
The default --mark auto checks all registered visible marks and removes every
match. If the mark is visible to you but the detector misses it, select its
region explicitly:```bash
remove-ai-watermarks erase image.png
--region 1640,1930,400,100
-o clean.png
`--region` использует формат `x,y,width,height` и может повторяться.
### Использование обученного бэкенда заполнения
Дополнение `visible` использует инпейнтинг OpenCV, если не установлен обученный бэкенд.
Для более сложных фонов дополнения с обученным бэкендом автоматически включают те же
зависимости пикселей:```bash
uv tool install --force "remove-ai-watermarks[migan]"
remove-ai-watermarks visible image.png -o clean.png --backend migan
I need the input content to translate. Please provide the Markdown chunk you'd like me to translate from English to Russian.```bash uv tool install --force "remove-ai-watermarks[lama]" remove-ai-watermarks visible image.png -o clean.png --backend lama
### Снижение использования памяти CUDA```bash
remove-ai-watermarks invisible image.png -o clean.png \
--cpu-offload --force
CPU offload снижает нагрузку на память CUDA, перемещая компоненты модели между CPU и GPU, ценой скорости.
remove-ai-watermarks batch ./images --mode visible remove-ai-watermarks batch ./images --mode all
## Что инструмент может распознавать
Поддержка видимых меток включает:
- видимый переливающийся водяной знак Google Gemini и Nano Banana;
- Doubao, логотип Jimeng и пилюлю `AI生成` в верхнем левом углу, Qwen, Kling AI,
Yuanbao, Baidu, LiblibAI и RunningHub;
- один откалиброванный вариант белого AI-значка Microsoft в верхнем правом углу;
- один откалиброванный вариант метки Samsung Galaxy AI.
Проверка метаданных и происхождения охватывает C2PA, EXIF, XMP, IPTC, общие
параметры генератора, метки AIGC Китая TC260 и несколько сигналов конкретных
вендоров. Дополнительные декодеры добавляют поддержку открытых водяных знаков
DWT-DCT и Adobe TrustMark.
Точная матрица поддержки, включая важные ограничения локали и детектора,
приведена в [поддерживаемых сигналах](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/supported-signals.md).
[Галерея синтетических примеров](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/data/fixtures/visible/README.md) содержит по одному
каноническому образцу для каждой зарегистрированной метки изображения и видео.
## Как это работает
Удаление видимых меток выполняется в три шага:
1. Обнаружение зарегистрированной метки в ожидаемой области.
2. Построение маски вокруг метки.
3. Заполнение только замаскированной области с помощью OpenCV, MI-GAN или LaMa.
Удаление метаданных использует формат-ориентированную очистку. Удаление метаданных
JPEG сохраняет закодированное сканирование изображения вместо его повторного сжатия.
Собственные значения TC260 в MP4/MOV обнуляются без изменения размеров боксов или
смещений медиаданных. Другие поддерживаемые контейнеры используют соответствующий
путь метаданных.
Удаление невидимых меток отличается. Оно регенерирует изображение через диффузионный
конвейер, чтобы нарушить водяные знаки в пиксельной и частотной областях. Это изменяет
изображение и не может гарантировать, что проприетарный верификатор отклонит каждый
результат.
См. [поддерживаемые сигналы](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/supported-signals.md) и
[известные ограничения](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/known-limitations.md) для полной технической границы.
## Python API
API удаления видимых меток требует `remove-ai-watermarks[visible]`.```python
import remove_ai_watermarks as raiw
result, removed = raiw.remove_visible("watermarked.png", "clean.png")
print(removed)
openai_synthid = raiw.verify_openai_synthid("image.png", acknowledge_upload=True)
print(openai_synthid.status)
provenance = raiw.identify_video("input.mp4")
report = raiw.inspect_video_metadata("input.mp4")
complete = raiw.remove_video_all("input.mp4", "clean.mp4")
batch = raiw.remove_video_batch("videos", "videos_clean")
cleaned = raiw.remove_video_metadata("input.mp4")
synthid_cleaned = raiw.remove_video_invisible("input.mp4", "synthid_clean.mp4")
visible = raiw.remove_video_visible("input.mp4", "clean.mp4")
print(visible.mark)
veo = raiw.remove_video_visible("veo.mp4", "veo_clean.mp4", mark="veo")
seedance = raiw.remove_video_visible(
"seedance.mp4",
"seedance_clean.mp4",
mark="seedance",
)
dola = raiw.remove_video_visible("dola.mp4", "dola_clean.mp4", mark="dola")
API высокого уровня принимает путь к файлу или массив NumPy в формате BGR. Для входных данных в виде пути он также считывает метаданные происхождения, сохраняет альфа-канал и может удалять метаданные ИИ из записанного результата.
См. Руководство по Python API для видимого удаления, полного
конвейера remove_all и remove_batch, проверки происхождения, удаления
метаданных и использования диффузии.
Отдельный пакет ComfyUI Remove AI Watermarks предоставляет узлы для видимого удаления, обнаружения, стирания областей и невидимого удаления.
Veo, рамку Seedance с меткой AI, а также фиксированные
метки Doubao, Dola, Hailuo AI и Kling AI. Оно не распознаёт старый угловой завиток Sora Turbo
или незарегистрированные макеты от этих провайдеров.
Классический бэкенд OpenCV может размазывать структурированные фоны; используйте MI-GAN или
LaMa, когда качество восстановления имеет значение.identify по-прежнему работают где угодно.Поставляемая команда video invisible использует сертифицированный профиль noise_std=0.15.
Сопутствующий исследовательский инструмент scripts/video_synthid_sweep.py создаёт
контрольный образец с повторным кодированием плюс кандидатов, регенерированных VAE, и оставляет
вердикт верификатора пустым:```bash
uv run --extra video --extra diffusion python scripts/video_synthid_sweep.py input.mp4 -o sweep/
Чтобы оценить фактическую стоимость вывода, используйте `scripts/video_fidelity_probe.py`:
собственный PSNR движка измеряется до изменения размера и кодирования, поэтому только
зонд видит доставленную картинку.```bash
uv run --extra video python scripts/video_fidelity_probe.py input.mp4 input_clean.mp4
Управление всё ещё должно быть SynthID-положительным, прежде чем отрицательный кандидат сможет считаться доказательством удаления. В двухклиповой калибровке от 2026-07-29 оба совпадающих контроля были положительными во встроенном верификаторе SynthID от Gemini; более сильный кандидат был отрицательным на обоих носителях, тогда как более слабый кандидат был отрицательным только на одном. Более поздняя adversarial-проверка, в ходе которой обычному Gemini было предложено переосмыслить пиксельный результат, вернула UNAVAILABLE; эта проверка не была повторным запуском верификатора и не отменяет встроенные вердикты. Полноклиповая проверка от 2026-07-31 на публичном восьмисекундном образце Veo показала, что 0.10 всё ещё обнаруживается, а 0.15 — нет, поэтому 0.15 теперь является сертифицированным значением по умолчанию. Воспроизводимые хеши и вердикты для этой полноклиповой проверки — один носитель, две строки — находятся в data/evaluations/video-synthid-oracle.csv. Более ранняя двухклиповая калибровка носит исключительно описательный характер: её вердикты не были записаны в отслеживаемый манифест, поэтому считайте, что сертифицированное значение по умолчанию опирается на строки от 2026-07-31.
Начните с индекса документации.
Исследовательские заметки и исторические эксперименты перечислены отдельно в индексе документации. Они объясняют прошлые решения, но не определяют текущий публичный API.
Установите среду разработки и запустите проектный шлюз:```bash uv sync --frozen --extra dev bash maintain.sh
См. [внутреннее устройство модулей](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/module-internals.md) перед изменением подсистемы
с документированными инвариантами.
## Лицензия
[Apache 2.0](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/LICENSE). Авторские права 2025-2026 wiltodelta.