La moderazione delle immagini è una sfida per qualsiasi sito o applicazione che accetti contenuti inviati dagli utenti. Tra i servizi a pagamento che trasmettono i vostri file a server remoti e le soluzioni fatte in casa costose da sviluppare, esiste una via intermedia: NSFWJS. Questa libreria JavaScript open source, mantenuta dallo studio Infinite Red, permette di classificare immagini potenzialmente esplicite direttamente nel browser o in Node.js, senza mai inviare i file verso un servizio esterno. In concreto, si basa su TensorFlow.js per eseguire un modello di visione artificiale lato client e assegnare a ogni immagine un punteggio ripartito su cinque categorie. Per uno sviluppatore web, questo significa un primo filtro rapido da implementare, gratuito e rispettoso della privacy, ideale per identificare i contenuti a rischio prima che appaiano su una piattaforma. Nelle sezioni che seguono, illustriamo cos’è esattamente NSFWJS, come funziona, i suoi casi d’uso concreti, i suoi vantaggi, il suo modello economico e cosa bisogna ricordarne.
Qu'est-ce que NSFWJS ?
L'essentiel
NSFWJS è una libreria JavaScript progettata per identificare rapidamente immagini potenzialmente inappropriate, come indica la sua stessa descrizione: aiutare a individuare queste immagini interamente nel browser del client. Il progetto è portato avanti da Infinite Red e distribuito con licenza MIT, il che lo rende libero, gratuito e modificabile. Tecnicamente, si basa su TensorFlow.js e propone diversi modelli pre-addestrati, in particolare MobileNetV2 e InceptionV3. A partire da un’immagine fornita, il modello calcola una probabilità per cinque classi distinte: Drawing (disegni sicuri, inclusa l’animazione), Hentai, Neutral (contenuto neutro), Porn e Sexy. La libreria funziona sia nel browser sia lato server con Node.js, ed esiste un pacchetto complementare per le applicazioni React Native.
Fonctionnalités principales
Il cuore di NSFWJS risiede in un’API semplice. Dopo aver caricato il modello con il metodo load, si richiama classify passandogli una sorgente immagine: tag HTML image, elemento canvas, video, dati immagine grezzi o tensore TensorFlow.js. La funzione restituisce l’elenco delle cinque classi accompagnate dalla loro probabilità, il che lascia allo sviluppatore la scelta della soglia di blocco. Vengono proposti tre modelli in base al compromesso ricercato tra dimensione e precisione: un piccolo modello MobileNetV2 in 224×224, una variante intermedia e un modello InceptionV3 più pesante in 299×299. La precisione dichiarata si attesta intorno al 90% per il modello piccolo e al 93% per quello intermedio. La libreria supporta diversi backend di calcolo (WebGL, WebGPU, WASM, CPU) e può memorizzare i modelli nella cache del browser tramite IndexedDB per accelerare i caricamenti successivi. Un progetto di estensione Chrome open source, NSFW Filter, si basa d’altronde su NSFWJS per nascondere le immagini sensibili durante la navigazione, a dimostrazione della flessibilità della libreria.
Cas d'usage
NSFWJS trova naturalmente il suo posto nella moderazione dei contenuti sulle piattaforme che accettano il caricamento di immagini: forum, social network, marketplace o spazi commenti. Poiché l’analisi si svolge lato client, è possibile bloccare o sfocare un’immagine sospetta ancor prima del suo invio al server, il che riduce la banda passante e protegge la privacy degli utenti. Gli sviluppatori di estensioni per browser la utilizzano per filtrare automaticamente le immagini visualizzate, come nel caso dell’estensione NSFW Filter. Il pacchetto nsfwjs-mobile apre la strada alle applicazioni React Native che desiderano integrare un controllo dei contenuti su mobile. Infine, in ambiente Node.js, NSFWJS può fungere da primo livello di smistamento in una pipeline di elaborazione delle immagini, ad esempio per segnalare i contenuti da esaminare manualmente.
Avantages
Il principale punto di forza di NSFWJS è il suo funzionamento interamente lato client: nessuna immagine viene trasmessa a un servizio terzo, un argomento di peso per la privacy e la conformità. Segue poi la totale gratuità con licenza MIT, che consente un uso commerciale senza costi né quote. La libreria è leggera da integrare, si basa sull’ecosistema TensorFlow.js già ben documentato e lascia lo sviluppatore libero di scegliere il proprio modello e le proprie soglie. La sua compatibilità multi-ambiente (browser, Node.js, React Native) e la sua community open source attiva ne fanno un mattone riutilizzabile in contesti vari, dal prototipo al prodotto in produzione.
Tarifs
NSFWJS è un progetto open source pubblicato con licenza MIT: è gratuito e non comporta alcun livello a pagamento, abbonamento o chiave API da acquistare. Non esiste un’API ospitata commerciale né un servizio gestito ufficiale: si installa la libreria tramite npm o yarn e si ospitano da sé i modelli, se lo si desidera. Gli unici costi eventuali sono indiretti, legati alla propria infrastruttura se la si esegue in Node.js su larga scala. Questa assenza di costi ne fa una soluzione particolarmente interessante per i progetti con budget limitato o le sperimentazioni.
Conclusion
NSFWJS è una risposta pragmatica all’esigenza di filtrare immagini sensibili senza dipendere da un servizio esterno. Gratuito, open source ed eseguito lato client, offre agli sviluppatori un primo guardrail rapido da implementare e rispettoso della privacy. La sua precisione dal 90 al 93% e l’assenza di un’interfaccia no-code lo destinano tuttavia ai team tecnici, e conviene affiancarlo a una revisione umana per gli usi ad alto rischio. Per uno sviluppatore web o mobile alla ricerca di una soluzione di moderazione delle immagini libera e affidabile, è un’opzione da conoscere.