Retour aux mises à jour
New releaseSep 4, 2026

remove-ai-watermarks v0.37.1

Supprimez les filigranes IA visibles et invisibles ainsi que les métadonnées de provenance des images et des vidéos. Bibliothèque Python et CLI pour SynthID, C2PA, EXIF, IPTC, XMP et les marques courantes d'IA générative.

Partager

Supprimer les filigranes IA

Supprimez les marques de provenance IA des images et vidéos que vous avez vous-même générées :

  • les étiquettes visibles connues telles que le filigrane étincelle de Google Gemini et les marques de texte du fournisseur ;
  • les filigranes de pixels invisibles via la régénération par diffusion ;
  • les métadonnées C2PA, EXIF, XMP, IPTC et autres métadonnées IA associées.

La prise en charge vidéo couvre l'identification de la provenance, le nettoyage complet visible-plus-métadonnées, les lots de répertoires, la suppression des marques visibles Sora, Veo, Seedance, Doubao, Dola, Hailuo AI et Kling AI, ainsi que la régénération VAE certifiée par oracle pour la suppression de SynthID vidéo.

raiw.cc exécute cette bibliothèque en tant que service hébergé, avec le GPU inclus et rien à installer. La suppression des marques visibles et des métadonnées en sortie Standard jusqu'à 12 MP y est gratuite ; la résolution d'origine supérieure à 12 MP et la suppression des filigranes invisibles sont payantes.

PyPI Python Downloads License Tests Sponsor

Ce projet est destiné à un usage licite sur du contenu que vous possédez. Il ne cible pas les aperçus des agences de banques d'images ni d'autres filigranes qui protègent le contenu payant de tiers. Voir notes sur la portée, la sécurité et les aspects juridiques.

Choisissez ce que vous voulez faire

ObjectifCommandeGPU
Trouver les signaux de provenance et les filigranesidentifyNon
Classifier une photographie à partir des pixels (opt-in, pas la provenance)classifyNon
Vérifier le SynthID OpenAI pris en charge à partir des pixels avec l'API distante officielleverify-openai-synthidNon
Supprimer les marques IA visibles connuesvisibleNon
Effacer une région que vous sélectionnezeraseNon
Supprimer les métadonnées IAmetadataNon
Identifier la provenance vidéo prise en chargevideo identifyNon
Supprimer les marques visibles et les métadonnées IA des vidéosvideo allNon
Supprimer les métadonnées IA des vidéosvideo metadataNon
Supprimer une marque IA visible enregistrée d'une vidéovideo visibleNon
Traiter un répertoire de vidéosvideo batchDépend du mode
Supprimer le SynthID vidéo avec le profil VAE certifiévideo invisibleRecommandé
Régénérer une image pour perturber les filigranes invisiblesinvisibleRequis (CUDA)
Exécuter la suppression visible, invisible et des métadonnéesallRecommandé
Traiter un répertoirebatchDépend du mode

Les déclarations InvisMark de Microsoft Paint et Photos sont routées automatiquement vers la régénération de pixels. La commande all supprime à la fois le filigrane de pixels caché et son manifeste C2PA lié ; la seule suppression des métadonnées ne supprime que le manifeste.

Modes d'installation

BesoinInstallation
Inspection et suppression des métadonnéesremove-ai-watermarks
Classification IA-vs-appareil photo des photographiesremove-ai-watermarks[classify]
Vérification SynthID OpenAI distante officielleremove-ai-watermarks[verify]
Détection et suppression visiblesremove-ai-watermarks[visible]
Traitement vidéo visibleremove-ai-watermarks[video]
Suppression du SynthID vidéoremove-ai-watermarks[video,diffusion]
Détection DWT-DCT sans Torchremove-ai-watermarks[detect]
Suppression d'image invisible (nécessite CUDA)remove-ai-watermarks[qwen-zimage]
Chaque fonctionnalité de production disponible sur le Python actifremove-ai-watermarks[all]

Les extras de niveau inférieur et spécialisés incluent pixels, heif, trustmark, migan, lama et diffusion. Le guide d'installation documente leur composition exacte de dépendances, leur compatibilité Python et leurs exigences de modèle.

Démarrage rapide

Installez le CLI par défaut axé sur les métadonnées :```bash uv tool install remove-ai-watermarks

Inspectez une image :```bash
remove-ai-watermarks identify image.png

