Dans le paysage numérique actuel, le respect des réglementations Know Your Customer (KYC) est primordial pour les entreprises opérant dans les services financiers, les marchés en ligne et d’autres secteurs nécessitant l’identification des utilisateurs. Traditionnellement, les processus KYC reposaient sur la vérification manuelle des documents, une approche chronophage et sujette aux erreurs. Ce guide explique comment Amazon Rekognition, un puissant service d’IA basé sur le cloud d’AWS, spécialisé dans le visage et l’analyse, peut révolutionner votre stratégie KYC en ligne, en la transformant en un processus rationalisé, sécurisé et rentable.
"Documents d'identité" : [
{
"DocumentIndex": 1,
"IdentityDocumentFields": [
{
"Type": {
"Text": "FIRST_NAME"
},
"ValueDetection": {
"Text": "xyz",
"Confidence": 93.61839294433594
}
},
{
"Type": {
"Text": "LAST_NAME"
},
"ValueDetection": {
"Text": "abc",
"Confidence": 96.3537826538086
}
},
{
"Type": {
"Text": "MIDDLE_NAME"
},
"ValueDetection": {
"Text": "",
"Confidence": 99.16631317138672
}
},
{
"Type": {
"Text": "SUFFIX"
},
"ValueDetection": {
"Text": "",
"Confidence": 99.16964721679688
}
},
{
"Type": {
"Text": "CITY_IN_ADDRESS"
},
"ValueDetection": {
"Text": "",
"Confidence": 99.17261505126953
}
},
{
"Type": {
"Text": "ZIP_CODE_IN_ADDRESS"
},
"ValueDetection": {
"Text": "",
"Confidence": 99.17854309082031
}
},
{
"Type": {
"Text": "STATE_IN_ADDRESS"
},
"ValueDetection": {
"Text": "",
"Confidence": 99.15782165527344
}
},
{
"Type": {
"Text": "STATE_NAME"
},
"ValueDetection": {
"Text": "",
"Confidence": 99.16664123535156
}
},
{
"Type": {
"Text": "DOCUMENT_NUMBER"
},
"ValueDetection": {
"Text": "123456",
"Confidence": 95.29527282714844
}
},
{
"Type": {
"Text": "EXPIRATION_DATE"
},
"ValueDetection": {
"Text": "22 OCT 2024",
"NormalizedValue": {
"Value": "2024-10-22T00:00:00",
"ValueType": "Date"
},
"Confidence": 95.7198486328125
}
},
{
"Type": {
"Text": "DATE_OF_BIRTH"
},
"ValueDetection": {
"Text": "1 SEP 1994",
"NormalizedValue": {
"Value": "1994-09-01T00:00:00",
"ValueType": "Date"
},
"Confidence": 97.41930389404297
}
},
{
"Type": {
"Text": "DATE_OF_ISSUE"
},
"ValueDetection": {
"Text": "23 OCT 2004",
"NormalizedValue": {
"Value": "2004-10-23T00:00:00",
"ValueType": "Date"
},
"Confidence": 96.1384506225586
}
},
{
"Type": {
"Text": "ID_TYPE"
},
"ValueDetection": {
"Text": "PASSPORT",
"Confidence": 98.65157318115234
}
}
La commande ci-dessus utilise la commande AWS Textract analyze-id pour extraire des informations de l’image déjà téléchargée dans S3. Le JSON de sortie contient également des boîtes de délimitation, c’est pourquoi je l’ai tronqué pour ne montrer que les informations clés. Comme vous pouvez le voir, la commande a extrait toutes les informations requises ainsi que le niveau de confiance de la valeur du texte.
Traduit avec DeepL.com (version gratuite)
textract_client = boto3.client('textract', region_name="us-east-1")
def analyze_id(document_file_name)->dict:
if document_file_name is not None:
with open(document_file_name, "rb") as document_file:
idcard_bytes = document_file.read()
'''
Analyze the image using Amazon Textract.
'''
try:
response = textract_client.analyze_id(
DocumentPages=[
{'Bytes': idcard_bytes},
]) renvoie la réponse sauf texttract_client.exceptions.UnsupportedDocumentException : logger.error('L'utilisateur %s a fourni un document non valide.' % inputRequest.user_id) raise InvalidImageError('UnsupportedDocument') except texttract_client.exceptions.DocumentTooLargeException : logger.error('User % Le document fourni est trop volumineux.' % inputRequest.user_id) raise InvalidImageError('DocumentTooLarge') except texttract_client.exceptions.ProvisionedThroughputExceededException: logger.error('Débit de texte dépassé.') raise InvalidImageError('ProvisionedThroughputExceeded') except textract_client.exceptions.ThrottlingException : logger.error('Débit de texte dépassé.') lève InvalidImageError('ThrottlingException') sauf texttract_client.exceptions.InternalServerError : logger.error('Erreur de serveur interne de texte.') lève InvalidImageError('ProvisionedThroughputExceeded') résultat = analyse_id(' id.jpeg') print(result) # imprimer la sortie brute
{
"UnmatchedFaces": [],
"FaceMatches": [
{
"Face": {
"BoundingBox": {
"Width": 0.12368916720151901,
"Top": 0.16007372736930847,
"Left": 0.5901257991790771,
"Height": 0.25140416622161865
},
"Confidence": 99.0,
"Pose": {
"Yaw": -3.7351467609405518,
"Roll": -0.10309021919965744,
"Pitch": 0.8637830018997192
},
"Quality": {
"Sharpness": 95.51618957519531,
"Brightness": 65.29893493652344
},
"Landmarks": [
{
"Y": 0.26721030473709106,
"X": 0.6204193830490112,
"Type": "eyeLeft"
},
{
"Y": 0.26831310987472534,
"X": 0.6776827573776245,
"Type": "eyeRight"
},
{
"Y": 0.3514654338359833,
"X": 0.6241428852081299,
"Type": "mouthLeft"
},
{
"Y": 0.35258132219314575,
"X": 0.6713621020317078,
"Type": "mouthRight"
},
{
"Y": 0.3140771687030792,
"X": 0.6428444981575012,
"Type": "nose"
}
]
},
"Similarity": 100.0
}
],
"SourceImageFace": {
"BoundingBox": {
"Width": 0.12368916720151901,
"Top": 0.16007372736930847,
"Left": 0.5901257991790771,
"Height": 0.25140416622161865
},
"Confidence": 99.0
}
}
Comme vous pouvez le voir ci-dessus, il a été démontré qu’il n’existe pas de visage inégalé et que le visage correspond avec un niveau de confiance de 99 %. Il a également renvoyé des cadres de délimitation en tant que sortie supplémentaire. Voyons maintenant l’implémentation de Python.
Code Python
rek_client = boto3.client('rekognition', region_name="us-east-1")
response = rek_client.compare_faces(
SimilarityThreshold=0.9,
SourceImage={
'S3Object': {
'Bucket': bucket,
'Name': idcard_name
}
},
TargetImage={
'S3Object': {
'Bucket': bucket,
'Name': name
}
})
if len(response['FaceMatches']) == 0:
IsMatch="False"
Reason = 'Property FaceMatches is empty.'
facenotMatch = False
for match in response['FaceMatches']:
similarity:float = match['Similarity']
if similarity > 0.9:
IsMatch = True,
Reason = 'All checks passed.'
else:
facenotMatch = True
Le code ci-dessus comparera le visage détecté à partir de la carte d’identité et de la session Liveness en gardant le seuil à 90 %. Si le visage correspond, la variable IsMatch sera définie sur True. Ainsi, avec un seul appel de fonction, nous pouvons comparer les deux visages, tous deux déjà téléchargés dans le compartiment S3.
Ainsi enfin, nous pouvons enregistrer l’utilisateur valide et compléter son KYC. Comme vous pouvez le constater, cette opération est entièrement automatisée et initiée par l’utilisateur, et aucune autre personne n’est impliquée. Le processus a également raccourci l’intégration des utilisateurs par rapport au processus manuel actuel.
J’ai aimé l’une des fonctionnalités très utiles de Texttract : vous pouvez poser des questions spécifiques, par exemple « Quel est le numéro d’identité ». Laissez-moi vous montrer comment procéder à l’aide de l’AWS CLI.
aws textract analyze-document --document '{"S3Object":{"Bucket":"ARN","Name":"id.jpg"}}' \
--feature-types '["QUERIES"]' --queries-config '{"Queries":[{"Text":"What is the Identity No"}]}'
Veuillez noter que plus tôt, j’ai utilisé la fonction analyse-id alors que maintenant j’ai utilisé analyse-document pour interroger le document. Ceci est très utile s’il y a des champs spécifiques dans la carte d’identité qui ne sont pas extraits par la fonction analyse-id. La fonction d’analyse d’identité fonctionne bien pour toutes les cartes d’identité américaines, mais elle fonctionne également bien avec les cartes d’identité du gouvernement indien. Néanmoins, si certains champs ne sont pas extraits, la fonction de requête peut être utilisée.
AWS utilise le service Cognito pour gérer l’identité de l’utilisateur, l’ID utilisateur et les identifiants de visage stockés dans DynamoDB. L’exemple de code AWS compare également les images de la base de données existante afin que le même utilisateur ne puisse pas se réinscrire en utilisant un identifiant ou un nom d’utilisateur différent. Ce type de validation est indispensable pour un système KYC automatisé robuste.
En adoptant AWS Rekognition pour Automated Self KYC, vous pouvez transformer votre processus d’intégration des utilisateurs d’un obstacle laborieux en une expérience fluide et sécurisée. Amazon Rekognition fournit une solution robuste pour la mise en œuvre de systèmes de vérification d’identité dotés de capacités avancées de reconnaissance faciale. En tirant parti de ses fonctionnalités, les développeurs peuvent améliorer les mesures de sécurité, rationaliser les processus d’authentification des utilisateurs et offrir des expériences utilisateur transparentes dans diverses applications et secteurs.
Avec le guide complet décrit ci-dessus, vous êtes bien équipé pour vous lancer dans la mise en œuvre efficace de la vérification d’identité à l’aide d’Amazon Rekognition. Profitez de la puissance de la vérification d’identité basée sur l’IA et débloquez de nouvelles possibilités dans le domaine de la gestion de l’identité numérique.
Les médias présentés dans cet article n’appartiennent pas à Analytics Vidhya et sont utilisés à la discrétion de l’auteur.