Logo Zephyrnet

Jak wdrożyć weryfikację tożsamości za pomocą Amazon Rekognition

Data:

Wprowadzenie

W dzisiejszym cyfrowym krajobrazie przestrzeganie przepisów „Know Your Customer” (KYC) ma ogromne znaczenie dla firm działających w ramach usług finansowych, rynków internetowych i innych sektorów wymagających identyfikacji użytkownika. Tradycyjnie procesy KYC opierały się na ręcznej weryfikacji dokumentów, co jest podejściem czasochłonnym i podatnym na błędy. W tym przewodniku szczegółowo opisano, w jaki sposób Amazon Rekognition, potężna oparta na chmurze usługa AI firmy AWS, specjalizująca się w rozpoznawaniu i analizie twarzy, może zrewolucjonizować strategię KYC online, przekształcając ją w usprawniony, bezpieczny i opłacalny proces.

KYC z rozpoznawaniem Amazon AWS

Cele kształcenia

  • Zrozum znaczenie przepisów Know Your Customer (KYC) w różnych branżach i wyzwania związane z procesami ręcznej weryfikacji.
  • Poznaj możliwości Amazon Rekognition jako usługi AI opartej na chmurze, specjalizującej się w rozpoznawaniu i analizie twarzy.
  • Poznaj kroki związane z wdrożeniem weryfikacji tożsamości za pomocą Amazon Rekognition, w tym wdrożeniem użytkownika, wyodrębnianie tekstu, wykrywanie aktywności, analiza twarzy i dopasowywanie twarzy.
  • Zrozum znaczenie wykorzystania weryfikacji tożsamości opartej na sztucznej inteligencji w celu ulepszenia środków bezpieczeństwa, usprawnienia procesów uwierzytelniania użytkowników i poprawy doświadczeń użytkowników.

Ten artykuł został opublikowany jako część Blogathon nauki o danych.

Spis treści

Zrozumienie wyzwań KYC

Przepisy KYC nakładają na firmy obowiązek weryfikacji tożsamości swoich użytkowników łagodzić oszustwa, pranie pieniędzy i inne przestępstwa finansowe. Weryfikacja ta zazwyczaj obejmuje gromadzenie i sprawdzanie dokumentów identyfikacyjnych wydanych przez rząd. Chociaż regulacje te są niezbędne do utrzymania bezpiecznego ekosystemu finansowego, procesy ręcznej weryfikacji stwarzają wyzwania:

  • Wpływ pandemii: Podczas pandemii sektor finansowy stanął przed poważnymi wyzwaniami w zakresie wdrażania nowych klientów ze względu na ograniczenia w przemieszczaniu się. Dlatego ręczna weryfikacja zbiorcza nie jest możliwa. Zatem wdrażając KYC online, Twoja firma jest gotowa na takie przyszłe wydarzenia.
  • Błędy ludzkie: Weryfikacja ręczna jest podatna na błędy, co potencjalnie pozwala na prześlizgnięcie się fałszywych rejestracji.
  • Zarządzanie identyfikatorami: Ponieważ dokumentacja ma formę drukowaną, zarządzanie nią stanowi coraz większe wyzwanie. Kopie mogą zostać zgubione, spalone, skradzione, użyte w niewłaściwy sposób itp.

Co to jest rozpoznawanie Amazona?

Amazon Rekognition to zaawansowana usługa analizy obrazów i wideo oferowana przez Amazon Web Services (AWS). Wykorzystuje zaawansowane algorytmy uczenia maszynowego do analizowania treści wizualnych w obrazach i filmach, umożliwiając programistom wydobywanie cennych spostrzeżeń i wykonywanie różnych zadań, takich jak wykrywanie obiektów, rozpoznawanie twarzy i weryfikacja tożsamości. Poniższy uproszczony diagram dobrze ilustruje związane z tym funkcje i usługi.

Źródło AWS: Różne usługi w ramach Rekogni

Weryfikacja tożsamości za pomocą Amazon Rekognition

Zanim przejdę do wdrożenia, przedstawię ogólny pomysł i kroki związane z wdrożeniem weryfikacji tożsamości dla naszego internetowego KYC.

  1. Wdrożenie użytkownika: Proces ten będzie specyficzny dla danej firmy. Jednakże firma będzie potrzebować co najmniej imienia, drugiego imienia, nazwiska, daty urodzenia, daty ważności dowodu osobistego i zdjęcia w formacie paszportu. Wszystkie te informacje można zebrać, prosząc użytkownika o przesłanie zdjęcia dowodu osobistego.
  2. Wyodrębnij tekst: Usługa AWS Texttract potrafi w sposób zgrabny wyodrębnić wszystkie powyższe informacje z przesłanego dowodu osobistego. Oprócz tego możemy również wysłać zapytanie do Texttract w celu pobrania określonych informacji z dowodu osobistego.
  3. Żywotność i rozpoznawanie twarzy: Aby mieć pewność, że użytkownik próbujący wykonać KYC jest aktywny na ekranie i jest aktywny w momencie rozpoczęcia sesji na żywo. Amazon Rekognition może dokładnie wykrywać i porównywać twarze w obrazach lub strumieniach wideo.
  4. Analiza twarzy: Po przechwyceniu twarzy zapewnia szczegółowy wgląd w jej atrybuty, takie jak wiek, płeć, emocje i charakterystyczne cechy twarzy. Nie tylko to, ale także sprawdzi, czy użytkownik nosi okulary przeciwsłoneczne lub czy jego twarz jest zakryta innymi przedmiotami.
  5. Dopasowanie twarzy: Po zweryfikowaniu Liveness możemy wykonać dopasowanie twarzy, aby zweryfikować tożsamość osób na podstawie zdjęć referencyjnych pobranych z dowodu osobistego oraz aktualnego zdjęcia z sesji Liveness.