Pour classer une photographie à partir des pixels (IA versus appareil photo, fournisseur optionnel), installez l’extension et appelez classify. identify ne le lance jamais :```bash uv tool install --force "remove-ai-watermarks[classify]" remove-ai-watermarks classify image.png

Guide : [classification des pixels photo](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/photo-classify.md).

La provenance signée est la voie prise en charge pour SynthID et `identify` la lit.
Il n’existe aucun détecteur de pixels SynthID local dans le package. Les recherches sur un
expert en réseau périodique se trouvent dans `scripts/synthid_runtime/` et
[synthid-detector-research.md](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/synthid-detector-research.md).

Pour les images OpenAI prises en charge, le vérificateur officiel facultatif fournit un verdict de
filigrane de pixels :```bash
uv tool install --force "remove-ai-watermarks[verify]"
remove-ai-watermarks verify-openai-synthid image.png --acknowledge-upload

La commande supprime les métadonnées de provenance IA d'une copie temporaire, vérifie que les pixels décodés sont inchangés, téléverse uniquement cette copie vers OpenAI, et consomme uniquement la réponse indépendante de SynthID. Elle ne s'exécute jamais implicitement depuis identify. Une clé API, un accès au point de terminaison et un accusé de réception explicite du téléversement sont requis.

Pour la suppression du filigrane visible, installez les dépendances de pixels :```bash uv tool install --force "remove-ai-watermarks[visible]"

Ensuite, supprimez une marque visible connue et les métadonnées d’IA :```bash
remove-ai-watermarks visible image.png -o clean.png

Strip metadata without running visible inpainting or diffusion:```bash remove-ai-watermarks metadata image.png --remove -o clean.png

Sans `-o`, cette commande écrase la source en place.

Inspectez ou supprimez les métadonnées d'IA d'un fichier MP4, MOV, M4V, WebM, MKV, AVI ou FLV :```bash
remove-ai-watermarks video metadata input.mp4 --check
remove-ai-watermarks video metadata input.mp4 --remove -o clean.mp4

La commande video metadata ne transcode pas les flux vidéo ou audio. Contrairement à la commande image ci-dessus, lorsque -o est omis, elle écrit <source>_clean et préserve l'original. L'inspection MP4 et MOV inclut le tag natif TC260 AIGC dans moov.udta.meta.keys/ilst, y compris un moov placé après la charge utile média, ainsi que les variantes meta au format QuickTime que l'export iOS de Doubao écrit (une boîte meta nue comme enfant direct de moov, et une liste de métadonnées hdlr=mdir sans clé). L'inspection MKV et WebM lit le placement normatif Segment.Tags.Tag.SimpleTag. AVI utilise LIST/INFO/AIGC, tandis que FLV utilise script.onMetaData.AIGC. Les formats non-ISOBMFF sont remuxés avec une copie de flux pour la suppression.

Utilisez le chemin vidéo orienté produit pour identifier ou nettoyer un fichier :```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` supprime une marque visible stable enregistrée lorsqu'elle est présente et
supprime toujours les métadonnées IA vérifiées. Si aucun des deux signaux n'est trouvé, il écrit
quand même un passthrough dans le même conteneur, afin que les appelants applicatifs obtiennent un
contrat de sortie prévisible. La suppression vidéo invisible propriétaire est exclue par défaut.
`--invisible` opte pour le profil vidéo SynthID avec perte, certifié par oracle.

Traitez un répertoire avec le même contrat :```bash
remove-ai-watermarks video batch ./videos --mode all

Supprimer une marque vidéo visible prise en charge :```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

