La moderación de imágenes es un reto para cualquier sitio o aplicación que acepte contenido enviado por los usuarios. Entre los servicios de pago que transmiten sus archivos a servidores remotos y las soluciones propias, costosas de desarrollar, existe una vía intermedia: NSFWJS. Esta biblioteca JavaScript de código abierto, mantenida por el estudio Infinite Red, permite clasificar imágenes potencialmente explícitas directamente en el navegador o en Node.js, sin enviar nunca los archivos a un servicio externo. En concreto, se apoya en TensorFlow.js para ejecutar un modelo de visión por computador del lado del cliente y asignar a cada imagen una puntuación repartida en cinco categorías. Para un desarrollador web, esto significa un primer filtro rápido de implementar, gratuito y respetuoso con la privacidad, ideal para identificar contenidos de riesgo antes de que aparezcan en una plataforma. En las secciones siguientes, detallamos qué es exactamente NSFWJS, cómo funciona, sus casos de uso concretos, sus ventajas, su modelo económico y qué conviene recordar.
Qu'est-ce que NSFWJS ?
L'essentiel
NSFWJS es una biblioteca JavaScript diseñada para identificar rápidamente imágenes potencialmente inapropiadas, tal como indica su propia descripción: ayudar a detectar estas imágenes íntegramente en el navegador del cliente. El proyecto está impulsado por Infinite Red y se distribuye bajo licencia MIT, lo que lo hace libre, gratuito y modificable. Técnicamente, se basa en TensorFlow.js y ofrece varios modelos preentrenados, en particular MobileNetV2 e InceptionV3. A partir de una imagen proporcionada, el modelo calcula una probabilidad para cinco clases distintas: Drawing (dibujos seguros, incluida la animación), Hentai, Neutral (contenido neutro), Porn y Sexy. La biblioteca funciona tanto en el navegador como en el lado del servidor con Node.js, y existe un paquete complementario para aplicaciones React Native.
Fonctionnalités principales
El núcleo de NSFWJS reside en una API sencilla. Tras cargar el modelo con el método load, se llama a classify pasándole una fuente de imagen: etiqueta HTML image, elemento canvas, vídeo, datos de imagen en bruto o tensor de TensorFlow.js. La función devuelve la lista de las cinco clases junto con su probabilidad, dejando al desarrollador la elección del umbral de bloqueo. Se ofrecen tres modelos según el compromiso buscado entre tamaño y precisión: un modelo pequeño MobileNetV2 en 224×224, una variante intermedia, y un modelo InceptionV3 más pesado en 299×299. La precisión anunciada se sitúa en torno al 90 % para el modelo pequeño y al 93 % para el modelo intermedio. La biblioteca admite varios backends de cálculo (WebGL, WebGPU, WASM, CPU) y puede almacenar en caché los modelos en el navegador mediante IndexedDB para acelerar las cargas posteriores. Un proyecto de extensión de Chrome de código abierto, NSFW Filter, se apoya precisamente en NSFWJS para ocultar imágenes sensibles durante la navegación, lo que ilustra la flexibilidad de la biblioteca.
Cas d'usage
NSFWJS encuentra naturalmente su lugar en la moderación de contenido en plataformas que aceptan subidas de imágenes: foros, redes sociales, mercados en línea o espacios de comentarios. Como el análisis se realiza del lado del cliente, se puede bloquear o difuminar una imagen sospechosa incluso antes de su envío al servidor, lo que reduce el ancho de banda y protege la privacidad de los usuarios. Los desarrolladores de extensiones de navegador lo utilizan para filtrar automáticamente las imágenes mostradas, como es el caso de la extensión NSFW Filter. El paquete nsfwjs-mobile abre la puerta a las aplicaciones React Native que desean integrar un control de contenido en móvil. Por último, en entorno Node.js, NSFWJS puede servir como primera capa de filtrado en un pipeline de procesamiento de imágenes, por ejemplo para señalar los contenidos que deben revisarse manualmente.
Avantages
La principal ventaja de NSFWJS es su funcionamiento totalmente del lado del cliente: ninguna imagen se transmite a un servicio de terceros, un argumento de peso para la privacidad y el cumplimiento normativo. A esto se suma la gratuidad total bajo licencia MIT, que permite un uso comercial sin coste ni cuotas. La biblioteca es ligera de integrar, se apoya en el ecosistema TensorFlow.js ya bien documentado, y deja al desarrollador libertad para elegir su modelo y sus umbrales. Su compatibilidad multientorno (navegador, Node.js, React Native) y su comunidad open source activa la convierten en una pieza reutilizable en contextos variados, desde el prototipo hasta el producto en producción.
Tarifs
NSFWJS es un proyecto de código abierto publicado bajo licencia MIT: es gratuito y no incluye ningún nivel de pago, suscripción ni clave de API que comprar. No existe una API alojada comercial ni un servicio gestionado oficial: usted instala la biblioteca mediante npm o yarn y aloja usted mismo los modelos si lo desea. Los únicos costes eventuales son indirectos, ligados a su propia infraestructura si la ejecuta en Node.js a gran escala. Esta ausencia de coste la convierte en una solución especialmente interesante para proyectos con presupuesto limitado o experimentos.
Conclusion
NSFWJS es una respuesta pragmática a la necesidad de filtrar imágenes sensibles sin depender de un servicio externo. Gratuito, de código abierto y ejecutado del lado del cliente, ofrece a los desarrolladores una primera salvaguarda rápida de desplegar y respetuosa con la privacidad. Su precisión del 90 al 93 % y la ausencia de una interfaz no-code lo destinan, sin embargo, a equipos técnicos, y conviene complementarlo con una revisión humana para los usos con mayor riesgo. Para un desarrollador web o móvil que busque una solución de moderación de imágenes libre y fiable, es una opción a tener en cuenta.