Torna agli aggiornamenti
New releaseSep 4, 2026

remove-ai-watermarks v0.37.1

Rimuovi i watermark AI visibili e invisibili e i metadati di provenienza da immagini e video. Libreria Python e CLI per SynthID, C2PA, EXIF, IPTC, XMP e i comuni marchi dell'IA generativa.

Condividi

Rimuovere i watermark AI

Rimuovi i marchi di provenienza AI dalle immagini e dai video che hai generato tu stesso:

  • etichette visibili note come il watermark a scintilla di Google Gemini e i marchi testuali dei fornitori;
  • watermark invisibili a livello di pixel tramite interruzione diretta del formato locale o rigenerazione con diffusione;
  • C2PA, EXIF, XMP, IPTC e metadati AI correlati.

Il supporto video copre l'identificazione della provenienza, la pulizia completa di elementi visibili più metadati, le elaborazioni in batch di directory, la rimozione dei marchi visibili di Sora, Veo, Seedance, Doubao, Dola, Hailuo AI e Kling AI, e la rigenerazione VAE certificata da oracle per la rimozione di SynthID nei video.

raiw.cc esegue questa libreria come servizio ospitato, con la GPU inclusa e nulla da installare. La rimozione dei marchi visibili e dei metadati con output Standard fino a 12 MP è gratuita; la risoluzione originale superiore a 12 MP e la rimozione dei watermark invisibili sono a pagamento.

PyPI Python Downloads License Tests Sponsor skills.sh

Questo progetto è destinato a un uso lecito su contenuti di tua proprietà. Non è rivolto alle anteprime delle agenzie di stock o ad altri watermark che proteggono contenuti a pagamento di terze parti. Consulta ambito, sicurezza e note legali.

Scegli cosa vuoi fare

ObiettivoComandoGPU
Trovare segnali di provenienza e watermarkidentifyNo
Classificare una fotografia dai pixel (opt-in, non provenienza)classifyNo
Rimuovere marchi AI visibili notivisibleNo
Cancellare una regione selezionataeraseNo
Rimuovere i metadati AImetadataNo
Identificare la provenienza video supportatavideo identifyNo
Rimuovere marchi visibili e metadati AI dal videovideo allNo
Rimuovere i metadati AI dal videovideo metadataNo
Rimuovere un marchio AI visibile registrato dal videovideo visibleNo
Elaborare una directory di videovideo batchDipende dalla modalità
Applicare il profilo calibrato di rimozione SynthID sui pixel videovideo invisibleConsigliata
Rigenerare un'immagine per disturbare i watermark invisibiliinvisibleRichiesta (CUDA)
Eseguire la rimozione di elementi visibili, invisibili e metadatiallConsigliata
Elaborare una directorybatchDipende dalla modalità

Le dichiarazioni InvisMark di Microsoft Paint e Photos vengono indirizzate automaticamente alla rigenerazione dei pixel. Il comando all rimuove sia il watermark nascosto nei pixel sia il relativo manifest C2PA collegato; la sola rimozione dei metadati elimina unicamente il manifest. Un'API Python specializzata può ispezionare e disturbare il payload locale validato Watermarker.dll senza diffusione.

Modalità di installazione

EsigenzaInstallazione
Ispezione e rimozione dei metadatiremove-ai-watermarks
Classificazione fotografia AI-versus-fotocameraremove-ai-watermarks[classify]
Classificazione di esportazioni da sorgenti OpenAI/Google/sconosciuteremove-ai-watermarks[source-classify]
Rilevamento e rimozione dei marchi visibiliremove-ai-watermarks[visible]
Elaborazione video dei marchi visibiliremove-ai-watermarks[video]
Rimozione SynthID nei videoremove-ai-watermarks[video,diffusion]
Rilevamento DWT-DCT senza Torchremove-ai-watermarks[detect]
Disturbo diretto locale di Paint InvisMarkremove-ai-watermarks[pixels]
Rimozione invisibile nelle immagini (richiede CUDA)remove-ai-watermarks[qwen-zimage]
Tutte le funzionalità di produzione disponibili sul Python attivoremove-ai-watermarks[all]

