Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
remove-ai-watermarks — Elimina marcas de agua de IA visibles e invisibles y metadatos de procedencia de imágenes y vídeo. Biblioteca de Python y CLI para SynthID, C2PA, EXIF, IPTC, XMP y marcas comunes de IA generativa. | Kitploit
Herramientas/GitHubGitHub/wiltodelta/remove-ai-watermarks
Utilidades de Propósito GeneralOSINT (Inteligencia de Fuentes Abiertas)Análisis ForenseEsteganografíaRecuperación de DatosForensia DigitalCriptografíaPrivacidadAprendizaje y Educación
GitHubwiltodelta/remove-ai-watermarks

remove-ai-watermarks

Elimina marcas de agua de IA visibles e invisibles y metadatos de procedencia de imágenes y vídeo. Biblioteca de Python y CLI para SynthID, C2PA, EXIF, IPTC, XMP y marcas comunes de IA generativa.

Ver RepositorioSitio web
4.5k42420hace 14h 27mRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Eliminar Marcas de Agua de IA

Elimina marcas de procedencia de IA de imágenes y videos que hayas generado tú mismo:

  • etiquetas visibles conocidas, como la marca de agua de destello de Google Gemini y las marcas de texto del proveedor;
  • marcas de agua invisibles de píxeles mediante regeneración por difusión;
  • metadatos de IA C2PA, EXIF, XMP, IPTC y relacionados.

El soporte de video cubre la identificación de procedencia, la limpieza completa de marcas visibles más metadatos, lotes de directorios, eliminación de marcas visibles de Sora, Veo, Seedance, Doubao, Dola, Hailuo AI y Kling AI, y regeneración VAE certificada por oráculo para la eliminación de SynthID en video.

raiw.cc ejecuta esta biblioteca como un servicio alojado, con la GPU incluida y sin nada que instalar. La eliminación de marcas visibles y metadatos en salida Estándar de hasta 12 MP es gratuita allí; la resolución original superior a 12 MP y la eliminación de marcas de agua invisibles son de pago.

PyPI Python Downloads License

Tests
Sponsor

Este proyecto es para uso legal en contenido que posees. No está dirigido a vistas previas de agencias de stock ni a otras marcas de agua que protegen contenido de pago de terceros. Consulta las notas de alcance, seguridad y legales.

Elige lo que quieres hacer

ObjetivoComandoGPU
Encontrar señales de procedencia y marcas de aguaidentifyNo
Clasificar una fotografía a partir de píxeles (opt-in, no procedencia)classifyNo
Verificar SynthID de OpenAI compatible desde píxeles con la API remota oficialverify-openai-synthidNo
Eliminar marcas visibles de IA conocidasvisibleNo
Borrar una región que seleccioneseraseNo
Eliminar metadatos de IAmetadataNo
Identificar procedencia de video compatiblevideo identifyNo
Eliminar marcas visibles y metadatos de IA de videovideo allNo
Eliminar metadatos de IA de videovideo metadataNo
Eliminar una marca visible de IA registrada de videovideo visibleNo
Procesar un directorio de videosvideo batchDepende del modo
Eliminar SynthID de video con el perfil VAE certificadovideo invisibleRecomendado
Regenerar una imagen para alterar marcas de agua invisiblesinvisibleRequerida (CUDA)
Ejecutar eliminación visible, invisible y de metadatosallRecomendado
Procesar un directoriobatchDepende del modo

Las declaraciones InvisMark de Microsoft Paint y Photos se enrutan automáticamente a la regeneración de píxeles. El comando all elimina tanto la marca de agua de píxeles oculta como su manifiesto C2PA vinculado; la eliminación de metadatos por sí sola elimina solo el manifiesto.

Modos de instalación

