Zephyrnet-logo

Hoe identiteitsverificatie te implementeren met behulp van Amazon Rekognition

Datum:

Introductie

In het huidige digitale landschap is het naleven van de Know Your Customer (KYC)-regelgeving van cruciaal belang voor bedrijven die actief zijn in de financiële dienstverlening, online marktplaatsen en andere sectoren waar gebruikersidentificatie vereist is. Traditioneel zijn KYC-processen gebaseerd op handmatige documentverificatie, een tijdrovende en foutgevoelige aanpak. Deze gids gaat dieper in op hoe Amazon Rekognition, een krachtige cloudgebaseerde AI-service van AWS, gespecialiseerd in gezichtsherkenning en -analyse, een revolutie teweeg kan brengen in uw online KYC-strategie en deze kan transformeren in een gestroomlijnd, veilig en kosteneffectief proces.

KYC met Amazon Rekognition van AWS

leerdoelen

  • Begrijp het belang van Know Your Customer (KYC)-regelgeving in verschillende sectoren en de uitdagingen die gepaard gaan met handmatige verificatieprocessen.
  • Ontdek de mogelijkheden van Amazon Rekognition als een cloudgebaseerde AI-service die gespecialiseerd is in gezichtsherkenning en -analyse.
  • Leer de stappen die betrokken zijn bij het implementeren van identiteitsverificatie met Amazon Rekognition, inclusief onboarding van gebruikers, tekstextractie, liveness-detectie, gezichtsanalyse en gezichtsmatching.
  • Begrijp het belang van het gebruik van AI-gestuurde identiteitsverificatie voor het verbeteren van beveiligingsmaatregelen, het stroomlijnen van gebruikersauthenticatieprocessen en het verbeteren van gebruikerservaringen.

Dit artikel is gepubliceerd als onderdeel van het Data Science-blogathon.

Inhoudsopgave

KYC-uitdagingen begrijpen

De KYC-regelgeving schrijft voor dat bedrijven de identiteit van hun gebruikers moeten verifiëren fraude verminderen, het witwassen van geld en andere financiële misdrijven. Deze verificatie omvat doorgaans het verzamelen en valideren van door de overheid uitgegeven identificatiedocumenten. Hoewel deze regelgeving essentieel is voor het behoud van een veilig financieel ecosysteem, zorgen handmatige verificatieprocessen voor uitdagingen:

  • Pandemische impact: Tijdens de pandemie werd de financiële sector geconfronteerd met grote uitdagingen bij het werven van nieuwe klanten, omdat de bewegingsvrijheid beperkt was. Daarom is handmatige verificatie in bulk niet mogelijk. Dus door online KYC te implementeren, is uw bedrijf klaar voor dergelijke toekomstige evenementen.
  • Menselijke fouten: Handmatige verificatie is gevoelig voor fouten, waardoor frauduleuze registraties mogelijk door de mazen van het net glippen.
  • ID's beheren: Omdat de documentatie een gedrukt exemplaar is, wordt het beheer ervan een steeds grotere uitdaging. De kopieën kunnen verloren gaan, worden verbrand, gestolen, misbruikt, enz.

Wat is Amazon-herkenning?

Amazon Rekognition is een krachtige beeld- en videoanalyseservice die wordt aangeboden door Amazon Web Services (AWS). Het maakt gebruik van geavanceerde machine learning-algoritmen om visuele inhoud in afbeeldingen en video's te analyseren, waardoor ontwikkelaars waardevolle inzichten kunnen verkrijgen en verschillende taken kunnen uitvoeren, zoals objectdetectie, gezichtsherkenning en identiteitsverificatie. Het onderstaande simplistische diagram geeft een goed beeld van de betrokken functies en services.

Bron AWS: Verschillende services onder Rekogni

Identiteitsverificatie met Amazon Rekognition

Voordat ik u meeneem naar de implementatie, wil ik u een idee op hoog niveau geven en de stappen die betrokken zijn bij het implementeren van identiteitsverificatie voor onze online KYC.

  1. Onboarding van gebruikers: Dit proces zal specifiek zijn voor het bedrijf. Het bedrijf heeft echter minimaal een voornaam, middelste naam, achternaam, geboortedatum, vervaldatum van de identiteitskaart en een pasfoto nodig. Al deze informatie kan worden verzameld door de gebruiker te vragen een afbeelding van een nationale identiteitskaart te uploaden.
  2. Tekst extraheren: De AWS Textract-service kan alle bovenstaande informatie netjes uit de geüploade ID-kaart halen. Niet alleen dit, we kunnen Textract ook vragen om specifieke informatie van de ID-kaart op te halen.
  3. Levendigheid en gezichtsherkenning: Om ervoor te zorgen dat de gebruiker die zijn KYC probeert uit te voeren, actief is op het scherm en live is wanneer de liveness-sessie begint. Amazon Rekognition kan gezichten in afbeeldingen of videostreams nauwkeurig detecteren en vergelijken.
  4. Gezichtsanalyse: Zodra een gezicht is vastgelegd, biedt het gedetailleerd inzicht in gezichtskenmerken zoals leeftijd, geslacht, emoties en gezichtsherkenningspunten. Niet alleen dit, het zal ook valideren of de gebruiker een zonnebril heeft of dat zijn gezicht bedekt is door andere voorwerpen.
  5. Gezichtsaanpassing: Na het verifiëren van de Liveness kunnen we gezichtsmatching uitvoeren om de identiteit van individuen te verifiëren op basis van referentiebeelden uit de nationale identiteitskaart en de huidige afbeelding van de Liveness-sessie.