Gli extra di livello inferiore e specializzati includono pixels, heif, trustmark, migan, lama, diffusion, classify-onnx e source-classify. La guida all'installazione documenta la loro esatta composizione delle dipendenze, la compatibilità con Python e i requisiti dei modelli.

Avvio rapido

Installa la CLI predefinita orientata ai metadati:```bash uv tool install remove-ai-watermarks

Ispeziona un'immagine:```bash
remove-ai-watermarks identify image.png

Per classificare una fotografia dai pixel (AI versus fotocamera, provider opzionale), installa l'extra e chiama classify. identify non lo avvia mai:```bash uv tool install --force "remove-ai-watermarks[classify]" remove-ai-watermarks classify image.png

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

Per un segnale leggero e con astensione di esportazione da fonte OpenAI/Google/sconosciuta dopo
la rimozione dei metadati, usa la API Python separata. Non è un rilevatore SynthID:```python
import remove_ai_watermarks as raiw

result = raiw.classify_source("image.png")
print(result.label, result.reason)

Installa remove-ai-watermarks[source-classify]. Guida: classificazione della pipeline dei sorgenti.

La provenienza firmata è la via supportata per SynthID e identify la legge. Non esiste un rilevatore locale di pixel SynthID nel pacchetto. La ricerca su un esperto di reticolo periodico è in scripts/synthid_runtime/ e synthid-detector-research.md.

Per la rimozione di watermark visibili, installa le dipendenze dei pixel:```bash uv tool install --force "remove-ai-watermarks[visible]"

Poi rimuovi un watermark visibile noto e i metadati AI:```bash
remove-ai-watermarks visible image.png -o clean.png

Rimuovi i metadati senza eseguire inpainting o diffusione visibili:```bash remove-ai-watermarks metadata image.png --remove -o clean.png

Senza `-o` questo comando sovrascrive il file sorgente sul posto.

Ispeziona o rimuovi i metadati AI da un file MP4, MOV, M4V, WebM, MKV, AVI o FLV:```bash
remove-ai-watermarks video metadata input.mp4 --check
remove-ai-watermarks video metadata input.mp4 --remove -o clean.mp4

Il comando video metadata non transcodifica flussi video o audio. A differenza del comando image sopra, quando -o è omesso scrive <source>_clean e preserva l'originale. L'ispezione di MP4 e MOV include il tag nativo TC260 AIGC in moov.udta.meta.keys/ilst, incluso un moov posizionato dopo il payload multimediale, più le varianti meta in formato QuickTime scritte dall'export iOS di Doubao (un box meta nudo come figlio diretto di moov, e una lista di metadati hdlr=mdir senza chiavi). Anche le voci con chiave workflow e prompt nella stessa struttura di lista di metadati vengono rilevate e rimosse, inclusi gli export di ComfyUI. L'ispezione di MKV e WebM legge il posizionamento normativo Segment.Tags.Tag.SimpleTag. AVI usa LIST/INFO/AIGC, mentre FLV usa script.onMetaData.AIGC. I formati non-ISOBMFF vengono rimuxati con stream copy per la rimozione.

Usa il percorso video orientato al prodotto per identificare o pulire un file:```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` rimuove un marchio visibile registrato stabile quando presente e rimuove sempre
i metadati AI verificati. Se nessuno dei due segnali viene trovato, scrive comunque un
passthrough nello stesso contenitore, così i chiamanti dell'applicazione ottengono un contratto
di output prevedibile. La rimozione proprietaria di video invisibili è esclusa per impostazione predefinita.
`--invisible` attiva il profilo SynthID video con perdita, certificato dall'oracolo.

Elabora una directory con lo stesso contratto:```bash
remove-ai-watermarks video batch ./videos --mode all

