
Entfernt sichtbare und unsichtbare KI-Wasserzeichen sowie Provenienz-Metadaten aus Bildern und Videos. Python-Bibliothek und CLI für SynthID, C2PA, EXIF, IPTC, XMP und gängige Markierungen generativer KI.
Entfernen Sie KI-Herkunftsmarkierungen aus Bildern und Videos, die Sie selbst erstellt haben:
Die Videounterstützung umfasst Herkunftserkennung, vollständige Bereinigung von sichtbaren Markierungen plus Metadaten, Verzeichnis-Batches, die Entfernung sichtbarer Sora-, Veo-, Seedance-, Dola-, Hailuo- und Kling-Markierungen sowie oracle-zertifizierte VAE-Regenerierung zur Entfernung von Video-SynthID.
Probieren Sie es online unter raiw.cc aus, wenn Sie kein Python installieren oder Diffusionsmodelle nicht lokal ausführen möchten.
Dieses Projekt ist für die rechtmäßige Verwendung an Inhalten gedacht, die Ihnen gehören. Es zielt nicht auf Vorschaubilder von Stock-Agenturen oder andere Wasserzeichen ab, die kostenpflichtige Inhalte Dritter schützen. Siehe Umfang, Sicherheits- und Rechtshinweise.
Niedrigstufigere und spezialisierte Extras umfassen pixels, heif, trustmark, migan, lama und diffusion. Die Installationsanleitung dokumentiert ihre genaue Abhängigkeitszusammensetzung und Modellanforderungen.
Das auf Metadaten ausgerichtete Standard-CLI installieren:
uv tool install remove-ai-watermarks
Ein Bild prüfen:
remove-ai-watermarks identify image.png
Für die Entfernung sichtbarer Wasserzeichen die Pixel-Abhängigkeiten installieren:
uv tool install --force "remove-ai-watermarks[visible]"
Anschließend eine bekannte sichtbare Markierung und KI-Metadaten entfernen:
remove-ai-watermarks visible image.png -o clean.png
Metadaten entfernen, ohne sichtbares Inpainting oder Diffusion auszuführen:
remove-ai-watermarks metadata image.png --remove -o clean.png
Ohne -o überschreibt dieser Befehl die Quelldatei direkt.
KI-Metadaten aus einer MP4-, MOV-, M4V-, WebM-, MKV-, AVI- oder FLV-Datei prüfen oder entfernen:
remove-ai-watermarks video metadata input.mp4 --check
remove-ai-watermarks video metadata input.mp4 --remove -o clean.mp4
Der Befehl video metadata transkodiert keine Video- oder Audiostreams. Anders als der obige Bildbefehl schreibt er bei weggelassenem -o <source>_clean und bewahrt das Original. Die Prüfung von MP4 und MOV umfasst das native TC260-AIGC-Tag in moov.udta.meta.keys/ilst, einschließlich eines moov, das nach der Medien-Payload platziert ist. Die MKV- und WebM-Prüfung liest die normative Segment.Tags.Tag.SimpleTag-Platzierung. AVI verwendet LIST/INFO/AIGC, während FLV script.onMetaData.AIGC verwendet. Die Nicht-ISOBMFF-Formate werden für die Entfernung per Stream-Kopie remuxt.
Den produktorientierten Videopfad verwenden, um eine Datei zu prüfen oder zu bereinigen:
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 entfernt eine stabile registrierte sichtbare Markierung, falls vorhanden, und entfernt stets verifizierte KI-Metadaten. Wenn keines der beiden Signale gefunden wird, schreibt es dennoch einen Passthrough im gleichen Container, sodass aufrufende Anwendungen einen vorhersehbaren Ausgabevertrag erhalten. Die proprietäre Entfernung unsichtbarer Videomarkierungen ist standardmäßig ausgeschlossen. --invisible aktiviert das verlustbehaftete, oracle-zertifizierte Video-SynthID-Profil.
Ein Verzeichnis mit demselben Vertrag verarbeiten:
remove-ai-watermarks video batch ./videos --mode all
Eine unterstützte sichtbare Videomarkierung entfernen:
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
Dieser Pfad scannt die gesamte Sequenz, bevor Pixel verändert werden. Er akzeptiert nur eine Markierung, die sich an einer stabilen Position über benachbarte Frames wiederholt, und verwendet dann dieselben OpenCV-, MI-GAN- oder LaMa-Fill-Backends wie bei der Bildentfernung. Audio wird ohne Neukodierung kopiert und darf sein natürliches Ende erreichen; der Videostream wird transkodiert, weil sich seine Pixel ändern. Standardmäßig richtet ein abgesicherter Optical-Flow-Durchlauf den zuvor akzeptierten Fill bewegungskompensiert aus und blendet ihn nur ein, wenn der nahe Quellkontext übereinstimmt; verwenden Sie --no-temporal-consistency, um dies zu deaktivieren. Der Encoder bewahrt unterstütztes 8-Bit-Chroma-Sampling der Quelle, Farb-Tags und die MP4/MOV-Track-Zeitskala, anstatt sich auf die impliziten Raw-BGR-Standardwerte von ffmpeg zu verlassen. Variable Frame-Intervalle werden über eine mit Zeitstempeln versehene In-Memory-NUT-Brücke bewahrt, anstatt auf die durchschnittliche Bildrate reduziert zu werden. Von Null abweichende Startzeitstempel der Quelle werden zusammen mit dem kopierten Audio-Offset beibehalten. Der Standardwert --mark auto scannt alle Anbieter in einem einzigen Dekodierdurchlauf und wählt die erste stabile Übereinstimmung in der unten gezeigten Spezifitätsreihenfolge. Übergeben Sie eine explizite Markierung, um die Erkennung auf einen Anbieter zu beschränken.
Sora umfasst das animierte Sora-2-Maskottchen und die animierte Wortmarke. Veo umfasst sowohl den aktuellen Vier-Punkt-Diamanten als auch den alten Veo-Text. Seedance umfasst das eingerahmte AI-Etikett, Dola den festen Dola AI-Text, Hailuo das zusammengesetzte MINIMAX | hailuo AI-Etikett und Kling das KLING AI-Etikett unten rechts mit seinem Versionssuffix. Eine abgeschlossene Kodierung wird atomar veröffentlicht. Es wird keine Ausgabe geschrieben, wenn keine stabile Markierung gefunden wird.
HDR-, PQ/HLG- und Eingaben mit mehr als 8 Bit werden vor der Kodierung abgelehnt, anstatt stillschweigend über die 8-Bit-BGR-Grenze von OpenCV reduziert zu werden.
Video-SynthID entfernen:
uv tool install --force "remove-ai-watermarks[video,diffusion]"
remove-ai-watermarks video invisible input.mp4 -o clean.mp4
Dieser Pfad regeneriert die vollständige Sequenz mit einem über die Zeit gemeinsamen Latent-Noise-Feld, kopiert das vollständige Audio, entfernt Quellmetadaten und veröffentlicht die abgeschlossene Kodierung atomar. Das Standardprofil noise_std=0.15 bestand sowohl die Zwei-Träger-Kalibrierung als auch eine vollständige öffentliche Acht-Sekunden-Veo-Oracle-Prüfung. Google veröffentlicht keinen lokalen Decoder, daher bleibt eine erneute Anbieterprüfung für ungewöhnlich wichtige Dateien oder nach Anbieteränderungen sinnvoll, sie ist jedoch kein Produktergebniszustand.
Für die Entfernung unsichtbarer Wasserzeichen das Extra qwen-zimage installieren. Eine NVIDIA-GPU ist erforderlich: Beide Profile sind nur mit CUDA verfügbar, und es gibt kein CPU- oder MPS-Fallback.
uv tool install --force "remove-ai-watermarks[qwen-zimage]"
remove-ai-watermarks invisible image.png -o clean.png
Wenn die lokalen Detektoren kein unsichtbares Wasserzeichen bestätigen können, Sie aber wissen, dass das Bild von einem KI-Generator stammt, fügen Sie --force hinzu:
remove-ai-watermarks invisible image.png -o clean.png --force
Siehe die Installationsanleitung für Homebrew, uv, optionale Funktionen und Entwicklungseinrichtung.
| Vorher | Nachher |
|---|---|
![]() | ![]() |
qwen-zimage ist das Standardprofil: ein Qwen-Image-2512-Lightning-Durchlauf unter Canny-ControlNet, gefolgt von einer SAM-maskierten Z-Image-Reparatur jedes erkannten Gesichts. Die Alternative sdxl-zimage tauscht die globale Stufe gegen SDXL und behält dieselbe Gesichtsstufe bei. Beide sind nur mit CUDA verfügbar.
uv tool install --force "remove-ai-watermarks[qwen-zimage]"
remove-ai-watermarks invisible image.png -o clean.png --force
Diese exakten Ausgabedateien wurden mit den passenden Anbieter-Verifiern geprüft. Dieses Ergebnis gilt für diese Dateien, nicht für jeden Seed, jedes Bild oder jede zukünftige Wasserzeichenversion.
remove-ai-watermarks visible image.png -o clean.png
Der Standardwert --mark auto prüft alle registrierten sichtbaren Markierungen und entfernt jede Übereinstimmung. Wenn die Markierung für Sie sichtbar ist, der Detektor sie aber übersieht, wählen Sie ihren Bereich explizit aus:
remove-ai-watermarks erase image.png \
--region 1640,1930,400,100 \
-o clean.png
--region verwendet x,y,width,height und kann wiederholt werden.
Das Extra visible verwendet OpenCV-Inpainting, wenn kein gelerntes Backend installiert ist. Für schwierigere Hintergründe enthalten die Extras mit gelernten Backends dieselben Pixel-Abhängigkeiten automatisch:
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-Offload verringert den CUDA-Speicherdruck, indem Modellkomponenten zwischen CPU und GPU verschoben werden – auf Kosten der Geschwindigkeit.
remove-ai-watermarks batch ./images --mode visible
remove-ai-watermarks batch ./images --mode all
Die Unterstützung für sichtbare Markierungen umfasst:
Die Metadaten- und Herkunftsprüfung umfasst C2PA, EXIF, XMP, IPTC, gängige Generatorparameter, chinesische TC260-AIGC-Labels und mehrere anbieterspezifische Signale. Optionale Decoder ergänzen die Unterstützung für offene DWT-DCT-Wasserzeichen und Adobe TrustMark.
Die genaue Unterstützungsmatrix einschließlich wichtiger Locale- und Detektorgrenzen befindet sich in unterstützte Signale.
Die Entfernung sichtbarer Markierungen folgt drei Schritten:
Die Metadatenentfernung verwendet formatbewusstes Stripping. Die Entfernung von JPEG-Metadaten bewahrt den kodierten Bild-Scan, anstatt ihn neu zu komprimieren. Native MP4/MOV-TC260-Werte werden geleert, ohne Boxgrößen oder Medien-Offsets zu verändern. Andere unterstützte Container verwenden ihren entsprechenden Metadatenpfad.
Die Entfernung unsichtbarer Markierungen ist anders. Sie regeneriert das Bild über eine Diffusions-Pipeline, um Wasserzeichen im Pixel- und Frequenzbereich zu zerstören. Dies verändert das Bild und kann nicht garantieren, dass ein proprietärer Verifier jede Ausgabe ablehnt.
Siehe unterstützte Signale und bekannte Einschränkungen für die vollständige technische Abgrenzung.
Die API zur Entfernung sichtbarer Markierungen erfordert 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")
Die High-Level-API akzeptiert einen Dateipfad oder ein BGR-NumPy-Array. Bei Pfadeingaben liest sie außerdem Herkunftsmetadaten, bewahrt den Alphakanal und kann KI-Metadaten aus dem geschriebenen Ergebnis entfernen.
Siehe den Python-API-Leitfaden für die Entfernung sichtbarer Markierungen, die vollständige remove_all- und remove_batch-Pipeline, Herkunftsprüfung, Metadatenentfernung und Diffusionsnutzung.
Das separate Paket ComfyUI Remove AI Watermarks bietet Knoten für die Entfernung sichtbarer Markierungen, Erkennung, Bereichslöschung und Entfernung unsichtbarer Markierungen.
Veo-Text, das eingerahmte AI-Etikett von Seedance und die festen Etiketten von Dola, Hailuo und Kling. Sie erkennt nicht den älteren Eckwirbel von Sora Turbo oder nicht registrierte Layouts dieser Anbieter. Das klassische OpenCV-Backend kann strukturierte Hintergründe verschmieren; verwenden Sie MI-GAN oder LaMa, wenn die Qualität der Wiederherstellung wichtig ist.identify laufen weiterhin überall.Der mitgelieferte Befehl video invisible verwendet das zertifizierte Profil noise_std=0.15. Die begleitende Forschungs-Harness scripts/video_synthid_sweep.py erstellt eine abgestimmte Re-Encode-Kontrolle sowie VAE-regenerierte Kandidaten und lässt das Verifier-Urteil leer:
uv run --extra video --extra diffusion python scripts/video_synthid_sweep.py input.mp4 -o sweep/
Um zu bewerten, was eine Ausgabe tatsächlich kostet, verwenden Sie scripts/video_fidelity_probe.py: Der PSNR-Wert der Engine selbst wird vor der Skalierung und der Kodierung gemessen, sodass nur die Sonde das gelieferte Bild sieht.
uv run --extra video python scripts/video_fidelity_probe.py input.mp4 input_clean.mp4
Die Kontrolle muss weiterhin SynthID-positiv sein, bevor ein negativer Kandidat als Entfernungsnachweis zählen kann. In der Zwei-Clip-Kalibrierung vom 29.07.2026 waren beide abgestimmten Kontrollen im integrierten SynthID-Verifier von Gemini positiv; der stärkere Kandidat war auf beiden Trägern negativ, während ein schwächerer Kandidat auf einem negativ war. Ein späteres adversariales Follow-up, das normales Gemini bat, das Pixel-Ergebnis neu zu interpretieren, gab UNAVAILABLE zurück; dieses Follow-up war keine erneute Verifier-Ausführung und macht die integrierten Urteile nicht ungültig. Eine Voll-Clip-Prüfung vom 31.07.2026 an einer öffentlichen Acht-Sekunden-Veo-Stichprobe ergab, dass 0.10 weiterhin erkannt und 0.15 nicht erkannt wurde; daher ist 0.15 jetzt der zertifizierte Standardwert. Die reproduzierbaren Hashes und Urteile befinden sich in data/evaluations/video-synthid-oracle.csv.
Beginnen Sie mit dem Dokumentationsindex.
Forschungsnotizen und historische Experimente sind separat im Dokumentationsindex aufgeführt. Sie erklären frühere Entscheidungen, definieren aber nicht die aktuelle öffentliche API.
Die Entwicklungsumgebung installieren und das Projekt-Gate ausführen:
uv sync --frozen --extra dev
bash maintain.sh
Lesen Sie Modul-Interna, bevor Sie ein Subsystem mit dokumentierten Invarianten ändern.
Apache 2.0. Copyright 2025-2026 wiltodelta.
| Ziel | Befehl | GPU |
|---|
| Herkunftssignale und Wasserzeichen erkennen | identify | Nein |
| Bekannte sichtbare KI-Markierungen entfernen | visible | Nein |
| Einen von Ihnen ausgewählten Bereich entfernen | erase | Nein |
| KI-Metadaten entfernen | metadata | Nein |
| Unterstützte Video-Herkunft erkennen | video identify | Nein |
| Sichtbare Markierungen und KI-Metadaten aus Videos entfernen | video all | Nein |
| KI-Metadaten aus Videos entfernen | video metadata | Nein |
| Eine registrierte sichtbare KI-Markierung aus Videos entfernen | video visible | Nein |
| Ein Verzeichnis mit Videos verarbeiten | video batch | Hängt vom Modus ab |
| Video-SynthID mit dem zertifizierten VAE-Profil entfernen | video invisible | Empfohlen |
| Ein Bild regenerieren, um unsichtbare Wasserzeichen zu zerstören | invisible | Erforderlich (CUDA) |
| Entfernung sichtbarer und unsichtbarer Markierungen sowie von Metadaten ausführen | all | Empfohlen |
| Ein Verzeichnis verarbeiten | batch | Hängt vom Modus ab |
| Bedarf | Installation |
|---|
| Metadatenprüfung und -entfernung | remove-ai-watermarks |
| Erkennung und Entfernung sichtbarer Markierungen | remove-ai-watermarks[visible] |
| Verarbeitung sichtbarer Videomarkierungen | remove-ai-watermarks[video] |
| Video-SynthID-Entfernung | remove-ai-watermarks[video,diffusion] |
| Torch-freie DWT-DCT-Erkennung | remove-ai-watermarks[detect] |
| Entfernung unsichtbarer Bildmarkierungen (benötigt CUDA) | remove-ai-watermarks[qwen-zimage] |
| Alle Produktionsfunktionen | remove-ai-watermarks[all] |