Skip to main content
Documentação
CENTRO DE APRENDIZAGEM

Domine a moderação de conteúdo com guias completos, tutoriais e documentação da API

Links rápidos

Detecção de imagens NSFW

A moderação de imagens da Discuse atribui pontuações a imagens enviadas por usuários para identificar conteúdo explícito. Envie URLs de imagens para POST https://api.discuse.com/api/v2/check com check_images habilitado, e a API retorna probabilidades de porn, sexual e neutral, além de um sinalizador hit conforme o objeto results.images.

Como funciona a detecção NSFW?

O modelo de visão computacional da Discuse retorna três probabilidades para cada imagem, cuja soma tende a 1.0:

  • porn: probabilidade de a imagem ser pornográfica.
  • sexual: probabilidade de a imagem ter conotação sexual.
  • neutral: probabilidade de a imagem ser segura.

Um sinalizador hit indica que a imagem ultrapassou os limites NSFW do seu projeto. Use as pontuações brutas para diferenciar uma imagem claramente explícita (bloqueio automático) de uma imagem limítrofe (análise humana).

Como verificar uma imagem?

Envie uma ou mais URLs de imagens e habilite a verificação de imagem com check_images:

curl -X POST https://api.discuse.com/api/v2/check \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "content": {
      "image_urls": ["https://example.com/user-upload.jpg"]
    },
    "settings": {
      "check_images": true
    }
  }'

Uma única solicitação aceita até 10 URLs de imagens.

Formato da resposta

{
  "has_violations": true,
  "cached": false,
  "message": "NSFW content detected",
  "results": {
    "hits": true,
    "images": {
      "status": "ok",
      "porn": 0.95,
      "sexual": 0.85,
      "neutral": 0.02,
      "hit": true
    }
  },
  "usage": {
    "api_requests_used": 12,
    "api_requests_limit": 2000,
    "api_requests_remaining": 1988
  }
}

O resultado da imagem fica em results.images. processing_time_ms só aparece quando a medição de tempo está habilitada nas configurações do seu projeto.

Verificando várias imagens

{
  "content": {
    "image_urls": [
      "https://example.com/image1.jpg",
      "https://example.com/image2.jpg",
      "https://example.com/image3.jpg"
    ]
  },
  "settings": {
    "check_images": true
  }
}

Cada imagem verificada conta separadamente para a sua cota de varreduras de imagem.

Como interpretar as pontuações?

porn, sexual e neutral são probabilidades de 0.0 a 1.0. Em uma imagem explícita, porn é alto e neutral é baixo; em uma imagem segura, neutral predomina.

function interpretImageResult(result) {
  const img = result.results.images;

  if (img.porn > 0.8) {
    return 'block';   // automatically reject
  } else if (img.porn > 0.5 || img.sexual > 0.7) {
    return 'review';  // queue for human review
  } else if (img.sexual > 0.5) {
    return 'warn';    // allow with a content-warning label
  } else {
    return 'allow';
  }
}

Você também pode usar o sinalizador hit, que já aplica as configurações threshold_images_porn e threshold_images_sexual do seu projeto.

Casos de uso

Plataformas sociais

Analise fotos de perfil e imagens de publicações antes que elas entrem no ar:

async function handleImageUpload(imageUrl) {
  const result = await checkImage(imageUrl);
  const img = result.results.images;

  if (img.porn > 0.7) {
    throw new Error('This image violates our community guidelines');
  }
  if (img.sexual > 0.7) {
    return { url: imageUrl, hasContentWarning: true };
  }
  return { url: imageUrl, hasContentWarning: false };
}

Marketplaces

Aplique um limite mais rigoroso para imagens de produtos:

def validate_product_image(image_url):
    result = check_image(image_url)
    img = result['results']['images']

    if img['porn'] > 0.3 or img['sexual'] > 0.3:
        return {'approved': False, 'reason': 'Image contains inappropriate content'}

    return {'approved': True}

Boas práticas

Faça a verificação antes do armazenamento permanente

async function processUpload(file) {
  const tempUrl = await uploadToTemp(file);
  const result = await checkImage(tempUrl);

  if (result.has_violations) {
    await deleteTempFile(tempUrl);
    throw new Error('Image rejected');
  }
  return await moveToPermanent(tempUrl);
}

Combine com moderação de texto

Uma única solicitação pode analisar uma imagem e sua legenda ao mesmo tempo:

{
  "content": {
    "text": "Check out this photo from my vacation!",
    "image_urls": ["https://example.com/vacation.jpg"]
  },
  "settings": {
    "check_sentiment": true,
    "check_spam": true,
    "check_images": true
  }
}

Use resultados em cache

Respostas em cache não contam para a sua cota, portanto reexibir ou revalidar uma imagem já verificada é gratuito. O sinalizador cached na resposta informa quando um resultado veio do cache.

Limites de uso

Plano Varreduras mensais de imagens Tarifa por excedente
Basic 500 Não disponível
Gold 2,000 $0.00075/scan
Platinum 5,000 $0.00064/scan (15% de desconto)
Ultimate 10,000 $0.00056/scan (25% de desconto)

Exemplos de integração

Node.js

const checkImage = async (imageUrl) => {
  const response = await fetch('https://api.discuse.com/api/v2/check', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': process.env.DISCUSE_API_KEY
    },
    body: JSON.stringify({
      content: { image_urls: [imageUrl] },
      settings: { check_images: true }
    })
  });

  return response.json();
};

Python

import os
import requests

def check_image(image_url):
    response = requests.post(
        'https://api.discuse.com/api/v2/check',
        headers={
            'Content-Type': 'application/json',
            'X-API-Key': os.environ['DISCUSE_API_KEY']
        },
        json={
            'content': {'image_urls': [image_url]},
            'settings': {'check_images': True}
        }
    )
    return response.json()

Próximas etapas

Escrito por Equipe Discuse · Última atualização em June 2026

Artigos relacionados

Análise de texto e detecção de sentimento

Detecte spam, toxicidade, palavrões e analise o sentimento em conteúdo de texto

Detecção de spam

Filtragem de spam com tecnologia de AI para textos e mensagens

Verificação antivírus de arquivos

Proteja sua plataforma contra malware, vírus e arquivos maliciosos