Rimuovi un watermark video visibile supportato:```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

Questo percorso analizza l'intera sequenza prima di modificare i pixel. Accetta solo un
marchio che si ripete in una posizione stabile tra fotogrammi adiacenti, poi riutilizza
gli stessi backend di riempimento OpenCV, MI-GAN o LaMa come per la rimozione di immagini. L'audio viene copiato
senza ricodifica ed è lasciato raggiungere la sua fine naturale; il flusso video
viene transcodificato perché i suoi pixel cambiano. Per impostazione predefinita, un passaggio protetto di flusso ottico
allinea al movimento il riempimento accettato precedente e lo fonde solo quando
il contesto sorgente vicino è d'accordo; usa `--no-temporal-consistency` per disabilitarlo.
L'encoder preserva il campionamento cromatico sorgente a 8 bit supportato,
i tag di colore e la scala temporale delle tracce MP4/MOV invece
di affidarsi ai valori predefiniti impliciti raw-BGR di ffmpeg. Gli intervalli di fotogrammi variabili sono
preservati attraverso un bridge NUT in memoria con timestamp invece di essere appiattiti
alla frequenza media dei fotogrammi. I timestamp di inizio sorgente diversi da zero vengono mantenuti
insieme all'offset audio copiato. Il valore predefinito `--mark auto`
analizza tutti i provider in un'unica passata di decodifica e seleziona la prima corrispondenza stabile
nell'ordine di specificità mostrato di seguito. Passa un marchio esplicito per limitare il rilevamento
a un solo provider.
Sora copre la mascotte Sora 2 in movimento e il wordmark. Veo copre sia l'attuale
diamante a quattro punti sia il testo legacy `Veo`. Seedance copre l'etichetta fissa incorniciata
`AI`, Dola copre il testo fisso `Dola AI`, Hailuo AI copre l'etichetta composita
`MINIMAX | hailuo AI`, e Kling AI copre l'etichetta in basso a destra `KLING AI` o
`KlingAI` con il suo suffisso di versione. Una codifica completata viene pubblicata
atomicamente. Nessun output viene scritto quando non viene trovato alcun marchio stabile.
Input HDR, PQ/HLG e superiori a 8 bit vengono rifiutati prima della codifica anziché
essere ridotti silenziosamente attraverso il confine BGR a 8 bit di OpenCV.

Applica il profilo calibrato di rimozione SynthID per pixel video:```bash
uv tool install --force "remove-ai-watermarks[video,diffusion]"
remove-ai-watermarks video invisible input.mp4 -o clean.mp4

Questo percorso rigenera la sequenza completa con un unico campo di rumore latente condiviso nel tempo, copia l'audio completo, rimuove i metadati di origine e pubblica la codifica completata in modo atomico. Il profilo predefinito noise_std=0.15 ha superato sia la calibrazione a due portanti sia un controllo completo dell'oracolo Veo pubblico di otto secondi. Google non pubblica un decoder locale, quindi un controllo fresco del provider rimane utile per file insolitamente importanti o dopo modifiche al provider, ma non è uno stato di risultato del prodotto. La CLI quindi descrive la rigenerazione dei pixel video invece di rivendicare un verdetto SynthID per file, e segnala la filigrana audio copiata come UNVERIFIED.

Per la rimozione invisibile della filigrana tramite la CLI o l'API di alto livello, installare l'extra qwen-zimage. È richiesta una GPU NVIDIA: tutti i profili di diffusione sono solo CUDA, e non esiste un fallback CPU o MPS. L'API locale specializzata Paint utilizza l'extra pixels senza CUDA.```bash uv tool install --force "remove-ai-watermarks[qwen-zimage]" remove-ai-watermarks invisible image.png -o clean.png

Se i rilevatori locali non riescono a confermare la presenza di una filigrana invisibile ma sai che l'immagine proviene da un generatore AI, aggiungi `--force`:```bash
remove-ai-watermarks invisible image.png -o clean.png --force