Jak odbywa się KYC online za pomocą Amazon Rekognition AWS

Jak widać Rekognition ułatwia szybką rejestrację użytkownika, analizując zrobione selfie i porównując je z wydanym przez rząd dokumentem tożsamości przesłanym przez użytkownika. Funkcje wykrywania aktywności w ramach Rekognition pomagają udaremniać próby fałszowania, zachęcając użytkowników do wykonania określonych czynności, takich jak mrugnięcie lub odwrócenie głowy. Dzięki temu masz pewność, że rejestrujący się użytkownik to prawdziwa osoba, a nie sprytnie zamaskowane zdjęcie lub głęboka fałszywka. Ten zautomatyzowany proces znacznie skraca czas wdrażania, poprawiając doświadczenie użytkownika. Rozpoznawanie eliminuje możliwość wystąpienia błędu ludzkiego nieodłącznie związanego z weryfikacją ręczną. Co więcej, algorytmy rozpoznawania twarzy osiągają wysokie wskaźniki dokładności, zapewniając niezawodną weryfikację tożsamości.

Wiem, że jesteś teraz bardzo podekscytowany możliwością zobaczenia go w akcji, więc od razu przejdźmy do rzeczy.

Wdrażanie weryfikacji tożsamości: zautomatyzowane rozwiązanie KYC

Krok 1: Konfiguracja konta AWS

Zanim zaczniesz, upewnij się, że masz aktywne konto AWS. Możesz założyć konto AWS w witrynie AWS, jeśli jeszcze tego nie zrobiłeś. Po zarejestrowaniu aktywuj usługi Rekognition. AWS zapewnia obszerną dokumentację i samouczki ułatwiające ten proces.

Krok 2: Konfigurowanie uprawnień IAM

Jeśli chcesz używać Pythona lub AWS CLI, ten krok jest wymagany. Musisz udzielić pozwolenia na dostęp do Rekognition, S3 i Texttract. Można to zrobić z konsoli.

Krok 3: Prześlij krajowy identyfikator użytkownika

Zademonstruję to za pomocą CLI, Pythona i interfejsu graficznego. Jeśli szukasz kodu interfejsu graficznego, AWS przesłał plik nice przykład na gicie. W tym artykule wdrożono ten sam kod, aby pokazać interfejs graficzny.

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

Powyższe polecenie wykorzystuje polecenie AWS Texttract Analysis-id w celu wyodrębnienia informacji z obrazu już przesłanego w S3. Wyjściowy kod JSON zawiera również ramki ograniczające, dlatego skróciłem go, aby pokazać tylko kluczowe informacje. Jak widać, wyodrębniono wszystkie wymagane informacje wraz z poziomem ufności wartości tekstowej.

Korzystanie z funkcji Pythona

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

Korzystanie z interfejsu graficznego

Dowód osobisty wyodrębniony przy użyciu AWS Texttract | rozpoznawanie twarzy dla KYC
Dowód osobisty wyodrębniony przy użyciu AWS Texttract | rozpoznawanie twarzy dla KYC

Jak widać, Textract pobrał wszystkie istotne informacje i pokazuje także typ identyfikatora. Informacje te mogą zostać wykorzystane do rejestracji klienta lub użytkownika. Ale wcześniej przeprowadźmy kontrolę żywotności, aby sprawdzić, czy jest to prawdziwa osoba.

Kontrola żywotności

Gdy użytkownik kliknie opcję Rozpocznij sprawdzanie na obrazku poniżej, najpierw wykryje twarz, a jeśli na ekranie pojawi się tylko jedna twarz, rozpocznie sesję Liveness. Ze względu na prywatność nie mogę pokazać pełnej sesji Liveness. Możesz to jednak sprawdzić link do filmu demonstracyjnego. Sesja Liveness zapewni wyniki z procentową pewnością. Możemy także ustawić próg, poniżej którego sesja Liveness nie powiedzie się. W przypadku takich krytycznych zastosowań należy utrzymać próg na poziomie 95%.

Sprawdzanie żywotności w Amazon Recognition | rozpoznawanie twarzy dla KYC

Sesja Liveness oprócz pewności siebie dostarczy także emocji i ciał obcych wykrytych na twarzy. Jeśli użytkownik nosi okulary przeciwsłoneczne lub wyraża gniew itp., aplikacja może odrzucić obraz.

