Logo Zéphyrnet

Comment mettre en œuvre la vérification d'identité à l'aide d'Amazon Rekognition

Date :

Introduction

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 la reconnaissance et l'analyse faciales, peut révolutionner votre stratégie KYC en ligne, en la transformant en un processus rationalisé, sécurisé et rentable.

KYC avec Amazon Rekognition d'AWS

Objectifs d'apprentissage

  • Comprendre l'importance des réglementations Know Your Customer (KYC) dans divers secteurs et les défis associés aux processus de vérification manuelle.
  • Découvrez les capacités d'Amazon Rekognition en tant que service d'IA basé sur le cloud spécialisé dans la reconnaissance et l'analyse faciales.
  • Découvrez les étapes impliquées dans la mise en œuvre de la vérification d'identité à l'aide d'Amazon Rekognition, y compris l'intégration des utilisateurs, extraction de texte, détection de vivacité, analyse faciale et correspondance de visage.
  • Comprenez l'importance de tirer parti de la vérification d'identité basée sur l'IA pour améliorer les mesures de sécurité, rationaliser les processus d'authentification des utilisateurs et améliorer l'expérience utilisateur.

Cet article a été publié dans le cadre du Blogathon sur la science des données.

Table des matières

Comprendre les défis KYC

La réglementation KYC oblige les entreprises à vérifier l'identité de leurs utilisateurs pour atténuer la fraude, le blanchiment d'argent et d'autres délits financiers. Cette vérification implique généralement la collecte et la validation de documents d'identité délivrés par le gouvernement. Bien que ces réglementations soient essentielles au maintien d’un écosystème financier sécurisé, les processus de vérification manuelle créent des défis :

  • Impact de la pandémie : Pendant la pandémie, le secteur financier a été confronté à d’importantes difficultés pour intégrer de nouveaux clients, car les déplacements étaient restreints. Par conséquent, une vérification manuelle en masse n’est pas possible. Ainsi, en mettant en œuvre le KYC en ligne, votre entreprise est prête pour de tels événements futurs.
  • Erreurs humaines: La vérification manuelle est sujette à des erreurs, permettant potentiellement à des enregistrements frauduleux de passer entre les mailles du filet.
  • Gestion des identifiants : Étant donné que la documentation est une copie imprimée, sa gestion constitue un défi croissant. Les copies peuvent être perdues, brûlées, volées, mal utilisées, etc.

Qu’est-ce qu’Amazon Rekognition ?

Amazon Rekognition est un puissant service d'analyse d'images et de vidéos proposé par Amazon Web Services (AWS). Il utilise des algorithmes avancés d'apprentissage automatique pour analyser le contenu visuel des images et des vidéos, permettant aux développeurs d'extraire des informations précieuses et d'effectuer diverses tâches telles que la détection d'objets, la reconnaissance faciale et la vérification d'identité. Le diagramme simpliste ci-dessous donne une bonne idée des fonctionnalités et des services impliqués.

Source AWS : Différents services sous Rekogni

Vérification d'identité avec Amazon Rekognition

Avant de vous présenter la mise en œuvre, permettez-moi de vous donner une idée générale et les étapes impliquées dans la mise en œuvre de la vérification d'identité pour notre KYC en ligne.

  1. Intégration des utilisateurs : Ce processus sera spécifique à l’entreprise. Cependant, au minimum, l'entreprise aura besoin du prénom, du deuxième prénom, du nom de famille, de la date de naissance, de la date d'expiration de la carte d'identité et d'une photo au format passeport. Toutes ces informations peuvent être collectées en demandant à l'utilisateur de télécharger une image d'une carte d'identité nationale.
  2. Extraire le texte : Le service AWS Texttract peut extraire proprement toutes les informations ci-dessus de la carte d'identité téléchargée. De plus, nous pouvons également interroger Texttract pour récupérer des informations spécifiques de la carte d'identité.
  3. Vivacité et reconnaissance faciale : Pour s'assurer que l'utilisateur essayant de faire son KYC est actif sur l'écran et est en direct lorsque la session de vivacité démarre. Amazon Rekognition peut détecter et comparer avec précision les visages dans les images ou les flux vidéo.
  4. Analyse faciale : Une fois qu'un visage est capturé, il fournit des informations détaillées sur les attributs du visage tels que l'âge, le sexe, les émotions et les repères du visage. De plus, il validera également si l'utilisateur porte des lunettes de soleil ou si son visage est couvert par d'autres objets.
  5. Correspondance des visages : Après avoir vérifié la vivacité, nous pouvons effectuer une correspondance de visage pour vérifier l'identité des individus sur la base des images de référence extraites de la carte d'identité nationale et de l'image actuelle de la session Liveness.
