
Удаление видимых и невидимых водяных знаков ИИ и метаданных о происхождении из изображений и видео. Python-библиотека и CLI для SynthID, C2PA, EXIF, IPTC, XMP и распространённых маркеров генеративного ИИ.
Удаление AI-маркеров происхождения из изображений и видео, которые вы создали сами:
Поддержка видео охватывает определение происхождения, полную очистку видимых меток и метаданных, пакетную обработку каталогов, удаление видимых меток Sora, Veo, Seedance, Dola, Hailuo и Kling, а также сертифицированную оракулом VAE-регенерацию для удаления SynthID из видео.
Попробуйте онлайн на raiw.cc, если не хотите устанавливать Python или запускать диффузионные модели локально.
Этот проект предназначен для законного использования контента, которым вы владеете. Он не затрагивает превью стоковых агентств или другие водяные знаки, защищающие платный контент третьих сторон. См. область применения, безопасность и юридические примечания.
Низкоуровневые и специализированные дополнительные пакеты включают pixels, heif, trustmark, migan, lama и diffusion. В руководстве по установке описаны их точный состав зависимостей и требования к моделям.
Установите CLI по умолчанию, ориентированный на метаданные:
uv tool install remove-ai-watermarks
Проверьте изображение:
remove-ai-watermarks identify image.png
Для удаления видимых водяных знаков установите пиксельные зависимости:
uv tool install --force "remove-ai-watermarks[visible]"
Затем удалите известную видимую метку и AI-метаданные:
remove-ai-watermarks visible image.png -o clean.png
Удалите метаданные без запуска видимой ретуши или диффузии:
remove-ai-watermarks metadata image.png --remove -o clean.png
Без -o эта команда перезаписывает исходный файл на месте.
Проверьте или удалите AI-метаданные из файлов MP4, MOV, M4V, WebM, MKV, AVI или FLV:
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, размещённый после медиаданных. Проверка MKV и WebM считывает нормативное размещение Segment.Tags.Tag.SimpleTag. AVI использует LIST/INFO/AIGC, а FLV — script.onMetaData.AIGC. Форматы, отличные от ISOBMFF, перепаковываются с копированием потоков для удаления.
Используйте видеорежим продукта для определения или очистки файла:
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 для видео с потерями, сертифицированный оракулом.
Обработайте каталог с тем же контрактом:
remove-ai-watermarks video batch ./videos --mode all
Удалите поддерживаемую видимую видеометку:
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 — составную метку MINIMAX | hailuo AI, а Kling — метку KLING AI в правом нижнем углу с суффиксом версии. Завершённый энкод публикуется атомарно. Если стабильная метка не найдена, вывод не записывается.
Входные данные HDR, PQ/HLG и с разрядностью более 8 бит отклоняются до кодирования, а не молча уменьшаются через 8-битную границу BGR в OpenCV.
Удалите SynthID из видео:
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. Требуется GPU NVIDIA: оба профиля работают только с CUDA, и запасного варианта на CPU или MPS нет.
uv tool install --force "remove-ai-watermarks[qwen-zimage]"
remove-ai-watermarks invisible image.png -o clean.png
Если локальные детекторы не могут подтвердить наличие невидимого водяного знака, но вы знаете, что изображение создано AI-генератором, добавьте --force:
remove-ai-watermarks invisible image.png -o clean.png --force
См. руководство по установке для Homebrew, uv, дополнительных функций и настройки разработки.
| До | После |
|---|---|
![]() | ![]() |
qwen-zimage — профиль по умолчанию: проход Qwen-Image-2512 Lightning под управлением Canny ControlNet с последующей маскированной SAM-реставрацией Z-Image обнаруженных лиц. Альтернатива sdxl-zimage заменяет глобальный этап на SDXL и сохраняет тот же этап для лиц. Оба работают только с CUDA.
uv tool install --force "remove-ai-watermarks[qwen-zimage]"
remove-ai-watermarks invisible image.png -o clean.png --force
Эти конкретные выходные файлы были проверены соответствующими верификаторами поставщиков. Этот результат применим к этим файлам, а не к каждому seed-значению, изображению или будущей версии водяных знаков.
remove-ai-watermarks visible image.png -o clean.png
Значение по умолчанию --mark auto проверяет все зарегистрированные видимые метки и удаляет каждое совпадение. Если метка видна вам, но детектор её пропускает, выберите её область явно:
remove-ai-watermarks erase image.png \
--region 1640,1930,400,100 \
-o clean.png
--region использует формат x,y,width,height и может повторяться.
Дополнительный пакет visible использует ретушь OpenCV, если не установлен обученный бэкенд. Для более сложных фонов дополнительные пакеты с обученными бэкендами автоматически включают те же пиксельные зависимости:
uv tool install --force "remove-ai-watermarks[migan]"
remove-ai-watermarks visible image.png -o clean.png --backend migan
uv tool install --force "remove-ai-watermarks[lama]"
remove-ai-watermarks visible image.png -o clean.png --backend lama
remove-ai-watermarks invisible image.png -o clean.png \
--cpu-offload --force
Выгрузка на CPU снижает нагрузку на память CUDA, перемещая компоненты модели между CPU и GPU, ценой скорости.
remove-ai-watermarks batch ./images --mode visible
remove-ai-watermarks batch ./images --mode all
Поддержка видимых меток включает:
Проверка метаданных и происхождения охватывает C2PA, EXIF, XMP, IPTC, общие параметры генератора, китайские метки TC260 AIGC и несколько специфических сигналов поставщиков. Дополнительные декодеры добавляют поддержку открытых DWT-DCT водяных знаков и Adobe TrustMark.
Точная матрица поддержки, включая важные ограничения локали и детекторов, приведена в разделе поддерживаемые сигналы.
Удаление видимых меток выполняется в три шага:
Удаление метаданных использует очистку с учётом формата. Удаление метаданных JPEG сохраняет закодированное изображение вместо его пересжатия. Нативные значения TC260 в MP4/MOV затираются без изменения размеров боксов или смещений медиаданных. Для других поддерживаемых контейнеров используется соответствующий путь метаданных.
Удаление невидимых меток — другое. Оно регенерирует изображение через диффузионный конвейер, чтобы нарушить водяные знаки в пиксельной и частотной областях. Это изменяет изображение и не может гарантировать, что проприетарный верификатор отклонит каждый результат.
Полную техническую границу см. в разделах поддерживаемые сигналы и известные ограничения.
API удаления видимых меток требует remove-ai-watermarks[visible].
import remove_ai_watermarks as raiw
result, removed = raiw.remove_visible("watermarked.png", "clean.png")
print(removed)
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. При вводе пути он также считывает метаданные происхождения, сохраняет альфа-канал и может удалять AI-метаданные из записанного результата.
См. руководство по Python API для удаления видимых меток, полного конвейера remove_all и remove_batch, проверки происхождения, удаления метаданных и использования диффузии.
Отдельный пакет ComfyUI Remove AI Watermarks предоставляет узлы для удаления видимых меток, обнаружения, стирания областей и удаления невидимых меток.
Veo, метку AI в рамке Seedance и фиксированные метки Dola, Hailuo и Kling. Оно не распознаёт старый угловой завиток Sora Turbo или незарегистрированные макеты этих поставщиков. Классический бэкенд OpenCV может размазывать структурированные фоны; используйте MI-GAN или LaMa, когда качество восстановления важно.identify по-прежнему работают где угодно.Поставляемая команда video invisible использует сертифицированный профиль noise_std=0.15. Сопутствующий исследовательский инструмент scripts/video_synthid_sweep.py создаёт контрольный файл с соответствующим перекодированием и VAE-регенерированные кандидаты, оставляя вердикт верификатора пустым:
uv run --extra video --extra diffusion python scripts/video_synthid_sweep.py input.mp4 -o sweep/
Чтобы оценить, во что на самом деле обходится вывод, используйте scripts/video_fidelity_probe.py: собственный PSNR движка измеряется до изменения размера и кодирования, поэтому только этот инструмент видит итоговую картинку.
uv run --extra video python scripts/video_fidelity_probe.py input.mp4 input_clean.mp4
Контрольный файл всё ещё должен быть SynthID-положительным, прежде чем отрицательный кандидат можно считать доказательством удаления. В калибровке от 29.07.2026 на двух клипах оба соответствующих контрольных файла были положительными во встроенном в Gemini верификаторе SynthID; более сильный кандидат был отрицательным на обеих несущих, а более слабый — на одной. Последующая состязательная проверка, в которой обычному Gemini предложили переинтерпретировать пиксельный результат, вернула UNAVAILABLE; эта проверка не была повторным запуском верификатора и не отменяет встроенные вердикты. Полная проверка клипа от 31.07.2026 на публичном восьмисекундном образце Veo показала, что 0.10 всё ещё обнаруживается, а 0.15 — нет, поэтому 0.15 теперь является сертифицированным значением по умолчанию. Воспроизводимые хеши и вердикты находятся в data/evaluations/video-synthid-oracle.csv.
Начните с указателя документации.
Исследовательские заметки и исторические эксперименты перечислены отдельно в указателе документации. Они объясняют прошлые решения, но не определяют текущий публичный API.
Установите среду разработки и запустите проверку проекта:
uv sync --frozen --extra dev
bash maintain.sh
Перед изменением подсистемы с документированными инвариантами ознакомьтесь с разделом внутреннее устройство модуля.
Apache 2.0. Авторские права 2025-2026 wiltodelta.
| Цель | Команда | GPU |
|---|
| Определить сигналы происхождения и водяные знаки | identify | Нет |
| Удалить известные видимые 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 | Зависит от режима |
| Потребность | Установка |
|---|
| Проверка и удаление метаданных | remove-ai-watermarks |
| Обнаружение и удаление видимых меток | 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] |
| Все производственные функции | remove-ai-watermarks[all] |