Ce chemin analyse la séquence complète avant de modifier les pixels. Il n'accepte qu'une
marque qui se répète à une position stable sur des trames adjacentes, puis réutilise
les mêmes backends de remplissage OpenCV, MI-GAN ou LaMa que pour la suppression d'image. L'audio est copié
sans ré-encodage et est autorisé à atteindre sa fin naturelle ; le flux vidéo
est transcodé car ses pixels changent. Par défaut, un passage de flux optique protégé
aligne en mouvement le remplissage accepté précédent et le fusionne uniquement lorsque le
contexte source voisin concorde ; utilisez `--no-temporal-consistency` pour le désactiver.
L'encodeur préserve l'échantillonnage de chroma
8 bits de la source pris en charge, les étiquettes de couleur et l'échelle temporelle des pistes MP4/MOV
au lieu de s'appuyer sur les valeurs par défaut implicites raw-BGR de ffmpeg. Les intervalles de trames variables sont
préservés via un pont NUT en mémoire horodaté au lieu d'être aplatis
à la fréquence d'images moyenne. Les horodatages de début de source non nuls sont conservés
avec le décalage audio copié. Le `--mark auto` par défaut
analyse tous les fournisseurs en un seul passage de décodage et sélectionne la première correspondance stable dans
l'ordre de spécificité indiqué ci-dessous. Passez une marque explicite pour restreindre la détection
à un seul fournisseur.
Sora couvre la mascotte mobile Sora 2 et le wordmark. Veo couvre à la fois le
losange à quatre points actuel et le texte `Veo` hérité. Seedance couvre l'étiquette `AI`
encadrée fixe, Dola couvre le texte fixe `Dola AI`, Hailuo AI couvre l'étiquette composite
`MINIMAX | hailuo AI`, et Kling AI couvre l'étiquette `KLING AI`
en bas à droite avec son suffixe de version. Un encodage terminé est publié de manière atomique. Aucune
sortie n'est écrite lorsqu'aucune marque stable n'est trouvée.
Les entrées HDR, PQ/HLG et supérieures à 8 bits sont rejetées avant l'encodage plutôt
que d'être silencieusement réduites via la limite BGR 8 bits d'OpenCV.

Supprimer SynthID vidéo :```bash
uv tool install --force "remove-ai-watermarks[video,diffusion]"
remove-ai-watermarks video invisible input.mp4 -o clean.mp4

Ce chemin régénère la séquence complète avec un champ de bruit latent partagé dans le temps, copie l’audio complet, supprime les métadonnées sources et publie l’encodage terminé de manière atomique. Le profil par défaut noise_std=0.15 a réussi à la fois l’étalonnage à deux porteuses et une vérification complète publique de huit secondes avec l’oracle Veo. Google ne publie pas de décodeur local, donc une nouvelle vérification du fournisseur reste utile pour les fichiers particulièrement importants ou après des changements de fournisseur, mais il ne s’agit pas d’un état de résultat produit.

Pour la suppression du filigrane invisible, installez l’extension qwen-zimage. Une carte graphique NVIDIA est requise : tous les profils sont exclusivement CUDA, et il n’existe aucun repli CPU ou MPS.```bash uv tool install --force "remove-ai-watermarks[qwen-zimage]" remove-ai-watermarks invisible image.png -o clean.png

Si les détecteurs locaux ne peuvent pas confirmer un filigrane invisible mais que vous savez que l'image provient d'un générateur d'IA, ajoutez `--force` :```bash
remove-ai-watermarks invisible image.png -o clean.png --force

Les images très typographiées peuvent opter pour la passe finale expérimentale de texte vérifié. Elle accepte des chaînes et des boîtes de lignes relues manuellement ou un manifeste géométrique uniquement vérifié par un opérateur ; elle ne traite jamais la sortie OCR brute comme une vérité de référence et ne s’exécute pas automatiquement :```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

Voir le [guide CLI](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/cli.md#restore-operator-verified-text) pour le schéma
du manifeste, les restrictions de compatibilité et les mises en garde concernant l'oracle.

Voir le [guide d'installation](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/installation.md) pour Homebrew, uv, les
fonctionnalités optionnelles et la configuration de développement.

## Exemples

### Filigrane Gemini visible

| Avant | Après |
| --- | --- |
| ![Image avec un filigrane Gemini visible](https://assets.kitploit.com/production/public/readmes/7369/4f6643f46057e4a4ec503f5bf0daf7243768915090f2d7fc5ac183c2d928c5ca.png) | ![Image après suppression du filigrane visible](https://assets.kitploit.com/production/public/readmes/7369/45193ef965a27342b183a1834b01ef812f653da2ec356a81fce1aed79f1ef814.png) |

Le raster `after` est généré à partir du raster `before` suivi par le chemin public :```bash
uv run remove-ai-watermarks visible demo_banana_before.png \
  --backend cv2 -o demo_banana_after.png

Suppression invisible de haute qualité