Kod w Pythonie

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)

Porównanie twarzy

Po pomyślnym zakończeniu sesji Liveness aplikacja musi porównać twarz z twarzą wykrytą na podstawie identyfikatora. To najważniejsza część naszej aplikacji. Nie chcemy rejestrować użytkownika, którego twarz nie pasuje do identyfikatora. Twarz wykryta z przesłanego identyfikatora jest już zapisana w S3 przez kod, który będzie pełnił rolę obrazu referencyjnego. Podobnie twarz z sesji na żywo jest również przechowywana w S3. Najpierw sprawdźmy implementację CLI.

Polecenie 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

Wydajność

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

Jak widać powyżej, nie ma niedopasowanej twarzy, a twarz pasuje z 99% poziomem ufności. Zwrócił także ramki ograniczające jako dodatkowe wyjście. Przyjrzyjmy się teraz implementacji Pythona.

Kod w Pythonie

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

Powyższy kod porówna twarz wykrytą z dowodu osobistego i sesji Liveness zachowując próg na poziomie 90%. Jeśli twarz pasuje, ustawi zmienną IsMatch na True. Zatem za pomocą tylko jednego wywołania funkcji możemy porównać dwie twarze, obie są już przesłane do segmentu S3.

W końcu możemy zarejestrować prawidłowego użytkownika i ukończyć jego KYC. Jak widać, jest to w pełni zautomatyzowane i inicjowane przez użytkownika i nie jest w to zaangażowana żadna inna osoba. Proces ten skrócił także proces wdrażania użytkowników w porównaniu z obecnym procesem ręcznym.

Krok 4: Zapytanie o dokument, np. GPT

Podobała mi się jedna z bardzo przydatnych funkcji Texttract, możesz zadawać konkretne pytania, np. „Jaki jest numer identyfikacyjny”. Pokażę ci, jak to zrobić za pomocą interfejsu 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"}]}'

Należy pamiętać, że wcześniej korzystałem z funkcji analizy-id, a teraz do wysyłania zapytań do dokumentu korzystałem z funkcji analizy-dokumentu. Jest to bardzo przydatne, jeśli w dowodzie osobistym znajdują się określone pola, które nie są wyodrębniane przez funkcję analizy-id. Funkcja analizy identyfikatora działa dobrze w przypadku wszystkich amerykańskich dowodów osobistych, jednak działa również dobrze w przypadku indyjskich dowodów osobistych. Jeśli jednak niektóre pola nie zostaną wyodrębnione, można użyć funkcji zapytania.

AWS korzysta z usługi cognito do zarządzania tożsamością użytkownika, identyfikatorem użytkownika i identyfikatorami twarzy przechowywanymi w DynamoDB. Przykładowy kod AWS porównuje również obrazy z istniejącej bazy danych, dzięki czemu ten sam użytkownik nie może ponownie zarejestrować się przy użyciu innego identyfikatora lub nazwy użytkownika. Ten rodzaj walidacji jest koniecznością dla solidnego, zautomatyzowanego systemu KYC.

Wnioski

Dzięki zastosowaniu AWS Rekognition for Automated Self KYC możesz przekształcić proces wdrażania użytkownika z żmudnej przeszkody w płynne i bezpieczne doświadczenie. Amazon Rekognition zapewnia solidne rozwiązanie do wdrażania systemów weryfikacji tożsamości z zaawansowanymi funkcjami rozpoznawania twarzy. Wykorzystując jego funkcje, programiści mogą ulepszyć środki bezpieczeństwa, usprawnić procesy uwierzytelniania użytkowników i zapewnić bezproblemową obsługę użytkowników w różnych aplikacjach i branżach.

Dzięki obszernemu przewodnikowi opisanemu powyżej jesteś dobrze przygotowany, aby rozpocząć skuteczną realizację weryfikacji tożsamości za pomocą Amazon Rekognition. Wykorzystaj moc weryfikacji tożsamości opartej na sztucznej inteligencji i odblokuj nowe możliwości w dziedzinie zarządzania tożsamością cyfrową.

Na wynos

  • Amazon Rekognition oferuje zaawansowane możliwości rozpoznawania i analizy twarzy, ułatwiając usprawnione i bezpieczne procesy weryfikacji tożsamości.
  • Umożliwia automatyczne wdrażanie użytkowników poprzez wyodrębnianie niezbędnych informacji z wydanych przez rząd dowodów osobistych i przeprowadzanie kontroli aktywności.
  • Etapy wdrożenia obejmują skonfigurowanie usług AWS, skonfigurowanie uprawnień IAM oraz wykorzystanie funkcji Pythona lub interfejsów graficznych do wyodrębniania tekstu i porównywania twarzy.
  • Kontrole aktywności w czasie rzeczywistym zwiększają bezpieczeństwo, zapewniając obecność użytkowników podczas weryfikacji, a porównania twarzy weryfikują tożsamość na podstawie obrazów referencyjnych.

Media pokazane w tym artykule nie są własnością Analytics Vidhya i są wykorzystywane według uznania Autora.

spot_img

Najnowsza inteligencja

spot_img