By: Date: 30 de outubro de 2024 Categories: Desenvolvimento,Nuvem,RPA Tags:, , ,

Neste tutorial, vou mostrar como criar um bot simples utilizando o serviço Rekognition da AWS para realizar comparação facial entre um documento de identidade e uma foto capturada. Este projeto é uma Prova de Conceito (POC) que pode ser expandida para um bot mais avançado no futuro.

Objetivo do Projeto

O objetivo deste bot é criar uma solução eficiente que assegure a autenticidade e a correspondência entre a identificação fornecida e a imagem capturada, contribuindo para um processo mais seguro e confiável.

Pré-requisitos

Antes de começarmos, certifique-se de que você tem:

  • Uma conta na AWS.
  • O AWS CLI configurado em sua máquina.
  • O Python instalado.
  • As bibliotecas boto3 instaladas.
    Você pode instalar usando o comando:
pip install boto3

Estrutura do Projeto

Clone o repositório do projeto no seu computador:

git clone https://github.com/serratiago/aws_CompareFaces.gitcd aws_CompareFaces

Estrutura de Pastas

Dentro do diretório do projeto, você deve ter a seguinte estrutura:

aws_CompareFaces/
├── imgs/
│   ├── documento.jpg        # Documento de identidade
│   └── foto_capturada.jpg   # Foto capturada durante a assinatura do contrato
├── CompareFaces.py
├── credentials              # Arquivo com suas credenciais AWS
└── config                   # Arquivo de configuração

Configurando Credenciais da AWS

No diretório raiz do projeto, crie um arquivo chamado credentials e adicione suas credenciais da AWS:

[default]
aws_access_key_id= SEU ID AWS
aws_secret_access_key= SEU SECRET KEY AWS


Em seguida, crie um arquivo chamado config com as informações da sua região:
[default]
region = SUA REGIÃO AWS

# SSO Profile

[profile my-sso-profile]

sso_start_url = https://my-sso-portal.awsapps.com/start sso_region = SUA REGIÃO AWS sso_account_id = SEU ID sso_role_name = SUA ROLE # IAM Role Profile

[profile my-iam-role]

role_arn=arn:aws: SEU ARN source_profile=my-sso-profile region=SUA REGIÃO AWS

Criando o Bot de Comparação Facial

Agora, vamos olhar para o código que faz a comparação facial. O arquivo CompareFaces.py é onde a mágica acontece.
Aqui está o código:

import boto3
import sys

def compare_faces(source_file, target_file):
client = boto3.client('rekognition')

try:
with open(source_file, 'rb') as image_source, open(target_file, 'rb') as image_target:
response = client.compare_faces(
SimilarityThreshold=70,
SourceImage={'Bytes': image_source.read()},
TargetImage={'Bytes': image_target.read()}
)

if 'FaceMatches' in response and response['FaceMatches']:
for faceMatch in response['FaceMatches']:
position = faceMatch['Face']['BoundingBox']
confidence = str(faceMatch['Face']['Confidence'])
print('#001 ' + confidence + '% de compatibilidade!')
else:
print('#000 Sem compatibilidade!')

except FileNotFoundError:
print(f'#000 Erro: Arquivo(s) não encontrados, verifique por favor; {source_file} e {target_file}.')
except Exception as e:
print(f'#000 Erro: Algo fora dos padrões ocorreu durante o processamento: {e}')

if __name__ == "__main__":
if len(sys.argv) != 3:
print('#000 Erro: Chamanda incorreta; CompareFaces.py <source_file> <target_file>')
sys.exit(1)

source_file_input = sys.argv[1]
target_file_input = sys.argv[2]

compare_faces(source_file_input, target_file_input)
#Resposta da API

{

"targetImageConfidence": 99.97916,
"sourceImageConfidence": 99.993195
"similarity": 99.88753,
"isMatchedFace": true,
"targetImageQuality": {
"brightness": 78.492744,
"sharpness": 16.49492
}
}

Como Usar

Para executar o bot, use o terminal e navegue até o diretório do projeto. Depois, execute o seguinte comando:

bashCopiar códigopython CompareFaces.py imgs/documento.jpg imgs/foto_capturada.jpg

O Que Esperar

  • Se as faces forem compatíveis, você verá uma mensagem indicando a porcentagem de confiança da comparação.
  • Se não houver compatibilidade, uma mensagem indicará que não foram encontradas correspondências.

Conclusão

Parabéns! Você criou um bot de comparação facial utilizando o AWS Rekognition. Este projeto é um ponto de partida que pode ser expandido para soluções mais avançadas no futuro. Sinta-se à vontade para modificar e aprimorar o código conforme necessário.

Meu post no linkedin: https://www.linkedin.com/