NecesidadInstalar
Inspección y eliminación de metadatosremove-ai-watermarks
Clasificación de fotografía IA-versus-cámararemove-ai-watermarks[classify]
Verificación remota oficial de SynthID de OpenAIremove-ai-watermarks[verify]
Detección y eliminación visibleremove-ai-watermarks[visible]
Procesamiento de video visibleremove-ai-watermarks[video]
Eliminación de SynthID en videoremove-ai-watermarks[video,diffusion]
Detección DWT-DCT sin Torchremove-ai-watermarks[detect]
Eliminación de imagen invisible (requiere CUDA)remove-ai-watermarks[qwen-zimage]
Cada función de producción disponible en el Python activoremove-ai-watermarks[all]

Los extras de nivel inferior y especializados incluyen pixels, heif, trustmark, migan, lama y diffusion. La guía de instalación documenta su composición exacta de dependencias, compatibilidad con Python y requisitos de modelos.

Inicio rápido

Instala la CLI predeterminada centrada en metadatos:```bash uv tool install remove-ai-watermarks

root@kitploit:~
Inspecta una imagen:```bash
remove-ai-watermarks identify image.png

Para clasificar una fotografía a partir de píxeles (IA frente a cámara, proveedor opcional), instala el extra y llama a classify. identify nunca lo inicia:```bash uv tool install --force "remove-ai-watermarks[classify]" remove-ai-watermarks classify image.png

root@kitploit:~
Guía: [clasificación de píxeles de fotos](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/photo-classify.md).

La procedencia firmada es la ruta compatible para SynthID y `identify` la lee.
No hay un detector de píxeles SynthID local en el paquete. La investigación sobre un
experto en retícula periódica está en `scripts/synthid_runtime/` y
[synthid-detector-research.md](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/synthid-detector-research.md).

Para imágenes OpenAI compatibles, el verificador oficial opcional proporciona un
veredicto de marca de agua de píxeles:```bash
uv tool install --force "remove-ai-watermarks[verify]"
remove-ai-watermarks verify-openai-synthid image.png --acknowledge-upload

El comando elimina los metadatos de procedencia de IA de una copia temporal, verifica que los píxeles decodificados no hayan cambiado, sube solo esa copia a OpenAI y consume únicamente la respuesta independiente de SynthID. Nunca se ejecuta implícitamente desde identify. Se requieren una clave de API, acceso al endpoint y confirmación explícita de la subida.

Para la eliminación de marcas de agua visibles, instala las dependencias de píxeles:```bash uv tool install --force "remove-ai-watermarks[visible]"

root@kitploit:~
Entonces elimina una marca visible conocida y los metadatos de IA:```bash
remove-ai-watermarks visible image.png -o clean.png

Strip metadatos sin ejecutar inpainting o difusión visibles:```bash remove-ai-watermarks metadata image.png --remove -o clean.png

root@kitploit:~
Sin `-o`, este comando sobrescribe el archivo fuente en su lugar.

Inspecciona o elimina los metadatos de IA de un archivo 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

El comando video metadata no transcodifica flujos de video o audio. A diferencia del comando de imagen anterior, cuando se omite -o, escribe <source>_clean y preserva el original. La inspección de MP4 y MOV incluye la etiqueta nativa TC260 AIGC en moov.udta.meta.keys/ilst, incluido un moov colocado después de la carga útil del medio, además de las variantes meta de formato QuickTime que la exportación iOS de Doubao escribe (una caja meta desnuda como hijo directo de moov, y una lista de metadatos hdlr=mdir sin clave). La inspección de MKV y WebM lee la ubicación normativa Segment.Tags.Tag.SimpleTag. AVI usa LIST/INFO/AIGC, mientras que FLV usa script.onMetaData.AIGC. Los formatos no ISOBMFF se remuxean con copia de flujo para su eliminación.

Utilice la ruta de video orientada al producto para identificar o limpiar un archivo:```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

root@kitploit:~
`video all` elimina una marca visible registrada estable cuando está presente y siempre
elimina los metadatos verificados de IA. Si no se encuentra ninguna de las dos señales, igualmente escribe un
passthrough en el mismo contenedor, de modo que los llamadores de la aplicación obtienen un contrato de salida predecible.
La eliminación de video invisible propietario está excluida por defecto.
`--invisible` opta por el perfil SynthID de video con pérdida y certificado por oracle.

