Pular para conteúdo

AWS REKOGNITION - Detect Labels (Detecção de Rótulos)

O que é esta operação?

A operação detectLabels do AWS Rekognition é responsável por analisar imagens e identificar objetos, cenas, atividades e conceitos presentes usando tecnologia de visão computacional avançada.

Por que esta operação existe?

A análise manual de imagens é demorada e inconsistente. O Rekognition detectLabels existe para:

  1. Catalogação Automática: Identificar automaticamente o conteúdo de imagens para organização
  2. Busca Visual: Permitir busca de imagens por conteúdo detectado
  3. Moderação de Conteúdo: Classificar imagens por tipo de conteúdo
  4. Análise de Produtos: Identificar produtos e itens em fotos de catálogo
  5. Processamento em Massa: Analisar milhares de imagens automaticamente

Como funciona internamente?

Quando o detectLabels é executado, o sistema:

  1. Valida Credenciais: Verifica region, accessKeyId e secretAccessKey da AWS
  2. Cria Cliente Rekognition: Instancia o cliente AWS Rekognition com as credenciais
  3. Determina Fonte da Imagem: Aceita imagem do S3 (bucket + key) ou bytes em base64
  4. Configura Parâmetros: Define MaxLabels (máximo de rótulos) e MinConfidence (confiança mínima)
  5. Envia Comando: Executa DetectLabelsCommand na API da AWS
  6. Processa Resposta: Extrai labels detectados com scores de confiança
  7. Armazena Resultado: Salva em variável especificada em responseVariable

Código interno (aws-rekognition.executor.ts:91-103):

private async detectLabels(client: RekognitionClient, data: any, context: ExecutionContext): Promise<any> {
  const command = new DetectLabelsCommand({
    Image: this.getImageSource(data, context),
    MaxLabels: data.maxLabels || 10,
    MinConfidence: data.minConfidence || 70,
  });

  const response = await client.send(command);
  return {
    labels: response.Labels || [],
    count: response.Labels?.length || 0,
  };
}

Quando você DEVE usar esta operação?

Use detectLabels sempre que precisar de identificação automática de conteúdo visual:

Casos de uso

  1. E-commerce: "Analisar fotos de produtos enviadas por vendedores e classificar automaticamente por categoria"
  2. Redes Sociais: "Identificar conteúdo de fotos compartilhadas para sugerir hashtags relevantes"
  3. Gestão de Ativos: "Organizar biblioteca de imagens por conteúdo detectado (natureza, pessoas, objetos)"
  4. Controle de Qualidade: "Verificar se fotos de produtos contêm os itens esperados antes de publicar"

Quando NÃO usar detectLabels

  • Detecção de Rostos: Use detectFaces ou compareFaces para análise facial
  • Extração de Texto: Use AWS Textract detectText para OCR
  • Conteúdo Impróprio: Use detectModerationLabels para moderação de conteúdo
  • Celebridades: Use recognizeCelebrities para identificar pessoas famosas

Parâmetros Detalhados

config (object, obrigatório)

O que é: Credenciais AWS para autenticação no serviço Rekognition.

Campos obrigatórios: - region: Região AWS (ex: "us-east-1", "sa-east-1") - accessKeyId: ID da chave de acesso AWS - secretAccessKey: Chave de acesso secreta AWS

Flow completo para testar:

{
  "name": "Teste AWS Rekognition - Config",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "rekognition_1",
      "type": "aws_rekognition",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Detectar Rótulos",
        "operation": "detectLabels",
        "config": {
          "region": "us-east-1",
          "accessKeyId": "YOUR_ACCESS_KEY_ID",
          "secretAccessKey": "YOUR_SECRET_ACCESS_KEY"
        },
        "s3Bucket": "my-images-bucket",
        "s3Key": "products/product-001.jpg",
        "maxLabels": 10,
        "minConfidence": 75,
        "responseVariable": "detectedLabels"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Mostrar Resultado",
        "parameters": {
          "message": "Detectados {{detectedLabels.count}} rótulos na imagem!"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "rekognition_1" },
    { "source": "rekognition_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Configure suas credenciais AWS reais. O sistema detectará rótulos na imagem do S3 e retornará o resultado.

s3Bucket e s3Key (string, opcional - mas obrigatório se não usar imageBytes)

O que é: Localização da imagem no Amazon S3 para análise.

Formato: - s3Bucket: Nome do bucket S3 (ex: "my-images-bucket") - s3Key: Caminho do arquivo no bucket (ex: "products/image.jpg")

Flow completo para testar:

{
  "name": "Teste AWS Rekognition - S3 Source",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Informar Caminho",
        "parameters": {
          "message": "Digite o caminho da imagem no S3 (ex: produtos/foto.jpg):",
          "variableName": "imagePath"
        }
      }
    },
    {
      "id": "rekognition_1",
      "type": "aws_rekognition",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Analisar Imagem",
        "operation": "detectLabels",
        "config": {
          "region": "us-east-1",
          "accessKeyId": "YOUR_ACCESS_KEY_ID",
          "secretAccessKey": "YOUR_SECRET_ACCESS_KEY"
        },
        "s3Bucket": "my-images-bucket",
        "s3Key": "{{imagePath}}",
        "responseVariable": "labels"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Resultado",
        "parameters": {
          "message": "Encontrei {{labels.count}} rótulos na imagem!"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 900, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "rekognition_1" },
    { "source": "rekognition_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Digite um caminho de imagem válido no S3. O sistema analisará a imagem e retornará os rótulos detectados.

imageBytes (string base64, opcional - mas obrigatório se não usar S3)

O que é: Dados da imagem em formato base64 para análise direta sem usar S3.

Formato: String base64 da imagem (ex: "iVBORw0KGgoAAAANSUhEUgAA...")

Flow completo para testar:

{
  "name": "Teste AWS Rekognition - Image Bytes",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "variable_1",
      "type": "variable",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Preparar Base64",
        "parameters": {
          "variableName": "imageBase64",
          "value": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="
        }
      }
    },
    {
      "id": "rekognition_1",
      "type": "aws_rekognition",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Detectar Rótulos",
        "operation": "detectLabels",
        "config": {
          "region": "us-east-1",
          "accessKeyId": "YOUR_ACCESS_KEY_ID",
          "secretAccessKey": "YOUR_SECRET_ACCESS_KEY"
        },
        "imageBytes": "{{imageBase64}}",
        "responseVariable": "detectedLabels"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Resultado",
        "parameters": {
          "message": "Rótulos detectados: {{detectedLabels.count}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 900, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "variable_1" },
    { "source": "variable_1", "target": "rekognition_1" },
    { "source": "rekognition_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: O sistema analisa a imagem base64 e detecta rótulos diretamente.

maxLabels (number, opcional)

O que é: Número máximo de rótulos a serem retornados pela análise.

Padrão: 10

Flow completo para testar:

{
  "name": "Teste AWS Rekognition - Max Labels",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "number_1",
      "type": "number",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Quantos Rótulos?",
        "parameters": {
          "message": "Quantos rótulos deseja detectar? (1-100)",
          "variableName": "maxLabels"
        }
      }
    },
    {
      "id": "rekognition_1",
      "type": "aws_rekognition",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Detectar Rótulos",
        "operation": "detectLabels",
        "config": {
          "region": "us-east-1",
          "accessKeyId": "YOUR_ACCESS_KEY_ID",
          "secretAccessKey": "YOUR_SECRET_ACCESS_KEY"
        },
        "s3Bucket": "my-images-bucket",
        "s3Key": "test-image.jpg",
        "maxLabels": "{{maxLabels}}",
        "responseVariable": "result"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Resultado",
        "parameters": {
          "message": "Detectados {{result.count}} rótulos (máximo solicitado: {{maxLabels}})"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 900, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "number_1" },
    { "source": "number_1", "target": "rekognition_1" },
    { "source": "rekognition_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Digite um número (ex: 5). O sistema retornará no máximo esse número de rótulos.

minConfidence (number, opcional)

O que é: Nível mínimo de confiança (0-100) para incluir um rótulo nos resultados.

Padrão: 70

Flow completo para testar:

{
  "name": "Teste AWS Rekognition - Min Confidence",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "number_1",
      "type": "number",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Nível de Confiança",
        "parameters": {
          "message": "Qual confiança mínima? (0-100, recomendado: 70-90)",
          "variableName": "confidence"
        }
      }
    },
    {
      "id": "rekognition_1",
      "type": "aws_rekognition",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Detectar com Confiança",
        "operation": "detectLabels",
        "config": {
          "region": "us-east-1",
          "accessKeyId": "YOUR_ACCESS_KEY_ID",
          "secretAccessKey": "YOUR_SECRET_ACCESS_KEY"
        },
        "s3Bucket": "my-images-bucket",
        "s3Key": "test.jpg",
        "minConfidence": "{{confidence}}",
        "responseVariable": "labels"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Resultado",
        "parameters": {
          "message": "Encontrados {{labels.count}} rótulos com confiança ≥ {{confidence}}%"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 900, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "number_1" },
    { "source": "number_1", "target": "rekognition_1" },
    { "source": "rekognition_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Digite um valor de confiança (ex: 85). Apenas rótulos com 85% ou mais de confiança serão retornados.

responseVariable (string, obrigatório)

O que é: Nome da variável onde o resultado da detecção será armazenado.

Flow completo para testar:

{
  "name": "Teste AWS Rekognition - Response Variable",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "rekognition_1",
      "type": "aws_rekognition",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Detectar Rótulos",
        "operation": "detectLabels",
        "config": {
          "region": "us-east-1",
          "accessKeyId": "YOUR_ACCESS_KEY_ID",
          "secretAccessKey": "YOUR_SECRET_ACCESS_KEY"
        },
        "s3Bucket": "my-bucket",
        "s3Key": "image.jpg",
        "responseVariable": "imageAnalysis"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Exibir Labels",
        "parameters": {
          "message": "Total de rótulos: {{imageAnalysis.count}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "rekognition_1" },
    { "source": "rekognition_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: O resultado fica disponível em {{imageAnalysis.count}} e {{imageAnalysis.labels}}.

Parâmetros

Campo Tipo Obrigatório Descrição
operation string Sim Deve ser "detectLabels"
config object Sim Credenciais AWS (region, accessKeyId, secretAccessKey)
s3Bucket string Condicional Nome do bucket S3 (obrigatório se não usar imageBytes)
s3Key string Condicional Caminho do arquivo no S3 (obrigatório se não usar imageBytes)
imageBytes string Condicional Imagem em base64 (obrigatório se não usar S3)
maxLabels number Não Número máximo de rótulos (padrão: 10)
minConfidence number Não Confiança mínima 0-100 (padrão: 70)
responseVariable string Sim Nome da variável para armazenar resultado

Exemplo 1: Análise de Produtos de E-commerce

Objetivo: Analisar fotos de produtos enviadas por vendedores e classificar automaticamente

JSON para Importar

{
  "name": "Análise Automática de Produto",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Boas-vindas",
        "parameters": {
          "message": "Olá! Envie a foto do produto que deseja catalogar."
        }
      }
    },
    {
      "id": "media_1",
      "type": "media",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Receber Foto",
        "parameters": {
          "message": "Envie a imagem do produto:",
          "variableName": "productImage",
          "mediaType": "image"
        }
      }
    },
    {
      "id": "rekognition_1",
      "type": "aws_rekognition",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Analisar Produto",
        "operation": "detectLabels",
        "config": {
          "region": "us-east-1",
          "accessKeyId": "YOUR_ACCESS_KEY_ID",
          "secretAccessKey": "YOUR_SECRET_ACCESS_KEY"
        },
        "s3Bucket": "products-catalog",
        "s3Key": "uploads/{{productImage}}",
        "maxLabels": 15,
        "minConfidence": 80,
        "responseVariable": "productAnalysis"
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Resultado da Análise",
        "parameters": {
          "message": "✅ Produto analisado!\n\n📊 Categorias detectadas: {{productAnalysis.count}}\n\nO sistema identificou automaticamente as características do produto."
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1100, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "message_1" },
    { "source": "message_1", "target": "media_1" },
    { "source": "media_1", "target": "rekognition_1" },
    { "source": "rekognition_1", "target": "message_2" },
    { "source": "message_2", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Olá! Envie a foto do produto que deseja catalogar.
Sistema: Envie a imagem do produto:
Usuário: [envia foto de tênis]
Sistema: ✅ Produto analisado!

📊 Categorias detectadas: 12

O sistema identificou automaticamente as características do produto.

Exemplo 2: Organização de Biblioteca de Fotos

Objetivo: Categorizar automaticamente fotos em uma biblioteca por conteúdo

JSON para Importar

{
  "name": "Organização Automática de Fotos",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Solicitar Pasta",
        "parameters": {
          "message": "Digite o nome da pasta S3 para organizar (ex: fotos/viagem/):",
          "variableName": "folderPath"
        }
      }
    },
    {
      "id": "rekognition_1",
      "type": "aws_rekognition",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Analisar Fotos",
        "operation": "detectLabels",
        "config": {
          "region": "us-east-1",
          "accessKeyId": "YOUR_ACCESS_KEY_ID",
          "secretAccessKey": "YOUR_SECRET_ACCESS_KEY"
        },
        "s3Bucket": "my-photo-library",
        "s3Key": "{{folderPath}}",
        "maxLabels": 20,
        "minConfidence": 75,
        "responseVariable": "photoLabels"
      }
    },
    {
      "id": "condition_1",
      "type": "condition",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Verificar Categorias",
        "parameters": {
          "variableA": "{{photoLabels.count}}",
          "operator": "greaterThan",
          "variableB": "5"
        }
      }
    },
    {
      "id": "message_success",
      "type": "message",
      "position": { "x": 900, "y": 50 },
      "data": {
        "label": "Sucesso",
        "parameters": {
          "message": "✅ Fotos categorizadas!\n\n📂 {{photoLabels.count}} categorias identificadas\n\nSuas fotos foram organizadas automaticamente."
        }
      }
    },
    {
      "id": "message_few",
      "type": "message",
      "position": { "x": 900, "y": 150 },
      "data": {
        "label": "Poucas Categorias",
        "parameters": {
          "message": "⚠️ Apenas {{photoLabels.count}} categorias detectadas.\n\nTalvez a imagem seja muito simples ou de baixa qualidade."
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1100, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "rekognition_1" },
    { "source": "rekognition_1", "target": "condition_1" },
    { "source": "condition_1", "target": "message_success", "label": "true" },
    { "source": "condition_1", "target": "message_few", "label": "false" },
    { "source": "message_success", "target": "end_1" },
    { "source": "message_few", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Digite o nome da pasta S3 para organizar (ex: fotos/viagem/):
Usuário: fotos/ferias-praia/imagem001.jpg
Sistema: ✅ Fotos categorizadas!

📂 14 categorias identificadas

Suas fotos foram organizadas automaticamente.

Exemplo 3: Controle de Qualidade de Imagens

Objetivo: Verificar se imagens de produtos atendem critérios mínimos de conteúdo

JSON para Importar

{
  "name": "Controle de Qualidade - Fotos de Produto",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Instrução",
        "parameters": {
          "message": "🔍 Sistema de Controle de Qualidade\n\nEnvie a foto do produto para validação."
        }
      }
    },
    {
      "id": "media_1",
      "type": "media",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Receber Imagem",
        "parameters": {
          "message": "Envie a foto:",
          "variableName": "productPhoto",
          "mediaType": "image"
        }
      }
    },
    {
      "id": "rekognition_1",
      "type": "aws_rekognition",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Analisar Qualidade",
        "operation": "detectLabels",
        "config": {
          "region": "us-east-1",
          "accessKeyId": "YOUR_ACCESS_KEY_ID",
          "secretAccessKey": "YOUR_SECRET_ACCESS_KEY"
        },
        "imageBytes": "{{productPhoto}}",
        "maxLabels": 25,
        "minConfidence": 90,
        "responseVariable": "qualityCheck"
      }
    },
    {
      "id": "condition_1",
      "type": "condition",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Verificar Rótulos",
        "parameters": {
          "variableA": "{{qualityCheck.count}}",
          "operator": "greaterThanOrEqual",
          "variableB": "10"
        }
      }
    },
    {
      "id": "message_approved",
      "type": "message",
      "position": { "x": 1100, "y": 50 },
      "data": {
        "label": "Aprovado",
        "parameters": {
          "message": "✅ FOTO APROVADA!\n\n{{qualityCheck.count}} características detectadas com alta confiança.\n\nA imagem atende aos critérios de qualidade."
        }
      }
    },
    {
      "id": "message_rejected",
      "type": "message",
      "position": { "x": 1100, "y": 150 },
      "data": {
        "label": "Rejeitado",
        "parameters": {
          "message": "❌ FOTO REJEITADA\n\nApenas {{qualityCheck.count}} características detectadas.\n\n⚠️ A imagem não atende aos critérios mínimos. Por favor:\n• Use melhor iluminação\n• Aproxime mais do produto\n• Evite fundos confusos"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1300, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "message_1" },
    { "source": "message_1", "target": "media_1" },
    { "source": "media_1", "target": "rekognition_1" },
    { "source": "rekognition_1", "target": "condition_1" },
    { "source": "condition_1", "target": "message_approved", "label": "true" },
    { "source": "condition_1", "target": "message_rejected", "label": "false" },
    { "source": "message_approved", "target": "end_1" },
    { "source": "message_rejected", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: 🔍 Sistema de Controle de Qualidade

Envie a foto do produto para validação.
Sistema: Envie a foto:
Usuário: [envia foto]
Sistema: ✅ FOTO APROVADA!

15 características detectadas com alta confiança.

A imagem atende aos critérios de qualidade.

Resposta do Node

{
  "labels": [
    {
      "Name": "Person",
      "Confidence": 98.76543,
      "Instances": [],
      "Parents": [],
      "Aliases": [],
      "Categories": []
    },
    {
      "Name": "Clothing",
      "Confidence": 95.12345,
      "Instances": [],
      "Parents": [],
      "Aliases": [],
      "Categories": []
    }
  ],
  "count": 2
}

Boas Práticas

SIM:

  • Use minConfidence entre 70-90 para equilíbrio entre precisão e recall
  • Armazene imagens no S3 para melhor desempenho e custos
  • Configure maxLabels baseado na sua necessidade real (evite excesso)
  • Use confiança alta (85+) para automações críticas
  • Combine com outros serviços AWS para pipelines completos
  • Cache resultados para imagens recorrentes

NÃO:

  • Não use minConfidence muito baixo (<50) - gera ruído
  • Não envie imagens muito grandes via base64 - use S3
  • Não processe a mesma imagem múltiplas vezes - cache resultados
  • Não ignore o campo Confidence nos resultados
  • Não use para detecção facial - use detectFaces específico

Dicas

💡 Dica 1: Para e-commerce, use minConfidence: 85 para garantir alta precisão na categorização automática.

💡 Dica 2: Labels retornam hierarquia de categorias - use o campo Parents para navegação por categorias.

💡 Dica 3: Para moderação de conteúdo, use detectModerationLabels ao invés de detectLabels - é otimizado para conteúdo impróprio.

💡 Dica 4: Combine detectLabels com AWS Lambda para processar imagens automaticamente quando enviadas ao S3.

💡 Dica 5: A AWS cobra por imagem analisada - otimize redimensionando imagens antes do envio.

Próximas Operações

detectFaces - Detectar e analisar rostos em imagens → compareFaces - Comparar rostos entre duas imagens → detectText - Extrair texto de imagens → detectModerationLabels - Detectar conteúdo impróprio → recognizeCelebrities - Identificar celebridades em fotos