Hoe online KYC wordt gedaan met AWS' Amazon Rekognition

Zoals u kunt zien, vergemakkelijkt Rekognition een snelle gebruikersregistratie door een vastgelegde selfie te analyseren en deze te vergelijken met een door de overheid uitgegeven identiteitsbewijs dat door de gebruiker is geüpload. Liveness-detectiemogelijkheden binnen Rekognition helpen spoofing-pogingen te dwarsbomen door gebruikers te vragen specifieke acties uit te voeren, zoals knipperen of hun hoofd draaien. Dit zorgt ervoor dat de gebruiker die zich registreert een echte persoon is en geen slim vermomde foto of nep-foto. Dit geautomatiseerde proces verkort de onboardingtijden aanzienlijk, waardoor de gebruikerservaring wordt verbeterd. Herkenning elimineert de kans op menselijke fouten die inherent zijn aan handmatige verificatie. Bovendien bereiken gezichtsherkenningsalgoritmen een hoge nauwkeurigheid, waardoor een betrouwbare identiteitsverificatie wordt gegarandeerd.

Ik weet dat je nu heel enthousiast bent om het in actie te zien, dus laten we er meteen mee aan de slag gaan.

Identiteitsverificatie implementeren: de geautomatiseerde KYC-oplossing

Stap 1: Het AWS-account instellen

Zorg ervoor dat u een actief AWS-account heeft voordat u aan de slag gaat. U kunt zich op de AWS-website aanmelden voor een AWS-account als u dat nog niet heeft gedaan. Zodra u zich heeft aangemeld, activeert u de Rekognition-services. AWS biedt uitgebreide documentatie en tutorials om dit proces te vergemakkelijken.

Stap 2: IAM-rechten instellen

Als je Python of AWS CLI wilt gebruiken, is deze stap vereist. U moet toestemming geven voor toegang tot Rekognition, S3 en Textract. Dit kan vanaf de console worden gedaan.

Stap 3: Upload de nationale ID van de gebruiker

Ik zal dit demonstreren via CLI, Python en een grafische interface. Als je op zoek bent naar een code voor een grafische interface, dan heeft AWS een leuk voorbeeld op git. In dit artikel is dezelfde code geïmplementeerd om een ​​grafische interface weer te geven.

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
                    }
                }

De bovenstaande opdracht gebruikt de AWS Textract analyse-id opdracht om informatie te extraheren uit de afbeelding die al in S3 is geüpload. De uitvoer-JSON bevat ook selectiekaders, dus ik heb deze ingekort om alleen de belangrijkste informatie weer te geven. Zoals u kunt zien, heeft het alle vereiste informatie opgehaald, samen met het betrouwbaarheidsniveau van de tekstwaarde.

Python-functies gebruiken

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

Grafische interface gebruiken

Nationale ID geëxtraheerd met AWS Textract | gezichtsherkenning voor KYC
Nationale ID geëxtraheerd met AWS Textract | gezichtsherkenning voor KYC

Zoals u kunt zien heeft Textract alle relevante informatie opgehaald en wordt ook het ID-type weergegeven. Deze informatie kan worden gebruikt om de klant of gebruiker te registreren. Maar laten we eerst een Liveness-check uitvoeren om te verifiëren dat het een echt persoon is.

Levendigheidscontrole

Zodra de gebruiker in de onderstaande afbeelding op 'Begin met controleren' klikt, wordt eerst het gezicht gedetecteerd en als er slechts één gezicht op het scherm staat, wordt de Liveness-sessie gestart. Om privacyredenen kan ik niet de volledige Liveness-sessie tonen. U kunt dit echter controleren demo-videolink. De Liveness-sessie levert resultaten op in % betrouwbaarheid. We kunnen ook een drempel instellen waaronder de Liveness-sessie mislukt. Voor kritische toepassingen als deze moet de drempel op 95% worden gehouden.

Levendigheidscontrole op Amazon-herkenning | gezichtsherkenning voor KYC

Naast het zelfvertrouwen zorgt de Liveness-sessie ook voor emoties en vreemde voorwerpen die op het gezicht worden gedetecteerd. Als de gebruiker een zonnebril draagt ​​of uitdrukkingen vertoont zoals woede etc., kan de applicatie de afbeelding afwijzen.

Python-code

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)

Gezichtsvergelijking