Procesa un directorio con el mismo contrato:```bash
remove-ai-watermarks video batch ./videos --mode all

Elimina una marca de video visible compatible:```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

root@kitploit:~
Esta ruta escanea la secuencia completa antes de cambiar los píxeles. Solo acepta una
marca que se repite en una posición estable entre fotogramas adyacentes, y luego reutiliza
los mismos backends de relleno OpenCV, MI-GAN o LaMa que la eliminación de imágenes. El audio se copia
sin recodificar y se permite que llegue a su fin natural; el flujo de video
se transcodifica porque sus píxeles cambian. De forma predeterminada, una pasada de flujo óptico
con protección alinea temporalmente el relleno aceptado anterior y lo combina solo cuando el
contexto de origen cercano coincide; usa `--no-temporal-consistency` para deshabilitarlo.
El codificador conserva el muestreo de croma
de origen de 8 bits compatible, las etiquetas de color y la escala de tiempo de las pistas MP4/MOV
en lugar de depender de los valores predeterminados implícitos de BGR sin procesar de ffmpeg. Los intervalos de fotogramas
variables se conservan a través de un puente NUT en memoria con marcas de tiempo en lugar de aplanarse
a la velocidad de fotogramas promedio. Las marcas de tiempo de inicio de origen distintas de cero se conservan
junto con el desplazamiento de audio copiado. El `--mark auto` predeterminado
escanea todos los proveedores en una sola pasada de decodificación y selecciona la primera coincidencia estable en
el orden de especificidad que se muestra a continuación. Pasa una marca explícita para restringir la detección
a un solo proveedor.
Sora cubre la mascota móvil Sora 2 y la marca denominativa. Veo cubre tanto el actual
diamante de cuatro puntas como el texto heredado `Veo`. Seedance cubre la etiqueta fija `AI`
en un recuadro, Dola cubre el texto fijo `Dola AI`, Hailuo AI cubre la etiqueta compuesta
`MINIMAX | hailuo AI`, y Kling AI cubre la etiqueta `KLING AI`
en la esquina inferior derecha con su sufijo de versión. Una codificación completada se publica de forma atómica. No
se escribe ninguna salida cuando no se encuentra una marca estable.
Las entradas HDR, PQ/HLG y de más de 8 bits se rechazan antes de la codificación en lugar de
reducirse silenciosamente a través del límite BGR de 8 bits de OpenCV.

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

Esta ruta regenera la secuencia completa con un único campo de ruido latente compartido a lo largo del tiempo, copia el audio completo, elimina los metadatos de origen y publica la codificación completada de forma atómica. El perfil predeterminado noise_std=0.15 superó tanto la calibración de dos portadoras como una verificación completa del oráculo público de Veo de ocho segundos. Google no publica un decodificador local, por lo que una verificación nueva del proveedor sigue siendo útil para archivos inusualmente importantes o después de cambios de proveedor, pero no es un estado de resultado de producto.

Para la eliminación de marcas de agua invisibles, instala el extra qwen-zimage. Se requiere una GPU NVIDIA: todos los perfiles son solo CUDA y no existe una alternativa para CPU o MPS.```bash uv tool install --force "remove-ai-watermarks[qwen-zimage]" remove-ai-watermarks invisible image.png -o clean.png

root@kitploit:~
Si los detectores locales no pueden confirmar una marca de agua invisible pero sabes que la
imagen proviene de un generador de IA, añade `--force`:```bash
remove-ai-watermarks invisible image.png -o clean.png --force