Le immagini ad alta densità tipografica possono optare per il post-pass sperimentale di testo verificato. Accetta stringhe e riquadri di riga revisionati manualmente oppure un manifest geometrico verificato dall'operatore; non considera mai l'output OCR grezzo come ground truth né viene eseguito automaticamente:```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

Consulta la [guida CLI](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/cli.md#restore-operator-verified-text) per lo schema del manifest, le restrizioni di compatibilità e le avvertenze sull'oracle.

Consulta la [guida all'installazione](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/installation.md) per Homebrew, uv, funzionalità opzionali e configurazione di sviluppo.

## Esempi

### Marchio Gemini visibile

| Prima | Dopo |
| --- | --- |
| ![Immagine con una filigrana Gemini visibile](https://assets.kitploit.com/production/public/readmes/7369/4f6643f46057e4a4ec503f5bf0daf7243768915090f2d7fc5ac183c2d928c5ca.png) | ![Immagine dopo la rimozione della filigrana visibile](https://assets.kitploit.com/production/public/readmes/7369/45193ef965a27342b183a1834b01ef812f653da2ec356a81fce1aed79f1ef814.png) |

Il raster `after` è generato dal raster `before` tracciato tramite il percorso pubblico:```bash
uv run remove-ai-watermarks visible demo_banana_before.png \
  --backend cv2 -o demo_banana_after.png

Rimozione invisibile di alta qualità

qwen-zimage è il profilo predefinito: un passaggio Qwen-Image-2512 Lightning sotto Canny ControlNet, seguito dalla riparazione Z-Image mascherata con SAM di qualsiasi volto rilevato. L'alternativa, sdxl-zimage, sostituisce lo stadio globale con SDXL e mantiene lo stesso stadio per i volti. Un terzo profilo, chroma-zimage, utilizza il passaggio globale Chroma1 con licenza Apache-2.0 con i propri limiti minimi specifici del fornitore; consultare docs/chroma1-engine-research.md per la calibrazione. --pipeline auto seleziona sdxl-zimage per Google, chroma-zimage per Microsoft e qwen-zimage in tutti gli altri casi. Tutti funzionano solo su CUDA.```bash uv tool install --force "remove-ai-watermarks[qwen-zimage]" remove-ai-watermarks invisible image.png -o clean.png --force