qwen-zimage est le profil par défaut : un passage Qwen-Image-2512 Lightning sous Canny ControlNet, suivi d'une réparation Z-Image masquée par SAM de tout visage détecté. L'alternative, sdxl-zimage, remplace l'étape globale par SDXL et conserve la même étape de visage. Un troisième profil, chroma-zimage, utilise le passage global Chroma1 sous licence Apache-2.0 avec ses propres planchers plats de fournisseur ; voir docs/chroma1-engine-research.md pour l'étalonnage. --pipeline auto sélectionne chroma-zimage pour la provenance OpenAI et Microsoft et qwen-zimage sinon. Tous sont uniquement compatibles CUDA.```bash uv tool install --force "remove-ai-watermarks[qwen-zimage]" remove-ai-watermarks invisible image.png -o clean.png --force

| Exemple OpenAI avant | Exemple OpenAI après |
| --- | --- |
| [![Grille de portraits OpenAI avant qwen-zimage](https://assets.kitploit.com/production/public/readmes/7369/28ff8732b037f98a4ef5bc277bbcdaa32e5eb9ccbd00b6c8c616e46ef68ae8a0.png)](data/synthid/originals/ChatGPT%20Image%20May%2030,%202026,%2010_31_08%20AM.png) | [![Grille de portraits OpenAI après qwen-zimage](https://assets.kitploit.com/production/public/readmes/7369/8066deab6162ef4fba352ffb475a119bfe94f097a4f5531e0fe141cbb8e089b5.png)](docs/images/qwen-zimage/ChatGPT/ChatGPT%20Image%20May%2030,%202026,%2010_31_08%20AM_full_clean.png) |

| Exemple Gemini avant | Exemple Gemini après |
| --- | --- |
| [![Panneau Gemini avant qwen-zimage](https://assets.kitploit.com/production/public/readmes/7369/4affd7f27767a445db6abf741355743ba8d95108ad922c9fff045feed8492236.png)](data/synthid/originals/Gemini_Generated_Image_633uuy633uuy633u.png) | [![Panneau Gemini après qwen-zimage](https://assets.kitploit.com/production/public/readmes/7369/42858417874f6cd8bc7c9bdb39f6bde8aa32310a3e219e7ee2dff23a4742c7b1.png)](docs/images/qwen-zimage/Gemini/Gemini_Generated_Image_633uuy633uuy633u_full_clean.png) |

Ces fichiers de sortie exacts ont été vérifiés avec les vérificateurs du fournisseur correspondant. Ce
résultat s’applique à ces fichiers, pas à chaque graine, image ou version de filigrane
future.

## Recettes courantes

### Supprimer chaque marque visible détectée```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` utilise `x,y,width,height` et peut être répété.

### Utiliser un backend de remplissage appris

L'extra `visible` utilise l'inpainting OpenCV lorsqu'aucun backend appris n'est installé.
Pour des arrière-plans plus difficiles, les extras du backend appris incluent les mêmes
dépendances de pixels automatiquement :```bash
uv tool install --force "remove-ai-watermarks[migan]"
remove-ai-watermarks visible image.png -o clean.png --backend migan
## 📦 Installation

### Option 1: Install via pip

```bash
pip install kitploit-tool

Option 2: Install from source

git clone https://github.com/example/kitploit-tool.git
cd kitploit-tool
pip install -r requirements.txt
python setup.py install

Option 3: Use Docker

docker pull kitploit/tool:latest
docker run -it --rm kitploit/tool:latest

🚀 Quick Start

After installation, you can start using the tool immediately:

kitploit-tool --help

To run a basic scan against a target:

kitploit-tool scan --target example.com --verbose

⚙️ Configuration

The tool reads its configuration from ~/.kitploit/config.yaml by default. You can override this with the --config flag:

kitploit-tool --config /path/to/custom/config.yaml

Example configuration file:

# Kitploit Tool Configuration
targets:
  - example.com
  - 192.168.1.0/24
scan:
  threads: 10
  timeout: 30
  stealth: false
output:
  format: json
  directory: ./results

🛠️ Usage Examples

Scanning a single host

kitploit-tool scan --target 10.0.0.1

Scanning multiple targets from a file

kitploit-tool scan --list targets.txt

Exporting results to a report

kitploit-tool report --format html --output report.html

🔧 Advanced Features

Plugin System

The tool supports a modular plugin architecture. Plugins can be placed in the ~/.kitploit/plugins/ directory and are automatically loaded at startup.

Custom Modules

You can write your own modules in Python and register them with the tool. See the Developer Guide for more details.


📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


🙏 Acknowledgements

  • Thanks to all contributors who have helped improve this tool.
  • Special thanks to the open-source security community for their continuous support.
uv tool install --force "remove-ai-watermarks[lama]"
remove-ai-watermarks visible image.png -o clean.png --backend lama
```
### Réduire l'utilisation de la mémoire CUDA```bash
remove-ai-watermarks invisible image.png -o clean.png \
  --cpu-offload --force