Las imágenes con mucho texto pueden optar por el pase posterior experimental de texto verificado. Acepta cadenas revisadas manualmente y cuadros de línea, o un manifiesto de solo geometría verificado por un operador; nunca trata la salida OCR sin procesar como verdad absoluta ni se ejecuta automáticamente:```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

root@kitploit:~
Consulta la [guía de CLI](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/cli.md#restore-operator-verified-text) para conocer el esquema del manifiesto, las restricciones de compatibilidad y las advertencias sobre el oráculo.

Consulta la [guía de instalación](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/installation.md) para Homebrew, uv, funciones opcionales y configuración de desarrollo.

## Ejemplos

### Marca de agua visible de Gemini

| Antes | Después |
| --- | --- |
| ![Imagen con una marca de agua visible de Gemini](https://assets.kitploit.com/production/public/readmes/7369/4f6643f46057e4a4ec503f5bf0daf7243768915090f2d7fc5ac183c2d928c5ca.png) | ![Imagen después de eliminar la marca de agua visible](https://assets.kitploit.com/production/public/readmes/7369/45193ef965a27342b183a1834b01ef812f653da2ec356a81fce1aed79f1ef814.png) |

El ráster `after` se genera a partir del ráster `before` rastreado mediante la ruta pública:```bash
uv run remove-ai-watermarks visible demo_banana_before.png \
  --backend cv2 -o demo_banana_after.png

Eliminación invisible de alta calidad

qwen-zimage es el perfil predeterminado: una pasada Qwen-Image-2512 Lightning bajo ControlNet Canny, seguida de una reparación Z-Image enmascarada por SAM de cualquier rostro detectado. La alternativa, sdxl-zimage, intercambia la etapa global por SDXL y mantiene la misma etapa de rostro. Un tercer perfil, chroma-zimage, utiliza la pasada global Chroma1 con licencia Apache-2.0 con sus propios suelos planos de proveedor; consulta docs/chroma1-engine-research.md para la calibración. --pipeline auto elige chroma-zimage para procedencia de OpenAI y Microsoft y qwen-zimage en caso contrario. Todos son solo CUDA.```bash uv tool install --force "remove-ai-watermarks[qwen-zimage]" remove-ai-watermarks invisible image.png -o clean.png --force

root@kitploit:~
| Ejemplo de OpenAI antes | Ejemplo de OpenAI después |
| --- | --- |
| [![Cuadrícula de retratos de OpenAI antes de 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) | [![Cuadrícula de retratos de OpenAI después de 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) |

| Ejemplo de Gemini antes | Ejemplo de Gemini después |
| --- | --- |
| [![Firma de Gemini antes de qwen-zimage](https://assets.kitploit.com/production/public/readmes/7369/4affd7f27767a445db6abf741355743ba8d95108ad922c9fff045feed8492236.png)](data/synthid/originals/Gemini_Generated_Image_633uuy633uuy633u.png) | [![Firma de Gemini después de qwen-zimage](https://assets.kitploit.com/production/public/readmes/7369/42858417874f6cd8bc7c9bdb39f6bde8aa32310a3e219e7ee2dff23a4742c7b1.png)](docs/images/qwen-zimage/Gemini/Gemini_Generated_Image_633uuy633uuy633u_full_clean.png) |

Estos archivos de salida exactos se verificaron con los verificadores del proveedor correspondiente. Ese
resultado se aplica a estos archivos, no a cada semilla, imagen o versión futura de la
marca de agua.

## Recetas comunes

### Eliminar toda marca visible detectada```bash
remove-ai-watermarks visible image.png -o clean.png

El --mark auto predeterminado revisa todas las marcas visibles registradas y elimina cada coincidencia. Si la marca es visible para ti pero el detector no la detecta, selecciona su región explícitamente:```bash remove-ai-watermarks erase image.png
--region 1640,1930,400,100
-o clean.png

root@kitploit:~
`--region` usa `x,y,width,height` y puede repetirse.

### Usar un backend de relleno aprendido

El extra `visible` usa el algoritmo de inpaint de OpenCV cuando no hay un backend aprendido instalado.
Para fondos más difíciles, los extras del backend aprendido incluyen las mismas
dependencias de píxeles automáticamente:```bash
uv tool install --force "remove-ai-watermarks[migan]"
remove-ai-watermarks visible image.png -o clean.png --backend migan

Aquí tienes la traducción al español del contenido:

root@kitploit:~
## Instalación

### Requisitos previos

- Python 3.8 o superior
- pip (gestor de paquetes de Python)
- Acceso a Internet para descargar dependencias

