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:
- Catalogação Automática: Identificar automaticamente o conteúdo de imagens para organização
- Busca Visual: Permitir busca de imagens por conteúdo detectado
- Moderação de Conteúdo: Classificar imagens por tipo de conteúdo
- Análise de Produtos: Identificar produtos e itens em fotos de catálogo
- Processamento em Massa: Analisar milhares de imagens automaticamente
Como funciona internamente?
Quando o detectLabels é executado, o sistema:
- Valida Credenciais: Verifica region, accessKeyId e secretAccessKey da AWS
- Cria Cliente Rekognition: Instancia o cliente AWS Rekognition com as credenciais
- Determina Fonte da Imagem: Aceita imagem do S3 (bucket + key) ou bytes em base64
- Configura Parâmetros: Define MaxLabels (máximo de rótulos) e MinConfidence (confiança mínima)
- Envia Comando: Executa DetectLabelsCommand na API da AWS
- Processa Resposta: Extrai labels detectados com scores de confiança
- 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
- E-commerce: "Analisar fotos de produtos enviadas por vendedores e classificar automaticamente por categoria"
- Redes Sociais: "Identificar conteúdo de fotos compartilhadas para sugerir hashtags relevantes"
- Gestão de Ativos: "Organizar biblioteca de imagens por conteúdo detectado (natureza, pessoas, objetos)"
- 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
detectFacesoucompareFacespara análise facial - Extração de Texto: Use AWS Textract
detectTextpara OCR - Conteúdo Impróprio: Use
detectModerationLabelspara moderação de conteúdo - Celebridades: Use
recognizeCelebritiespara 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
minConfidenceentre 70-90 para equilíbrio entre precisão e recall - Armazene imagens no S3 para melhor desempenho e custos
- Configure
maxLabelsbaseado 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
minConfidencemuito 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
Confidencenos resultados - Não use para detecção facial - use
detectFacesespecí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