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/