Zodra de gebruiker de Liveness-sessie met succes heeft voltooid, moet de applicatie het gezicht vergelijken met het gezicht dat is gedetecteerd via de ID. Dit is het meest kritische onderdeel van onze applicatie. We willen geen gebruiker registreren wiens gezicht niet overeenkomt met de ID. Het gezicht dat wordt gedetecteerd op basis van de geüploade ID is al opgeslagen in S3 door de code die als referentiebeeld zal fungeren. Op dezelfde manier wordt het gezicht van de liveness-sessie ook opgeslagen in S3. Laten we eerst de CLI-implementatie controleren.

CLI-opdracht

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

uitgang

{
              "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
              }
          }

Zoals je hierboven kunt zien, is gebleken dat er geen ongeëvenaard gezicht is en dat het gezicht overeenkomt met een betrouwbaarheidsniveau van 99%. Het heeft ook selectiekaders geretourneerd als extra uitvoer. Laten we nu de Python-implementatie bekijken.

Python-code

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

De bovenstaande code vergelijkt het gedetecteerde gezicht van de ID-kaart en de Liveness-sessie, waarbij de drempel op 90% blijft. Als het gezicht overeenkomt, wordt de IsMatch-variabele op True ingesteld. Dus met slechts één functieaanroep kunnen we de twee gezichten vergelijken, beide zijn al geüpload in de S3-bucket.

Eindelijk kunnen we de geldige gebruiker registreren en zijn KYC voltooien. Zoals u kunt zien, is dit volledig geautomatiseerd en door de gebruiker geïnitieerd, en is er geen andere persoon bij betrokken. Het proces heeft ook de onboarding van gebruikers verkort in vergelijking met het huidige handmatige proces.

Stap 4: Querydocument zoals GPT

Ik vond een van de zeer nuttige functies van Textract leuk, je kunt specifieke vragen stellen, bijvoorbeeld "Wat is het identiteitsnummer". Ik zal u laten zien hoe u dit kunt doen met 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"}]}'

Houd er rekening mee dat ik eerder de analyse-id-functie gebruikte, terwijl ik nu analyse-document heb gebruikt om het document te doorzoeken. Dit is erg handig als er specifieke velden op de ID-kaart staan ​​die niet worden geëxtraheerd door de analyse-id-functie. De analyse-id-functie werkt goed voor alle Amerikaanse identiteitskaarten, maar werkt ook goed met identiteitskaarten van de Indiase overheid. Als sommige velden echter niet worden geëxtraheerd, kan de queryfunctie worden gebruikt.

AWS gebruikt de cognito-service voor het beheren van gebruikersidentiteit, gebruikers-ID en gezichts-ID's die zijn opgeslagen in DynamoDB. AWS-voorbeeldcode vergelijkt ook de afbeeldingen uit de bestaande database, zodat dezelfde gebruiker zich niet opnieuw kan registreren met een andere ID of gebruikersnaam. Dit soort validatie is een must voor een robuust geautomatiseerd KYC-systeem.

Conclusie

Door AWS Rekognition voor Automated Self KYC te omarmen, kunt u het onboardingproces van uw gebruikers transformeren van een moeizame hindernis naar een soepele en veilige ervaring. Amazon Rekognition biedt een robuuste oplossing voor het implementeren van identiteitsverificatiesystemen met geavanceerde gezichtsherkenningsmogelijkheden. Door gebruik te maken van de functies kunnen ontwikkelaars de beveiligingsmaatregelen verbeteren, gebruikersauthenticatieprocessen stroomlijnen en naadloze gebruikerservaringen bieden in verschillende applicaties en industrieën.

Met de uitgebreide gids die hierboven is beschreven, bent u goed uitgerust om aan uw reis te beginnen om identiteitsverificatie met behulp van Amazon Rekognition effectief te implementeren. Omarm de kracht van AI-gestuurde identiteitsverificatie en ontgrendel nieuwe mogelijkheden op het gebied van digitaal identiteitsbeheer.

Key Takeaways

  • Amazon Rekognition biedt geavanceerde gezichtsherkennings- en analysemogelijkheden, waardoor gestroomlijnde en veilige identiteitsverificatieprocessen mogelijk worden gemaakt.
  • Het maakt geautomatiseerde onboarding van gebruikers mogelijk door essentiële informatie uit door de overheid uitgegeven identiteitskaarten te extraheren en liveness-checks uit te voeren.
  • Implementatiestappen omvatten het opzetten van AWS-services, het configureren van IAM-machtigingen en het gebruik van Python-functies of grafische interfaces voor tekstextractie en gezichtsvergelijkingen.
  • Realtime liveness-controles verhogen de veiligheid door ervoor te zorgen dat gebruikers aanwezig zijn tijdens de verificatie, terwijl gezichtsvergelijkingen identiteiten valideren aan de hand van referentiebeelden.

De in dit artikel getoonde media zijn geen eigendom van Analytics Vidhya en worden naar goeddunken van de auteur gebruikt.

spot_img

Laatste intelligentie

spot_img