
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.
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.
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
| Objectif | Commande | GPU |
|---|---|---|
| Trouver les signaux de provenance et les filigranes | identify | Non |
| Classifier une photographie à partir des pixels (opt-in, pas la provenance) | classify | Non |
| Vérifier le SynthID OpenAI pris en charge à partir des pixels avec l'API distante officielle | verify-openai-synthid | Non |
| Supprimer les marques IA visibles connues | visible | Non |
| Effacer une région que vous sélectionnez | erase | Non |
| Supprimer les métadonnées IA | metadata | Non |
| Identifier la provenance vidéo prise en charge | video identify | Non |
| Supprimer les marques visibles et les métadonnées IA des vidéos | video all | Non |
| Supprimer les métadonnées IA des vidéos | video metadata | Non |
| Supprimer une marque IA visible enregistrée d'une vidéo | video visible | Non |
| Traiter un répertoire de vidéos | video batch | Dépend du mode |
| Supprimer le SynthID vidéo avec le profil VAE certifié | video invisible | Recommandé |
| Régénérer une image pour perturber les filigranes invisibles | invisible | Requis (CUDA) |
| Exécuter la suppression visible, invisible et des métadonnées | all | Recommandé |
| Traiter un répertoire | batch | Dé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
| Besoin | Installation |
|---|---|
| Inspection et suppression des métadonnées | remove-ai-watermarks |
| Classification IA-vs-appareil photo des photographies | remove-ai-watermarks[classify] |
| Vérification SynthID OpenAI distante officielle | remove-ai-watermarks[verify] |
| Détection et suppression visibles | remove-ai-watermarks[visible] |
| Traitement vidéo visible | remove-ai-watermarks[video] |
| Suppression du SynthID vidéo | remove-ai-watermarks[video,diffusion] |
| Détection DWT-DCT sans Torch | remove-ai-watermarks[detect] |
| Suppression d'image invisible (nécessite CUDA) | remove-ai-watermarks[qwen-zimage] |
| Chaque fonctionnalité de production disponible sur le Python actif | remove-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 |
| --- | --- |
|  |  |
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 |
| --- | --- |
| [](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) |
| Exemple Gemini avant | Exemple Gemini après |
| --- | --- |
| [](data/synthid/originals/Gemini_Generated_Image_633uuy633uuy633u.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.