### Instalación rápida

```bash
git clone https://github.com/example/repo.git
cd repo
pip install -r requirements.txt

Instalación desde PyPI

root@kitploit:~
pip install tool-name

Instalación desde el código fuente

root@kitploit:~
git clone https://github.com/example/repo.git
cd repo
python setup.py install

Uso

Sintaxis básica

root@kitploit:~
tool-name [opciones] <objetivo>

Ejemplos

Escaneo básico de un host:

root@kitploit:~
tool-name https://example.com

Escaneo con opciones avanzadas:

root@kitploit:~
tool-name -p 8080 -t 50 https://example.com

Opciones disponibles

OpciónDescripción
-h, --helpMuestra el mensaje de ayuda y sale
-p, --portEspecifica el puerto a escanear (por defecto: 80)
-t, --threadsNúmero de hilos a utilizar (por defecto: 10)
-o, --outputGuarda la salida en un archivo
-v, --verboseModo verboso (muestra información detallada)

Configuración

El archivo de configuración se encuentra en config.yaml. Puedes modificar los siguientes parámetros:

root@kitploit:~
# Configuración del escáner
scanner:
  timeout: 30
  retries: 3
  user_agent: "Mozilla/5.0"

# Configuración de la base de datos
database:
  host: localhost
  port: 5432
  name: tool_db

Documentación de la API

Autenticación

Para usar la API, necesitas una clave de API. Obtén una registrándote en nuestro sitio web.

Endpoints

GET /api/v1/scans

Devuelve una lista de todos los escaneos realizados.

Parámetros de consulta:

ParámetroTipoDescripción
limitenteroNúmero máximo de resultados (por defecto: 20)
offsetenteroDesplazamiento para la paginación
statuscadenaFiltrar por estado (completado, en_progreso, fallido)

Respuesta de ejemplo:

root@kitploit:~
{
  "data": [
    {
      "id": 1,
      "target": "https://example.com",
      "status": "completado",
      "created_at": "2023-01-15T10:30:00Z"
    }
  ],
  "total": 1
}

POST /api/v1/scans

Crea un nuevo escaneo.

Cuerpo de la solicitud:

root@kitploit:~
{
  "target": "https://example.com",
  "options": {
    "port": 8080,
    "threads": 50
  }
}

Códigos de respuesta:

CódigoDescripción
201Escaneo creado correctamente
400Solicitud no válida
401No autorizado (clave de API no válida)
429Demasiadas solicitudes

Solución de problemas

Problemas comunes

Error: Connection refused

Esto suele ocurrir cuando el servicio de destino no está disponible o el puerto está cerrado. Verifica que el objetivo sea correcto y que el puerto esté abierto.

Error: Timeout

El objetivo tardó demasiado en responder. Intenta aumentar el valor de timeout en el archivo de configuración.

Error: Permission denied

Asegúrate de tener los permisos necesarios para ejecutar el escaneo. En algunos sistemas, los escaneos de puertos requieren privilegios de administrador.

Registro de errores

Los registros se almacenan en logs/ por defecto. Puedes cambiar la ubicación en el archivo de configuración.

Preguntas frecuentes (FAQ)

¿Es legal usar esta herramienta?

Esta herramienta está diseñada únicamente para fines educativos y de pruebas de penetración autorizadas. Asegúrate de tener permiso explícito antes de escanear cualquier sistema.

¿Puedo usar esta herramienta en producción?

Sí, pero se recomienda probarla primero en un entorno de pruebas para familiarizarte con sus funciones.

¿Cómo puedo contribuir al proyecto?

Consulta nuestra guía de contribución para obtener más información.

Licencia

Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para obtener más detalles.

Agradecimientos

  • A todos los contribuyentes que han ayudado a mejorar esta herramienta.
  • A la comunidad de seguridad informática por su continuo apoyo y retroalimentación.
root@kitploit:~
uv tool install --force "remove-ai-watermarks[lama]"
remove-ai-watermarks visible image.png -o clean.png --backend lama
```
### Reducir el uso de memoria CUDA```bash
remove-ai-watermarks invisible image.png -o clean.png \
  --cpu-offload --force
