API di rilevamento NSFW vs visione LLM: ho testato le trappole

Ultimo Aggiornamento: 2026-07-21 10:46:12

Ogni API di rilevamento NSFW intercetta la pornografia evidente. Si dividono sui falsi positivi, segnalando erroneamente costumi da bagno, opere d’arte o foto mediche come espliciti, ed è questo che dovrebbe determinare la tua scelta. Ho quindi testato un detector dedicato contro tre modelli vision LLM sulle stesse immagini borderline: il detector economico ha segnalato una statua di marmo come nudità in 26ms, mentre gli LLM più potenti hanno letto il contesto e l’hanno approvata. La configurazione che la maggior parte dei team dovrebbe copiare è un detector economico su ogni upload, poi solo i casi ambigui inviati a un LLM per un secondo controllo, il che mantiene un’economia di circa $1 per 1,000 mantenendo bassi i falsi allarmi che irritano gli utenti reali.

Cosa restituisce realmente un'API di rilevamento NSFW

Prima di confrontare gli strumenti, bisogna sapere cosa viene restituito. Invi un'immagine (come URL o caricamento diretto) e ottieni un punteggio di probabilità da 0.0 a 1.0, oltre alle etichette per categoria: di solito nudità, suggestivo e violenza, con alcuni servizi che aggiungono hentai, gore, droghe o armi. Scegli una soglia. I punteggi superiori vengono bloccati, una fascia intermedia viene messa in coda per un essere umano, il resto passa.

Quel punteggio da 0 a 1 è tutto il gioco. Imposta la soglia troppo bassa e sommergi i moderatori di falsi allarmi; troppo alta e i contenuti non sicuri raggiungono gli utenti. La maggior parte dei servizi valuta le immagini statiche; meno gestiscono i video (campionando i fotogrammi a un intervallo che imposti tu) o il testo. Tieni presente questo vocabolario. È la differenza tra le opzioni qui sotto.

Le opzioni e a cosa serve ciascuna

Il mercato si divide in quattro gruppi, e risolvono problemi diversi.

API di moderazione dedicate

Classificatori specifici per questo scopo di Sightengine, Hive Moderation, AWS Rekognition, Google Cloud Vision e Azure AI Content Safety. Sono rapidi (da sub-secondo a ~1s), economici per immagine e offrono granularità di categoria oltre al supporto video nei piani di livello superiore. Hive pubblicizza oltre 50 classi; Sightengine indica risposte inferiori a 100 ms.

Sightengine pricing page showing Starter and Pro content-moderation plans

L'opzione gratuita integrata: OpenAI Moderation

L'endpoint Moderation di OpenAI (omni-moderation-latest) è gratuito da usare e accetta sia testo sia immagini fino a 20 MB. Restituisce 13 categorie, incluso un flag dedicato a contenuti sessuali/minori, ciascuna con un valore booleano e un punteggio di confidenza da 0 a 1. Poiché è gratuito, è l'opzione più rapida da provare per prima come benchmark:

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 self-hosted

NudeNet e il modello Falconsai/nsfw_image_detection vengono entrambi eseguiti localmente in Python, senza costi per singola chiamata, e i dati delle immagini non lasciano mai la tua infrastruttura. NudeNet si prova in due righe:

from nudenet import NudeDetector
NudeDetector().detect("upload.jpg")
# -> [{'class': 'FEMALE_BREAST_EXPOSED', 'score': 0.91, 'box': [...]}, ...]

Il progetto open-source safe-content-ai racchiude Falconsai in un servizio Docker FastAPI che puoi distribuire con un solo comando. Il compromesso riguarda l'ambito (questi si concentrano sulla nudità o su un semplice binario) e le operazioni: sei tu a gestire uptime, GPU e aggiornamenti.

Visione multimodale LLM tramite un relay

I modelli vision (GPT, Claude, GLM, doubao) possono classificare un'immagine a partire da un semplice prompt. Questa è l'opzione più flessibile: modifichi la policy modificando il prompt, ottieni un motivo scritto per ogni verdetto e შეგიძლ puoi inventare categorie personalizzate al volo. Paghi per token e aspetti qualche secondo. È l'opzione raramente benchmarkata rispetto agli strumenti dedicati, quindi è su questo che mi sono concentrato nel test.

Prezzi e per cosa è più adatto ciascuno

Verificato rispetto alla pagina prezzi di ciascun fornitore a luglio 2026:

ProviderPrezzoTier gratuitoIdeale per
OpenAI ModerationGratuitoNessuna tariffa per chiamataUna base di riferimento a costo zero, o team già su OpenAI
AWS Rekognition$1 / 1,000 immagini1,000/mese (prova)Il più economico su larga scala; stack AWS; immagini + video
Google Cloud Vision$1.50 / 1,000 ($0.60 ad alto volume)1,000/meseStack GCP
Sightengine$29/mese = 10k operazioni, poi $0.002/operazioneProvaBassa latenza; video e live-stream
Hive Moderation~$1–5 / 1,000Set di categorie più ampio (50+ classi)
Azure AI Content Safety~$1.50 / 1,0005,000/mesePunteggio di severità; stack Azure
NudeNet / FalconsaiGratuito (self-host)Privacy; nessun costo per chiamata
LLM vision (via relay)~$0.0003–0.03 / immagineLivello di revisione sensibile al contesto

Ho testato i falsi positivi: rilevatore dedicato vs visione LLM

I fornitori pubblicano numeri di accuratezza. JigsawStack dichiara oltre il 98%, e "95%+" è una formula comune. Ma l'accuratezza grezza nasconde il fallimento che genera ticket di supporto: i falsi positivi su contenuti sicuri. Perciò ho costruito un set di test di tre immagini, tutte adatte al lavoro, e ho fatto passare le stesse immagini attraverso sia un rilevatore open-source dedicato (NudeNet) sia tre modelli multimodali di visione. Una foto d'ufficio di controllo, una donna in un sobrio costume intero e una classica statua di marmo nuda, con le due "trappole" che sono esattamente le immagini che un rilevatore di nudità troppo grossolano segnala erroneamente.

First-hand NSFW moderation test set: office control, modest swimwear, and a classical nude statue

Per i modelli LLM ho usato 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 restituisce riquadri per singole parti del corpo con punteggi di confidenza, quindi ho preso il punteggio più alto della parte esposta come punteggio di nudità. I risultati:

ModelloUfficio (controllo)Costumi da bagnoStatua classica
NudeNet (dedicato, self-host)sicuro · 0.00 · 26mssicuro · 0.00 · 18mssegnalato · 0.70 · 26ms
claude-opus-4-6sicuro · 0.01sicuro · 0.12sicuro · 0.08
glm-5nessun accesso all'immagine*sicuro · 0.15segnalato · 0.75
doubao-seed-2.0-prosicuro · 0.00sicuro · 0.15sicuro · 0.10

<sub>*Nella foto dell'ufficio, glm-5 ha restituito "safe" ma la sua stessa motivazione ammetteva che non poteva leggere l'immagine, quindi considero quella cella come una chiamata fallita, non un risultato valido. In produzione, quel fail-open silenzioso è il caso pericoloso.</sub>

NSFW score by model for three safe images: NudeNet and glm-5 over-flag the statue, claude and doubao pass it

La linea di demarcazione non è "dedicated versus LLM." È la comprensione del contesto. Ecco cosa ha restituito ciascuno per la statua, l'immagine che li ha divisi:

NudeNet:  BELLY_EXPOSED 0.70, FEMALE_GENITALIA_COVERED 0.41, ARMPITS_EXPOSED 0.36  -> segnala
glm-5:    {"verdict":"flag","nsfw_score":0.75,"categories":{"nudity":1},"reason":"La raffigurazione artistica di nudo richiede revisione umana."}
claude:   {"verdict":"safe","nsfw_score":0.08,"categories":{"nudity":0.3},"reason":"Scultura classica di Venere in un museo. Belle arti, non sessuale."}

NudeNet è veloce (18–26ms) e gratuito da self-hostare, ma ha segnalato la statua con 0.70 perché rileva parti del corpo, non il significato; glm-5 ha fatto lo stesso a 0.75. claude-opus-4-6 ha comunque impostato nudity: 0.3 — ha visto la nudità — ma ha annullato il verdetto in base al contesto, la capacità che un rilevatore a livello di pixel non ha. Il guasto a cui fare attenzione è quello di glm-5: ha restituito "safe" per la foto dell'ufficio pur ammettendo di non riuscire a leggere l'immagine, un fail-open silenzioso che non coglieresti mai in produzione.

Tre avvertenze oneste. La latenza degli LLM era di 4–14 secondi per immagine, rispetto ai circa 20 ms di NudeNet. Ogni immagine consumava all’incirca 730–1.900 token di input, che su un modello frontier si traduce in circa 10–30× i ~$0.001 che pagheresti a Rekognition, quindi non va inserito nel percorso critico. E l’output degli LLM non è standardizzato: bisogna trasformare il testo in un punteggio, e la qualità varia molto da un modello all’altro. Questo era un test piccolo e informale su tre immagini, non un benchmark. Ma basta per mostrare il vero compromesso: comprensione del contesto contro costo, velocità e coerenza.

API dedicata o visione LLM? Una decisione build-vs-buy

Quando uno strumento dedicato vince

Alto volume, un budget ridotto per immagine, latenza inferiore al secondo, video o certificazioni di conformità (SOC 2, un DPA GDPR firmato). Se moderi milioni di caricamenti, $1 per 1.000 a 100 ms è difficile da battere in termini di costi e velocità, e la vision degli LLM non è nella stessa categoria in questo ambito.