| Esempio OpenAI prima | Esempio OpenAI dopo |
| --- | --- |
| [![Griglia ritratti OpenAI prima 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) | [![Griglia ritratti OpenAI dopo 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) |

| Esempio Gemini prima | Esempio Gemini dopo |
| --- | --- |
| [![Cartello Gemini prima qwen-zimage](https://assets.kitploit.com/production/public/readmes/7369/4affd7f27767a445db6abf741355743ba8d95108ad922c9fff045feed8492236.png)](data/synthid/originals/Gemini_Generated_Image_633uuy633uuy633u.png) | [![Cartello Gemini dopo qwen-zimage](https://assets.kitploit.com/production/public/readmes/7369/42858417874f6cd8bc7c9bdb39f6bde8aa32310a3e219e7ee2dff23a4742c7b1.png)](docs/images/qwen-zimage/Gemini/Gemini_Generated_Image_633uuy633uuy633u_full_clean.png) |

Questi esatti file di output sono stati verificati con i verificatori del provider corrispondente. Il
risultato si applica a questi file, non a ogni seed, immagine o futura versione
di watermark.

## Ricette comuni

### Rimuovere ogni marchio visibile rilevato```bash
remove-ai-watermarks visible image.png -o clean.png

Il valore predefinito --mark auto controlla tutti i mark visibili registrati e rimuove ogni corrispondenza. Se il mark è visibile a te ma il rilevatore non lo individua, seleziona la sua regione esplicitamente:```bash remove-ai-watermarks erase image.png
--region 1640,1930,400,100
-o clean.png

`--region` usa `x,y,width,height` e può essere ripetuto.

### Usare un backend di riempimento appreso

L'extra `visible` usa l'inpainting di OpenCV quando non è installato alcun backend appreso.
Per sfondi più difficili, gli extra del backend appreso includono automaticamente
le stesse dipendenze a livello di pixel:```bash
uv tool install --force "remove-ai-watermarks[migan]"
remove-ai-watermarks visible image.png -o clean.png --backend migan

Utilizzo

python3 CVE-2025-55182.py -u <URL> -c <COMMAND>

Esempi

# Esegui il comando 'id' sul server di destinazione
python3 CVE-2025-55182.py -u http://target.com -c "id"

# Esegui un comando personalizzato
python3 CVE-2025-55182.py -u http://target.com -c "whoami"

# Specifica un percorso personalizzato
python3 CVE-2025-55182.py -u http://target.com -p /custom/path -c "ls -la"

Come funziona

  1. Rilevamento dell'endpoint: tenta di individuare un endpoint server action valido
  2. Costruzione del payload: crea un payload multipart form-data con la struttura richiesta
  3. Iniezione del comando: incorpora il comando all'interno del payload
  4. Invio della richiesta: invia la richiesta POST all'endpoint di destinazione
  5. Analisi della risposta: estrae l'output del comando dalla risposta

Requisiti

  • Python 3.6+
  • Libreria requests

Installa le dipendenze:

pip install requests

Mitigazione

Per proteggersi dalla CVE-2025-55182:

  1. Aggiorna React: esegui l'aggiornamento all'ultima versione patchata
  2. Aggiorna Next.js: esegui l'aggiornamento all'ultima versione patchata
  3. Valida l'input: implementa una rigorosa validazione dell'input per tutti i dati dei form
  4. Monitora i log: controlla i log del server per attività sospette
  5. WAF: implementa regole WAF per rilevare tentativi di iniezione di comandi

Riferimenti

Esclusione di responsabilità

Questo strumento è fornito solo a scopo educativo e per test di sicurezza autorizzati. Gli autori non sono responsabili per qualsiasi uso improprio o danno causato da questo software. Usalo in modo responsabile e solo su sistemi che possiedi o per cui hai un'autorizzazione esplicita a testare.

Licenza

Questo progetto è concesso in licenza sotto la Licenza MIT - consulta il file LICENSE per i dettagli.

Riconoscimenti

  • Grazie alla comunità di sicurezza per la ricerca e la divulgazione
  • Riferimenti alle divulgazioni originali e ai ricercatori```bash uv tool install --force "remove-ai-watermarks[lama]" remove-ai-watermarks visible image.png -o clean.png --backend lama
### Ridurre l'uso della memoria CUDA```bash
remove-ai-watermarks invisible image.png -o clean.png \
  --cpu-offload --force

L'offload sulla CPU riduce la pressione sulla memoria CUDA spostando i componenti del modello tra CPU e GPU, a scapito della velocità.

Elaborare una directory```bash

remove-ai-watermarks batch ./images --mode visible remove-ai-watermarks batch ./images --mode all

## Cosa può riconoscere lo strumento

Il supporto per i watermark visibili include:

- watermark a scintilla visibile di Google Gemini e Nano Banana;
- Doubao, il wordmark Jimeng e la pillola `AI生成` in alto a sinistra, Qwen, Kling AI,
  Yuanbao, Baidu, il wordmark in basso al centro di LiblibAI e la pillola compatta in alto a sinistra,
  ed etichette RunningHub;
- una variante calibrata del badge AI bianco in alto a destra di Microsoft;
- una variante calibrata dell'etichetta Samsung Galaxy AI.

L'ispezione dei metadati e della provenienza copre C2PA, EXIF, XMP, IPTC, parametri
generatori comuni nei contenitori di immagini e video, etichette AIGC TC260 cinesi,
e diversi segnali specifici dei fornitori. Decoder opzionali aggiungono il supporto per
watermark DWT-DCT aperti e Adobe TrustMark.

La matrice di supporto esatta, incluse importanti limitazioni su locale e rilevatori, si trova
in [supported signals](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/supported-signals.md). La
[galleria di esempi sintetici](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/data/fixtures/visible/README.md) contiene un campione
canonico per ogni marchio registrato di immagini e video.

## Come funziona

La rimozione visibile segue tre passaggi:

1. Rilevare un marchio registrato nella sua area prevista.
2. Costruire una maschera attorno al marchio.
3. Riempire solo la regione mascherata con OpenCV, MI-GAN o LaMa.

La rimozione dei metadati utilizza uno stripping consapevole del formato. La rimozione dei metadati JPEG preserva
la scansione dell'immagine codificata invece di ricomprimerla. I valori nativi TC260 di MP4/MOV
e i parametri di generazione con chiave vengono azzerati senza modificare le dimensioni dei box o
gli offset dei media. Gli altri contenitori supportati utilizzano il corrispondente percorso
dei metadati.

La rimozione invisibile tramite CLI e API di alto livello rigenera l'immagine attraverso
una pipeline di diffusione. I chiamanti specializzati possono invece decodificare e disturbare
il formato localmente identificato positivamente di Microsoft Paint con modifiche ai pixel molto più piccole.
Nessuno dei due percorsi può garantire che ogni verificatore proprietario rifiuti ogni output.

Vedi [supported signals](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/supported-signals.md) e
[known limitations](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/known-limitations.md) per il confine tecnico completo.

## API Python

L'API di rimozione visibile richiede `remove-ai-watermarks[visible]`.```python
import remove_ai_watermarks as raiw

result, removed = raiw.remove_visible("watermarked.png", "clean.png")
print(removed)

report = raiw.remove_visible_detailed("watermarked.png", "clean.png")
print(report.status)  # cleaned | partial | unvalidated | no_watermark

complete = raiw.remove_all("watermarked.png", "clean.png")
print(complete.visible_status, complete.visible_marks)

images = raiw.remove_batch("images", "images_clean", mode="visible")
for item in images.items:
    print(item.source, item.visible_status, item.visible_marks)

provenance = raiw.identify_video("input.mp4")
report = raiw.inspect_video_metadata("input.mp4")
complete = raiw.remove_video_all("input.mp4", "clean.mp4")
print(complete.visual_invisible_action, complete.audio.watermark_status)
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")
print(synthid_cleaned.visual_invisible_action, synthid_cleaned.audio.watermark_status)
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 di alto livello accetta un percorso di file o un array NumPy BGR. Per gli input da percorso legge anche i metadati di provenienza, preserva l'alpha e può rimuovere i metadati AI dal risultato scritto.

Consulta la guida all'API Python per la rimozione visibile, la pipeline completa remove_all e remove_batch, l'ispezione della provenienza, la rimozione dei metadati e l'utilizzo con la diffusione.

Agent skill

Gli agenti di codifica possono installare la skill pubblicata e pilotare questa CLI:```bash npx skills add wiltodelta/remove-ai-watermarks

Claude Code può aggiungere questo repository come marketplace di plugin:```text
/plugin marketplace add wiltodelta/remove-ai-watermarks
/plugin install remove-ai-watermarks@remove-ai-watermarks

La skill rifiuta i marchi di agenzie di stock e altri asset a pagamento di terze parti. Vedi la guida alla skill dell'agente.

ComfyUI

Il pacchetto separato ComfyUI Remove AI Watermarks fornisce nodi per la rimozione visibile, il rilevamento, la cancellazione di regioni e la rimozione invisibile.

Limitazioni importanti

  • Un segnale locale mancante significa sconosciuto, non pulito. Le filigrane proprietarie a livello di pixel possono rimanere dopo che i metadati sono stati rimossi.
  • La rimozione visibile ricostruisce una piccola regione. I risultati dipendono dallo sfondo e dal backend di riempimento selezionato.
  • La rimozione invisibile modifica l'intera immagine e può alterare volti, testo o dettagli fini.
  • La rimozione visibile dai video riconosce il wordmark mobile Sora 2, il diamante Veo attuale più il testo legacy Veo, l'etichetta AI incorniciata di Seedance e le etichette fisse Doubao, Dola, Hailuo AI e Kling AI. Non riconosce il vecchio vortice nell'angolo di Sora Turbo né i layout non registrati di quei fornitori. Il backend classico OpenCV può sbavare gli sfondi strutturati; usa MI-GAN o LaMa quando la qualità del recupero è importante.
  • La rigenerazione di Video SynthID cambia risoluzione, frame rate e dettaglio dell'immagine. Il profilo fornito è certificato da oracle, ma nessun decoder locale pubblico può certificare un output arbitrario a runtime. Ricontrolla gli output particolarmente importanti dopo modifiche del fornitore.
  • La rimozione delle filigrane invisibili tramite la CLI e l'API di alto livello richiede CUDA. Tutti i profili di diffusione rifiutano qualsiasi altro dispositivo in fase di costruzione anziché ripiegare su uno che non possa eseguirli. L'API locale specializzata Paint, la rimozione visibile, la rimozione dei metadati e identify funzionano senza CUDA.
  • I sistemi di filigrana dei fornitori possono cambiare. Convalida gli output importanti con il verificatore del fornitore stesso, quando disponibile.

Il comando fornito video invisible usa il profilo certificato noise_std=0.15. Il banco di ricerca complementare scripts/video_synthid_sweep.py costruisce un controllo di ricodifica abbinato più candidati rigenerati via VAE e lascia vuoto il verdetto del verificatore:```bash uv run --extra video --extra diffusion python scripts/video_synthid_sweep.py input.mp4 -o sweep/

Per valutare quanto sia effettivamente costato un output, usa `scripts/video_fidelity_probe.py`:
il PSNR del motore stesso viene misurato dopo il ridimensionamento dell'input e prima della codifica
finale, quindi solo la sonda vede l'immagine consegnata.```bash
uv run --extra video python scripts/video_fidelity_probe.py input.mp4 input_clean.mp4

Il controllo deve comunque risultare SynthID-positivo prima che un candidato negativo possa valere come prova di rimozione. Nella calibrazione a due clip del 2026-07-29, entrambi i controlli abbinati sono risultati positivi nel verificatore SynthID integrato di Gemini; il candidato più forte è risultato negativo su entrambi i carrier, mentre un candidato più debole è risultato negativo su uno solo. Un successivo follow-up avversariale che ha chiesto a Gemini ordinario di reinterpretare il risultato a livello di pixel ha restituito UNAVAILABLE; quel follow-up non era una ri-esecuzione del verificatore e non invalida i verdetti integrati. Un controllo sull'intera clip del 2026-07-31 su un campione Veo pubblico di otto secondi ha rilevato che 0.10 era ancora rilevato e 0.15 non rilevato, quindi 0.15 è ora il default certificato. Gli hash riproducibili e i verdetti per quel controllo sull'intera clip -- un carrier, due righe -- si trovano in data/evaluations/video-synthid-oracle.csv. La precedente calibrazione a due clip è solo narrativa: i suoi verdetti non sono stati registrati in un manifest tracciato, quindi considera il default certificato come basato sulle righe del 2026-07-31.

Documentazione

Inizia dall'indice della documentazione.

Le note di ricerca e gli esperimenti storici sono elencati separatamente nell'indice della documentazione. Spiegano decisioni passate ma non definiscono l'attuale API pubblica.

Contribuire

Installa l'ambiente di sviluppo ed esegui il gate del progetto:```bash uv sync --frozen --extra dev bash maintain.sh

Consulta [module internals](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/module-internals.md) prima di modificare un sottosistema
con invarianti documentate.

## Licenza

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

Categorie