```
CPU offload réduit la pression sur la mémoire CUDA en déplaçant les composants du modèle entre le CPU
et le GPU, au prix de la vitesse.

### Traiter un répertoire```bash
remove-ai-watermarks batch ./images --mode visible
remove-ai-watermarks batch ./images --mode all
```
## Ce que l'outil peut reconnaître

La prise en charge des marques visibles comprend :

- le filigrane scintillant visible de Google Gemini et Nano Banana ;
- les étiquettes Doubao, le logotype Jimeng et la pastille `AI生成` en haut à gauche, Qwen, Kling AI,
  Yuanbao, Baidu, LiblibAI et RunningHub ;
- une variante calibrée du badge IA blanc Microsoft en haut à droite ;
- une variante calibrée de l'étiquette Samsung Galaxy AI.

L'inspection des métadonnées et de la provenance couvre C2PA, EXIF, XMP, IPTC, les paramètres
courants de générateur, les étiquettes AIGC TC260 de Chine et plusieurs signaux
propres aux fournisseurs. Des décodeurs optionnels ajoutent la prise en charge des filigranes
ouverts DWT-DCT et d'Adobe TrustMark.

La matrice de prise en charge exacte, y compris les limites importantes liées aux paramètres
régionaux et aux détecteurs, figure dans [signaux pris en charge](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/supported-signals.md). La
[galerie d'exemples synthétiques](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/data/fixtures/visible/README.md) contient un échantillon
canonique pour chaque marque d'image et de vidéo enregistrée.

## Comment cela fonctionne

La suppression des marques visibles suit trois étapes :

1. Détecter une marque enregistrée dans sa zone attendue.
2. Construire un masque autour de la marque.
3. Remplir uniquement la région masquée avec OpenCV, MI-GAN ou LaMa.

La suppression des métadonnées utilise un dépouillement adapté au format. La suppression des
métadonnées JPEG préserve la numérisation d'image encodée au lieu de la recompresser. Les valeurs
TC260 natives MP4/MOV sont effacées sans modifier les tailles de boîtes ni les décalages média.
Les autres conteneurs pris en charge utilisent leur chemin de métadonnées correspondant.

La suppression des marques invisibles est différente. Elle régénère l'image via un pipeline
de diffusion afin de perturber les filigranes dans les domaines des pixels et des fréquences.
Cela modifie l'image et ne peut pas garantir qu'un vérificateur propriétaire rejettera chaque
sortie.

Consultez [signaux pris en charge](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/supported-signals.md) et
[limitations connues](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/known-limitations.md) pour la frontière technique complète.

## API Python

L'API de suppression des marques visibles nécessite `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")
```
L'API de haut niveau accepte un chemin de fichier ou un tableau NumPy BGR. Pour les entrées par chemin, elle
lit également les métadonnées de provenance, préserve le canal alpha et peut supprimer les métadonnées IA du
résultat écrit.

Consultez le [guide de l'API Python](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/python-api.md) pour la suppression visible, le pipeline complet
`remove_all` et `remove_batch`, l'inspection de la provenance, le retrait des métadonnées et l'utilisation de la diffusion.

## ComfyUI

Le package séparé
[ComfyUI Remove AI Watermarks](https://github.com/wiltodelta/ComfyUI-remove-ai-watermarks)
fournit des nœuds pour la suppression visible, la détection, l'effacement de régions et la
suppression invisible.

## Limitations importantes

- Un signal local manquant signifie inconnu, pas propre. Les filigranes
  pixel propriétaires peuvent subsister après le retrait des métadonnées.
- La suppression visible reconstruit une petite région. Les résultats dépendent de l'arrière-plan
  et du backend de remplissage sélectionné.
- La suppression invisible modifie l'image entière et peut altérer les visages, le texte ou les détails
  fins.
- La suppression vidéo visible reconnaît le mot-symbole mobile Sora 2, le losange Veo actuel
  plus le texte `Veo` hérité, l'étiquette `AI` encadrée de Seedance et les étiquettes fixes
  Doubao, Dola, Hailuo AI et Kling AI. Elle ne reconnaît pas le tourbillon d'angle Sora Turbo
  plus ancien ni les mises en page non enregistrées de ces fournisseurs.
  Le backend OpenCV classique peut étaler les arrière-plans structurés ; utilisez MI-GAN ou
  LaMa lorsque la qualité de récupération compte.
- La régénération SynthID vidéo modifie la résolution, la fréquence d'images et le détail de l'image.
  Le profil fourni est certifié par oracle, mais aucun décodeur local public ne peut
  certifier une sortie arbitraire à l'exécution. Revérifiez les sorties d'importance inhabituelle
  après les changements de fournisseur.
- La suppression des filigranes invisibles nécessite CUDA. Tous les profils refusent tout autre
  périphérique à la construction plutôt que de retomber sur un périphérique incapable de les exécuter.
  La suppression visible, le retrait des métadonnées et `identify` fonctionnent toujours partout.
- Les systèmes de filigranes des fournisseurs peuvent changer. Validez les sorties importantes avec le
  vérificateur du fournisseur lui-même lorsqu'il est disponible.

La commande `video invisible` fournie utilise le profil certifié `noise_std=0.15`.
Le harnais de recherche compagnon `scripts/video_synthid_sweep.py` construit
un contrôle de ré-encodage apparié plus des candidats régénérés par VAE et laisse le
verdict du vérificateur vide :```bash
uv run --extra video --extra diffusion python scripts/video_synthid_sweep.py input.mp4 -o sweep/
```
Pour évaluer le coût réel d'une sortie, utilisez `scripts/video_fidelity_probe.py` :
le PSNR propre au moteur est mesuré avant le redimensionnement et l'encodage, donc seul
le probe voit l'image livrée.```bash
uv run --extra video python scripts/video_fidelity_probe.py input.mp4 input_clean.mp4
```
Le contrôle doit toujours être positif à SynthID avant qu’un candidat négatif ne puisse
compter comme preuve de suppression. Lors de la calibration à deux clips du 2026-07-29, les deux
contrôles correspondants étaient positifs dans le vérificateur SynthID intégré de Gemini ; le candidat
le plus fort était négatif sur les deux supports, tandis qu’un candidat plus faible était
négatif sur un seul. Un suivi contradictoire ultérieur qui demandait à Gemini ordinaire de
réinterpréter le résultat en pixels a renvoyé `UNAVAILABLE` ; ce suivi n’était pas une
nouvelle exécution du vérificateur et n’invalide pas les verdicts intégrés. Une vérification
complète du clip du 2026-07-31 sur un échantillon Veo public de huit secondes a constaté que `0.10` était toujours détecté
et que `0.15` n’était pas détecté, donc `0.15` est désormais la valeur par défaut certifiée. Les
empreintes reproductibles et les verdicts de cette vérification complète du clip — un support, deux
lignes — se trouvent dans `data/evaluations/video-synthid-oracle.csv`. La calibration
précédente à deux clips est uniquement narrative : ses verdicts n’ont pas été enregistrés dans un
manifeste suivi, donc considérez que la valeur par défaut certifiée repose sur les lignes du 2026-07-31.

## Documentation

Commencez par l’[index de la documentation](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/index.md).

- [Installation](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/installation.md)
- [Guide CLI](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/cli.md)
- [API Python](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/python-api.md)
- [Signaux pris en charge](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/supported-signals.md)
- [Limitations connues](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/known-limitations.md)
- [Notes sur le périmètre, la sécurité et les aspects juridiques](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/legal-and-safety.md)
- [Fonctionnement interne des modules](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/module-internals.md)
- [Publication et distribution](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/release-and-distribution.md)

Les notes de recherche et les expériences historiques sont répertoriées séparément dans l’
[index de la documentation](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/index.md). Elles expliquent les décisions passées mais ne
définissent pas l’API publique actuelle.

## Contribution

Installez l’environnement de développement et exécutez le portail du projet :```bash
uv sync --frozen --extra dev
bash maintain.sh
```
Voir [module internals](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/module-internals.md) avant de modifier un sous-système
avec des invariants documentés.

## Licence

[Apache 2.0](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/LICENSE). Copyright 2025-2026 wiltodelta.

Catégories