Comment le KYC en ligne est réalisé avec Amazon Rekognition d'AWS

Comme vous pouvez le constater, Rekognition facilite l'enregistrement rapide des utilisateurs en analysant un selfie capturé et en le comparant à une pièce d'identité émise par le gouvernement téléchargée par l'utilisateur. Les capacités de détection d'activité de Rekognition aident à contrecarrer les tentatives d'usurpation d'identité en invitant les utilisateurs à effectuer des actions spécifiques comme cligner des yeux ou tourner la tête. Cela garantit que l’utilisateur qui s’enregistre est une personne réelle et non une photo intelligemment déguisée ou un faux. Ce processus automatisé réduit considérablement les délais d'intégration, améliorant ainsi l'expérience utilisateur. La reconnaissance élimine le risque d'erreur humaine inhérent à la vérification manuelle. De plus, les algorithmes de reconnaissance faciale atteignent des taux de précision élevés, garantissant une vérification d’identité fiable.

Je sais que vous avez maintenant très hâte de le voir en action, alors allons-y tout de suite.

Mise en œuvre de la vérification d'identité : la solution KYC automatisée

Étape 1 : configuration du compte AWS

Avant de commencer, assurez-vous d'avoir un compte AWS actif. Vous pouvez créer un compte AWS sur le site Web AWS si ce n'est pas déjà fait. Une fois inscrit, activez les services Rekognition. AWS fournit une documentation complète et des didacticiels pour faciliter ce processus.

Étape 2 : configuration des autorisations IAM

Si vous souhaitez utiliser Python ou AWS CLI, cette étape est requise. Vous devez fournir l'autorisation pour accéder à Rekognition, S3 et Texttract. Cela peut être fait depuis la console.

Étape 3 : Télécharger l'identifiant national de l'utilisateur

Je vais le démontrer via CLI, Python et une interface graphique. Si vous recherchez un code pour une interface graphique, AWS a mis en ligne un joli exemple sur git. Cet article a déployé le même code pour afficher une interface graphique.

aws textract analyze-id --document-pages 
'{"S3Object":{"Bucket":"bucketARN","Name":"id.jpg"}}'
"IdentityDocuments": [
        {
            "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 analyse-id pour extraire les informations de l'image déjà téléchargée dans S3. Le JSON de sortie contient également des cadres de délimitation, j'ai donc tronqué pour afficher uniquement les informations clés. Comme vous pouvez le voir, il a extrait toutes les informations requises ainsi que le niveau de confiance de la valeur du texte.

Utiliser les fonctions Python

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},
      ])

    return response
  except textract_client.exceptions.UnsupportedDocumentException:
    logger.error('User %s provided an invalid document.' % inputRequest.user_id)
    raise InvalidImageError('UnsupportedDocument')
  except textract_client.exceptions.DocumentTooLargeException:
    logger.error('User %s provided document too large.' % inputRequest.user_id)
    raise InvalidImageError('DocumentTooLarge')
  except textract_client.exceptions.ProvisionedThroughputExceededException:
    logger.error('Textract throughput exceeded.')
    raise InvalidImageError('ProvisionedThroughputExceeded')
  except textract_client.exceptions.ThrottlingException:
    logger.error('Textract throughput exceeded.')
    raise InvalidImageError('ThrottlingException')
  except textract_client.exceptions.InternalServerError:
    logger.error('Textract Internal Server Error.')
    raise InvalidImageError('ProvisionedThroughputExceeded')