Quando la visione LLM vale il suo costo

Categorie sensibili al contesto in cui i falsi positivi sono dannosi (arte, istruzione, medicina, allattamento), oltre ai casi in cui si desidera una motivazione leggibile da un umano per un ricorso, in cui è necessaria una categoria personalizzata o nuova, oppure in cui si esegue già un modello di visione per altre funzionalità. È il revisore intelligente e costoso, non il filtro di massa.

La configurazione a livelli che la maggior parte dei team dovrebbe usare

Esegui un rilevatore economico (o un modello self-hosted come NudeNet) su ogni caricamento. Solo come punto di partenza illustrativo, calibra prima di fidarti: blocca automaticamente sopra ~0.85, consenti sotto ~0.3 e instrada la fascia intermedia a una chiamata LLM-vision che ragiona sul contesto prima che un essere umano la veda, quindi regola quelle soglie in base a un campione etichettato del tuo traffico. E considera una classificazione fallita come non sicura, non sicura: se una risposta non conferma che ha letto l'immagine o non viene analizzata come JSON valido, ritenta o inviala a una revisione umana invece di lasciarla passare, esattamente il fail-open di glm-5 sopra. Paghi tariffe da API dedicata sulla maggior parte dei caricamenti e riservi il costo dell'LLM ai casi ambigui che effettivamente causano contestazioni, il caso limite tra arte e nudità in cui il rilevatore economico aveva segnalato erroneamente la statua del museo.

Quel livello LLM ha bisogno di accedere a uno o più modelli vision. Un relay come AIReiter raggiunge le funzionalità vision di GPT, Claude e GLM tramite un unico endpoint compatibile con OpenAI, così il livello di revisione può cambiare modello senza SDK o account separati; è così che ho eseguito il test a quattro vie sopra.

L’unica cosa che non dovresti mai costruire da solo: CSAM

Una linea netta. Nulla di quanto sopra si applica al materiale di abuso sessuale su minori. Non addestrare, eseguire o "testare" il tuo rilevatore di CSAM, e non instradare il sospetto CSAM attraverso una API generale di rilevamento NSFW come se fosse normale contenuto per adulti. Il percorso consolidato è il confronto tramite hash con database noti (PhotoDNA di Microsoft e le liste hash di NCMEC e IWF) oltre alla segnalazione a NCMEC. Gli obblighi di segnalazione esatti variano in base alla giurisdizione e al tuo ruolo come provider, quindi considera questa una questione legale e di ordine pubblico con un sistema dedicato, non un classificatore che puoi regolare.

FAQ

Esiste un'API gratuita per il rilevamento NSFW?

Sì. L'endpoint Moderation di OpenAI (omni-moderation-latest) è gratuito e accetta immagini. AWS Rekognition e Google Cloud Vision includono ciascuno circa 1.000 immagini gratuite al mese. Per un uso gratuito illimitato, ospita in proprio un modello open-source come NudeNet, che nel mio test ha impiegato circa 20 ms per immagine.

Qual è la migliore API di rilevamento NSFW per immagini e video?

Per i video, Sightengine e Hive campionano entrambi i frame e sono progettati per questo, e anche AWS Rekognition offre la moderazione video. Per le immagini con un budget limitato, AWS Rekognition a $1 per 1,000 è la scelta predefinita più comune. Valuta la tua scelta in base al costo, alla profondità delle categorie o al tasso di falsi positivi; non esiste un vincitore unico.

Posso eseguire il rilevamento NSFW in Python senza un'API a pagamento?

Sì. NudeNet e il modello Falconsai/nsfw_image_detection funzionano entrambi localmente in Python (pip install nudenet), e il progetto open-source safe-content-ai impacchetta quest’ultimo come servizio FastAPI in Docker. Si rinuncia ai costi per singola chiamata in cambio dell’hosting e della manutenzione del modello in autonomia.

Quanto sono accurate le API di rilevamento NSFW?

I fornitori dichiarano il 95–98% nei loro benchmark per i contenuti espliciti. Il dato che conta davvero è il tasso di falsi positivi sui contenuti al limite della sicurezza (arte, costumi da bagno, immagini mediche), dove, come ha mostrato il test sopra, un rilevatore dedicato veloce e un modello più debole hanno entrambi segnalato erroneamente una statua da museo, mentre la vision di un LLM consapevole del contesto l’ha approvata.

Posso usare GPT-4o o la visione di Claude per la moderazione dei contenuti?

Sì, e per i casi sensibili al contesto evitano meglio i falsi positivi; nel mio test, Claude vision ha approvato una statua nuda come arte mentre un rilevatore a livello di pixel l’ha segnalata. Il compromesso è la velocità (secondi, non millisecondi) e il costo (circa 10–30× rispetto a una API dedicata per immagine), quindi usali come livello di revisione piuttosto che come filtro principale per grandi volumi.

Letture correlate