Todas las APIs de detección NSFW detectan pornografía obvia. Se diferencian en los falsos positivos, al señalar erróneamente trajes de baño, arte o fotos médicas como explícitos, y eso es lo que debería decidir tu elección. Así que probé un detector dedicado contra tres modelos de visión LLM con las mismas imágenes borderline: el detector barato marcó una estatua de mármol como desnudez en 26ms, mientras que los LLM más potentes leyeron el contexto y la aprobaron. La configuración que la mayoría de los equipos debería copiar es un detector barato en cada carga, y luego solo enviar los casos ambiguos a un LLM para una segunda revisión, lo que mantiene una economía de aproximadamente $1 por cada 1.000, al tiempo que reduce las falsas alarmas que enfadan a los usuarios reales.
Qué devuelve realmente una API de detección NSFW
Antes de comparar herramientas, sepa qué obtendrá de vuelta. Envía una imagen (como una URL o una carga directa) y recibe una puntuación de probabilidad de 0.0 a 1.0, además de etiquetas por categoría: normalmente desnudez, sugerente y violencia, y algunos servicios añaden hentai, gore, drogas o armas. Usted elige un umbral. Las puntuaciones por encima de este se bloquean, una franja intermedia se pone en cola para un humano, el resto pasa.
Esa puntuación de 0–1 lo es todo. Si estableces el umbral demasiado bajo, enterrarás a los moderadores en falsas alarmas; si lo estableces demasiado alto, el contenido inseguro llegará a los usuarios. La mayoría de los servicios puntúan imágenes fijas; menos manejan video (muestreando fotogramas a un intervalo que tú defines) o texto. Ten presente ese vocabulario. Es la diferencia entre las opciones a continuación.
Las opciones y en qué es buena cada una
El mercado se divide en cuatro grupos, y resuelven diferentes problemas.
API de moderación dedicadas
Clasificadores creados específicamente por Sightengine, Hive Moderation, AWS Rekognition, Google Cloud Vision, y Azure AI Content Safety. Son rápidos (menos de un segundo hasta ~1s), baratos por imagen, y ofrecen granularidad por categoría además de soporte de video en los niveles superiores. Hive anuncia más de 50 clases; Sightengine cita respuestas de menos de 100 ms.
La opción integrada gratuita: OpenAI Moderation
El endpoint de Moderation de OpenAI (omni-moderation-latest) se puede usar gratis y acepta tanto texto como imágenes de hasta 20 MB. Devuelve 13 categorías, incluida una bandera dedicada para sexual/minors, cada una con un booleano y una puntuación de confianza de 0–1. Como es gratis, es la opción más rápida para evaluar primero:
curl https://api.openai.com/v1/moderations \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"omni-moderation-latest",
"input":[{"type":"image_url","image_url":{"url":"https://example.com/upload.jpg"}}]}'
Open source autoalojado
NudeNet y el modelo Falconsai/nsfw_image_detection se ejecutan localmente en Python, sin tarifa por llamada, y los datos de las imágenes nunca salen de tu infraestructura. NudeNet se prueba con dos líneas:
from nudenet import NudeDetector
NudeDetector().detect("upload.jpg")
# -> [{'class': 'FEMALE_BREAST_EXPOSED', 'score': 0.91, 'box': [...]}, ...]
El proyecto de código abierto safe-content-ai envuelve Falconsai en un servicio Docker FastAPI que puedes desplegar con un solo comando. La contrapartida es el alcance (estos se centran en la desnudez o en un binario simple) y la operación: tú eres responsable del tiempo de actividad, la GPU y las actualizaciones.
Visión multimodal de LLM a través de un relevo
Los modelos de visión (GPT, Claude, GLM, doubao) pueden clasificar una imagen a partir de un prompt simple. Esta es la opción flexible: cambias la política editando el prompt, obtienes una razón escrita para cada veredicto y puedes inventar categorías personalizadas al instante. Pagas por token y esperas unos segundos. Es la opción que rara vez se compara con las herramientas dedicadas, así que ahí fue donde me centré en la prueba.
Precios y para qué es mejor cada uno
Verificado contra la página de precios propia de cada proveedor en julio de 2026:
| Proveedor | Precio | Nivel gratuito | Ideal para |
|---|---|---|---|
| OpenAI Moderation | Gratis | Sin tarifa por llamada | Una base de referencia sin costo, o equipos que ya usan OpenAI |
| AWS Rekognition | $1 / 1,000 imágenes | 1,000/mes (prueba) | Más barato a escala; pila de AWS; imagen + video |
| Google Cloud Vision | $1.50 / 1,000 ($0.60 en volumen) | 1,000/mes | Pila de GCP |
| Sightengine | $29/mes = 10k operaciones, luego $0.002/op | Prueba | Menor latencia; video y transmisión en vivo |
| Hive Moderation | ~$1–5 / 1,000 | — | Conjunto de categorías más amplio (50+ clases) |
| Azure AI Content Safety | ~$1.50 / 1,000 | 5,000/mes | Puntuación de severidad; pila de Azure |
| NudeNet / Falconsai | Gratis (autoalojado) | — | Privacidad; costo cero por llamada |
| LLM vision (via relay) | ~$0.0003–0.03 / imagen | — | Capa de revisión sensible al contexto |
Probé los falsos positivos: detector dedicado vs visión LLM
Los proveedores publican cifras de precisión. JigsawStack afirma más del 98%, y "95%+" es una cifra común. Pero la precisión bruta oculta la falla que genera tickets de soporte: falsos positivos en contenido seguro. Así que construí un conjunto de prueba de tres imágenes, todas aptas para el trabajo, y ejecuté las mismas imágenes tanto a través de un detector especializado de código abierto (NudeNet) como de tres modelos de visión multimodales. Una foto de oficina de control, una mujer con un modesto traje de baño de una pieza y una estatua clásica de mármol desnuda, siendo las dos "trampas" exactamente las imágenes que un detector de desnudez demasiado literal sobreetiqueta.
Para los modelos LLM utilicé un solo prompt: *"You are an image content-moderation classifier. Return strict JSON: verdict (safe/flag/block), nsfw_score 0–1, categories {nudity, suggestive, violence}, reason. Use block only for explicit sexual content; flag means needs human review."* NudeNet devuelve cajas por parte del cuerpo con puntuaciones de confianza, así que tomé la puntuación más alta de la parte expuesta como su puntuación de desnudez. Los resultados:
| Modelo | Oficina (control) | Traje de baño | Estatua clásica |
|---|---|---|---|
| NudeNet (dedicado, autohospedado) | safe · 0.00 · 26ms | safe · 0.00 · 18ms | flag · 0.70 · 26ms |
| claude-opus-4-6 | safe · 0.01 | safe · 0.12 | safe · 0.08 |
| glm-5 | sin acceso a imágenes* | safe · 0.15 | flag · 0.75 |
| doubao-seed-2.0-pro | safe · 0.00 | safe · 0.15 | safe · 0.10 |
<sub>*En la foto de la oficina, glm-5 devolvió "safe", pero su propia razón admitía que no podía leer la imagen, así que cuento esa celda como una llamada fallida, no como un resultado válido. En producción, ese fallo silencioso de apertura es el caso peligroso.</sub>
La línea divisoria no es "dedicated versus LLM." Es la comprensión del contexto. Esto es lo que cada uno devolvió para la estatua, la imagen que los dividió:
NudeNet: BELLY_EXPOSED 0.70, FEMALE_GENITALIA_COVERED 0.41, ARMPITS_EXPOSED 0.36 -> marcar
glm-5: {"verdict":"flag","nsfw_score":0.75,"categories":{"nudity":1},"reason":"La representación artística desnuda requiere revisión humana."}
claude: {"verdict":"safe","nsfw_score":0.08,"categories":{"nudity":0.3},"reason":"Escultura clásica de Venus en un museo. Bellas artes, no sexual."}
NudeNet es rápido (18–26ms) y gratuito para autoalojar, pero marcó la estatua con 0.70 porque detecta partes del cuerpo, no el significado; glm-5 hizo lo mismo con 0.75. claude-opus-4-6 aún estableció nudity: 0.3 — vio la desnudez — pero anuló el veredicto por el contexto, la capacidad que no tiene un detector a nivel de píxel. El fallo que hay que vigilar es el de glm-5: devolvió "safe" para la foto de la oficina mientras admitía que no podía leer la imagen, un fail-open silencioso que nunca detectarías en producción.
Tres advertencias honestas. La latencia de los LLMs fue de 4 a 14 segundos por imagen, frente a los ~20 ms de NudeNet. Cada imagen consumió aproximadamente entre 730 y 1.900 tokens de entrada, lo que en un modelo de frontera equivale a unas 10 a 30 veces los ~$0.001 que pagarías por Rekognition, así que conviene usarlo fuera de la ruta crítica. Y la salida del LLM no está estandarizada: conviertes prosa en una puntuación, y la calidad varía mucho entre modelos. Esta fue una prueba pequeña e informal con tres imágenes, no un benchmark. Pero basta para mostrar el verdadero intercambio: comprensión del contexto frente a coste, velocidad y consistencia.
¿API dedicada o visión de LLM? Una decisión de construir vs. comprar
Cuando una herramienta dedicada gana
Alto volumen, un presupuesto ajustado por imagen, latencia de menos de un segundo, video o certificaciones de cumplimiento (SOC 2, un DPA firmado del GDPR). Si moderas millones de cargas, $1 por 1,000 a 100ms es difícil de superar en costo y velocidad, y la visión de LLM no está en la misma liga ahí.
Cuándo la visión LLM merece su costo
Categorías sensibles al contexto donde los falsos positivos perjudican (arte, educación, medicina, lactancia), además de casos en los que quieres una razón legible por humanos para una apelación, necesitas una categoría personalizada o novedosa, o ya ejecutas un modelo de visión para otras funciones. Es el revisor inteligente y costoso, no el filtro masivo.
La configuración por niveles que la mayoría de los equipos debería usar
Ejecute un detector barato (o un modelo autohospedado como NudeNet) en cada carga. Solo como punto de partida ilustrativo, calibreló antes de confiar en él: bloquee automáticamente por encima de ~0.85, deje pasar por debajo de ~0.3 y envíe la banda intermedia a una llamada LLM-vision que razone sobre el contexto antes de que un humano lo vea; luego ajuste esos umbrales con una muestra etiquetada de su propio tráfico. Y trate una clasificación fallida como insegura, no como segura: si una respuesta no confirma que leyó la imagen o no se analiza como JSON válido, vuelva a intentarlo o envíelo a revisión humana en lugar de dejar que pase, exactamente el glm-5 fail-open anterior. Usted paga tarifas de dedicated-API en la mayor parte de las cargas y reserva el costo de LLM para los casos ambiguos que realmente causan disputas, el borde entre arte y desnudez donde el detector barato marcó erróneamente la estatua del museo.
Ese layer de LLM necesita acceso a uno o más modelos de visión. Un relay como AIReiter alcanza GPT, Claude y GLM vision a través de un único endpoint compatible con OpenAI, de modo que la capa de revisión puede cambiar de modelo sin SDKs ni cuentas por separado; así fue como ejecuté la prueba de cuatro vías anterior.
La única cosa que nunca deberías construir tú mismo: CSAM
Una línea roja. Nada de lo anterior se aplica al material de abuso sexual infantil. No entrenes, ejecutes ni "pruebes" tu propio detector de CSAM, y no redirijas CSAM sospechoso a través de una API general de detección de NSFW como si fuera contenido adulto ordinario. El procedimiento establecido es la coincidencia de hashes frente a bases de datos conocidas (PhotoDNA de Microsoft y las listas de hashes de NCMEC e IWF), además de la notificación a NCMEC. Las obligaciones exactas de notificación varían según la jurisdicción y tu función como proveedor, así que trátalo como un asunto legal y de aplicación de la ley con su propio sistema dedicado, no como un clasificador que ajustas.
Preguntas frecuentes
¿Existe una API gratuita de detección de NSFW?
Sí. El endpoint de Moderation de OpenAI (omni-moderation-latest) es gratuito y acepta imágenes. AWS Rekognition y Google Cloud Vision incluyen cada uno unas 1.000 imágenes gratuitas por mes. Para uso gratuito ilimitado, autoalberga un modelo de código abierto como NudeNet, que en mi prueba se ejecutó en unos 20 ms por imagen.
¿Cuál es la mejor API de detección NSFW para imágenes y video?
Para video, Sightengine y Hive ambos muestrean fotogramas y están diseñados para ello, y AWS Rekognition también ofrece moderación de video. Para imágenes con un presupuesto ajustado, AWS Rekognition a $1 por 1,000 es la opción predeterminada habitual. Pondere su elección según el costo, la profundidad de categorías o la tasa de falsos positivos; no hay un único ganador.
¿Puedo ejecutar la detección de NSFW en Python sin una API de pago?
Sí. NudeNet y el modelo Falconsai/nsfw_image_detection ambos se ejecutan localmente en Python (pip install nudenet), y el proyecto de código abierto safe-content-ai empaqueta este último como un servicio FastAPI en Docker. Cambias tarifas por llamada por alojar y mantener el modelo tú mismo.
¿Qué tan precisas son las APIs de detección NSFW?
Los proveedores citan un 95–98% en sus propios benchmarks para contenido explícito. El número que realmente importa es la tasa de falsos positivos en contenido limítrofe seguro (arte, ropa de baño, imágenes médicas), donde, como mostró la prueba anterior, un detector dedicado rápido y un modelo más débil ambos marcaron de más una estatua de museo mientras que la visión de un LLM con conciencia del contexto la aprobó.
¿Puedo usar GPT-4o o Claude vision para la moderación de contenido?
Sí, y para casos sensibles al contexto evitan mejor los falsos positivos; en mi prueba, Claude vision aprobó una estatua desnuda como arte fino mientras que un detector a nivel de píxel la marcó. El costo es la velocidad (segundos, no milisegundos) y el precio (aproximadamente 10–30× un API dedicado por imagen), así que utilízalos como una capa de revisión en lugar del filtro masivo de primera línea.