result = analyze_id('id.jpeg')
print(result) # print raw output

Utilisation de l'interface graphique

ID national extrait à l'aide d'AWS Text | reconnaissance faciale pour KYC
ID national extrait à l'aide d'AWS Text | reconnaissance faciale pour KYC

Comme vous pouvez le voir, Texttract a récupéré toutes les informations pertinentes et affiche également le type d'ID. Ces informations peuvent être utilisées pour enregistrer le client ou l'utilisateur. Mais avant cela, effectuons une vérification de la vivacité pour vérifier qu'il s'agit d'une personne réelle.

Vérification de la vivacité

Une fois que l'utilisateur clique sur commencer la vérification dans l'image ci-dessous, il détectera d'abord le visage, et si un seul visage est à l'écran, il démarrera la session Liveness. Pour des raisons de confidentialité, je ne peux pas afficher l'intégralité de la session Liveness. Cependant, vous pouvez vérifier ceci lien vidéo de démonstration. La session Liveness fournira des résultats en % de confiance. Nous pouvons également définir un seuil en dessous duquel la session Liveness échouera. Pour des applications critiques comme celle-ci, il convient de maintenir le seuil à 95 %.

Vérification de la vivacité sur Amazon Rekognition | reconnaissance faciale pour KYC

Outre la confiance, la séance Liveness fournira également les émotions et les corps étrangers détectés sur le visage. Si l'utilisateur porte des lunettes de soleil ou montre des expressions comme la colère, etc., l'application peut rejeter l'image.

Code Python

rek_client = boto3.client('rekognition', region_name='us-east-1')
sessionid = rek_client.create_face_liveness_session(Settings={'AuditImagesLimit':1, 
           'OutputConfig': {"S3Bucket": 'IMAGE_BUCKET_NAME'}})
           
session = rek_client.get_face_liveness_session_results(
            SessionId=sessionid)

Comparaison des visages

Une fois que l'utilisateur a terminé avec succès la session Liveness, l'application doit comparer le visage avec le visage détecté à partir de l'ID. C'est la partie la plus critique de notre application. Nous ne voulons pas enregistrer un utilisateur dont le visage ne correspond pas à son identifiant. Le visage détecté à partir de l'identifiant téléchargé est déjà stocké dans S3 par le code qui servira d'image de référence. De même, le visage de la session liveness est également stocké dans S3. Vérifions d'abord l'implémentation de la CLI.

Commande CLI

aws rekognition compare-faces 
      --source-image '{"S3Object":{"Bucket":"imagebucket","Name":"reference.jpg"}}' 
      --target-image '{"S3Object":{"Bucket":"imagebucket","Name":"liveness.jpg"}}' 
      --similarity-threshold 0.9

Sortie

{
              "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 bucket 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.

Étape 4 : Requête d'un document tel que GPT

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.

Conclusion

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.

Faits marquants

  • Amazon Rekognition offre des capacités avancées de reconnaissance faciale et d'analyse, facilitant des processus de vérification d'identité rationalisés et sécurisés.
  • Il permet l'intégration automatisée des utilisateurs en extrayant les informations essentielles des cartes d'identité émises par le gouvernement et en effectuant des contrôles d'activité.
  • Les étapes de mise en œuvre incluent la configuration des services AWS, la configuration des autorisations IAM et l'utilisation de fonctions Python ou d'interfaces graphiques pour l'extraction de texte et les comparaisons faciales.
  • Les contrôles d'activité en temps réel améliorent la sécurité en garantissant la présence des utilisateurs lors de la vérification, tandis que les comparaisons faciales valident les identités par rapport aux images de référence.

Les médias présentés dans cet article n'appartiennent pas à Analytics Vidhya et sont utilisés à la discrétion de l'auteur.

spot_img

Dernières informations

spot_img