```
CPU offload reduce la presión sobre la memoria CUDA al mover componentes del modelo entre la CPU
y la GPU, a costa de la velocidad.

### Procesar un directorio```bash
remove-ai-watermarks batch ./images --mode visible
remove-ai-watermarks batch ./images --mode all
```
## Lo que la herramienta puede reconocer

El soporte de marcas visibles incluye:

- Marca de agua visible de destellos de Google Gemini y Nano Banana;
- Doubao, la marca denominativa de Jimeng y la píldora `AI生成` en la esquina superior izquierda, Qwen, Kling AI,
  Yuanbao, Baidu, LiblibAI y etiquetas de RunningHub;
- una variante calibrada de la insignia blanca de IA de Microsoft en la esquina superior derecha;
- una variante calibrada de la etiqueta Samsung Galaxy AI.

La inspección de metadatos y procedencia cubre C2PA, EXIF, XMP, IPTC, parámetros
comunes de generadores, etiquetas AIGC de China TC260 y varias señales específicas
de proveedores. Los decodificadores opcionales añaden soporte para marcas de agua
abiertas DWT-DCT y Adobe TrustMark.

La matriz de soporte exacta, incluidos los límites importantes de configuración regional y de
detectores, se encuentra en [señales compatibles](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/supported-signals.md). La
[galería de ejemplos sintéticos](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/data/fixtures/visible/README.md) incluye una muestra
canónica para cada marca de imagen y vídeo registrada.

## Cómo funciona

La eliminación visible sigue tres pasos:

1. Detectar una marca registrada en su área esperada.
2. Construir una máscara alrededor de la marca.
3. Rellenar solo la región enmascarada con OpenCV, MI-GAN o LaMa.

La eliminación de metadatos utiliza un despojo consciente del formato. La eliminación de metadatos JPEG
preserva el escaneo de imagen codificado en lugar de recomprimirlo. Los valores TC260 nativos de MP4/MOV
se vacían sin cambiar los tamaños de caja ni los desplazamientos de medios. Otros contenedores
compatibles utilizan su ruta de metadatos correspondiente.

La eliminación invisible es diferente. Regenera la imagen a través de un
proceso de difusión para alterar las marcas de agua en el dominio de píxeles y de frecuencia. Esto cambia la
imagen y no puede garantizar que un verificador propietario rechace cada
salida.

Consulta [señales compatibles](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/supported-signals.md) y
[limitaciones conocidas](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/known-limitations.md) para conocer el límite técnico completo.

## API de Python

La API de eliminación visible requiere `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")
```
La API de alto nivel acepta una ruta de archivo o un array NumPy en BGR. Para entradas de ruta, también
lee los metadatos de procedencia, conserva el canal alfa y puede eliminar los metadatos de IA del
resultado escrito.

Consulta la [guía de la API de Python](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/python-api.md) para la eliminación visible, el pipeline
completo de `remove_all` y `remove_batch`, la inspección de procedencia, el
despojo de metadatos y el uso de difusión.

## ComfyUI

El paquete independiente
[ComfyUI Remove AI Watermarks](https://github.com/wiltodelta/ComfyUI-remove-ai-watermarks)
proporciona nodos para la eliminación visible, la detección, el borrado de regiones y la
eliminación invisible.

## Limitaciones importantes

- Una señal local ausente significa desconocido, no limpio. Las marcas de agua de píxeles
  propietarias pueden permanecer después de que se hayan eliminado los metadatos.
- La eliminación visible reconstruye una región pequeña. Los resultados dependen del fondo
  y del backend de relleno seleccionado.
- La eliminación invisible cambia toda la imagen y puede alterar rostros, texto o detalles
  finos.
- La eliminación visible en video reconoce la marca móvil Sora 2, el diamante actual de Veo
  más el texto heredado `Veo`, la etiqueta `AI` enmarcada de Seedance y las etiquetas fijas
  Doubao, Dola, Hailuo AI y Kling AI. No reconoce el remolino de esquina de Sora Turbo más antiguo
  ni los diseños no registrados de esos proveedores.
  El backend clásico de OpenCV puede manchar fondos estructurados; usa MI-GAN o
  LaMa cuando la calidad de recuperación sea importante.
- La regeneración de SynthID en video cambia la resolución, la velocidad de fotogramas y el detalle de la imagen.
  El perfil incluido está certificado por el oráculo, pero ningún decodificador local público puede
  certificar una salida arbitraria en tiempo de ejecución. Vuelve a verificar salidas inusualmente importantes
  después de cambios en el proveedor.
- La eliminación de marcas de agua invisibles requiere CUDA. Todos los perfiles rechazan cualquier otro
  dispositivo en la construcción en lugar de recurrir a uno que no pueda ejecutarlos.
  La eliminación visible, el despojo de metadatos y `identify` siguen funcionando en cualquier lugar.
- Los sistemas de marcas de agua de los proveedores pueden cambiar. Valida las salidas importantes con el
  verificador propio del proveedor cuando esté disponible.

El comando incluido `video invisible` usa el perfil certificado `noise_std=0.15`.
El arnés de investigación complementario `scripts/video_synthid_sweep.py` construye
un control de re-codificación emparejado más candidatos regenerados por VAE y deja el
veredicto del verificador en blanco:```bash
uv run --extra video --extra diffusion python scripts/video_synthid_sweep.py input.mp4 -o sweep/
```
Para puntuar lo que realmente costó una salida, usa `scripts/video_fidelity_probe.py`:
el PSNR propio del motor se mide antes del redimensionado y del codificado, por lo que solo la
sonda ve la imagen entregada.```bash
uv run --extra video python scripts/video_fidelity_probe.py input.mp4 input_clean.mp4
```
El control debe seguir siendo positivo en SynthID antes de que un candidato negativo pueda
contar como evidencia de eliminación. En la calibración de dos clips del 2026-07-29, ambos
controles coincidentes fueron positivos en el verificador SynthID integrado de Gemini; el candidato
más fuerte fue negativo en ambos portadores, mientras que un candidato más débil fue
negativo en uno. Un seguimiento adversarial posterior que pidió a Gemini ordinario
reinterpretar el resultado de píxeles devolvió `UNAVAILABLE`; ese seguimiento no fue una
nueva ejecución del verificador y no invalida los veredictos integrados. Una verificación
de clip completo del 2026-07-31 en una muestra pública de Veo de ocho segundos encontró que `0.10` aún se detectaba
y `0.15` no se detectaba, por lo que `0.15` es ahora el valor predeterminado certificado. Los
hashes reproducibles y veredictos para esa verificación de clip completo — un portador, dos
filas — se encuentran en `data/evaluations/video-synthid-oracle.csv`. La calibración
anterior de dos clips es solo narrativa: sus veredictos no se registraron en un
manifiesto rastreado, por lo que trate el valor predeterminado certificado como basado en las filas
del 2026-07-31.

## Documentación

Comience con el [índice de documentación](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/index.md).

- [Instalación](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/installation.md)
- [Guía de CLI](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/cli.md)
- [API de Python](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/python-api.md)
- [Señales compatibles](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/supported-signals.md)
- [Limitaciones conocidas](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/known-limitations.md)
- [Notas de alcance, seguridad y legales](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/legal-and-safety.md)
- [Internos del módulo](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/module-internals.md)
- [Publicación y distribución](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/release-and-distribution.md)

Las notas de investigación y los experimentos históricos se enumeran por separado en el
[índice de documentación](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/index.md). Explican decisiones pasadas pero no
definen la API pública actual.

## Contribuciones

Instale el entorno de desarrollo y ejecute la compuerta del proyecto:```bash
uv sync --frozen --extra dev
bash maintain.sh
```
Consulta los [internos del módulo](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/module-internals.md) antes de modificar un subsistema
con invariantes documentadas.

## Licencia

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