Trong bài viết trước về Tự động trích xuất thông tin từ hình ảnh với API của FPT.AI, anh Trần Đức Long đã hướng dẫn chi tiết cách kết nối API OCR bằng ngôn ngữ NodeJs. Trở lại lần này, tác giả sẽ trình bày cách sử dụng Facematch một cách dễ dàng và hữu hiệu với API Facematch của FPT.AI.

Xác thực khuôn mặt có thể được áp dụng trong quy trình tự động hóa nhập liệu đầu vào đối với rất nhiều lĩnh vực như tài chính – ngân hàng, viễn thông, du lịch – khách sạn. Một số ứng dụng nổi bật có thể kể đến như: Mở tài khoản ngân hàng, mở tài khoản thẻ tín dụng, đăng ký thuê bao, đặt phòng khách sạn, check-in tại sân bay hoặc nơi lưu trú và rất nhiều ứng dụng khác.

Trước khi gọi API, ta có một số lưu ý đối với hình ảnh:

  • Ảnh phải là ảnh có định dạng jpg hoặc jpeg.
  • Ảnh đầu vào không vượt quá 5 MB và độ phân giải tối thiểu khoảng 640×480 để đảm bảo tỉ lệ đọc chính xác.
  • Tỉ lệ diện tích khuôn mặt phải chiếm tối thiểu ¼ tổng diện tích ảnh.

Thông tin cơ bản của API:

1. Request

Request Url
POST https://api.fpt.ai/dmp/checkface/v1/


2. Request Headers

Tham số Yêu cầu Mặc định Mô tả
API Key API_Key của bạn (lấy từ console.fpt.ai )


3. Request Body

FormData chứa 2 ảnh cần kiểm tra.

Tham số Yêu cầu
file[]
file[]

Chú ý: trường “file[]” thêm hai lần.

4. Sample Request

5. Response (JSON)

  • isMatch: Thể hiện 2 ảnh có cùng một người hay không (dựa trên ngưỡng 80%).
  • similarity: Độ giống nhau của 2 ảnh.
  • isBothImgIDCard: Thể hiện 2 ảnh có phải cùng là ảnh chứng minh nhân dân.

6. Response Code

Code Ý nghĩa
200 Thành công
407 Không nhận dạng được khuôn mặt
408 Ảnh đầu vào không đúng định dạng
409 Có nhiều hoặc ít hơn số lượng (2) khuôn mặt cần xác thực


7. Sample Response: Success

8. Sample Response: Error

Sau đây là cách kết nối API và một số tips trong ứng dụng thực thế với NodeJS và ReactJs.

a. Xây dựng phần giao diện người dùng

Với ReactJS, tác giả sẽ dùng một user form và hướng dẫn người dùng làm với từng bước một:

Case 1:

Case 2:

Case 3:

Case 4:

Ở đây tác giả dùng state “step”, state này sẽ được tăng và giảm theo các bước của người dùng. Các bước tuần tự sẽ là: Vào trang chủ (LandingPage), Chụp ảnh chứng minh thư (IDTakeShot), Xác nhận lại thông tinh (ConfirmInfo), Xác thực khuôn mặt (FaceMacth).

nextStepprevStep là các hàm dùng để tăng và giảm state “step” giúp người dùng qua bước tiếp theo hoặc quay lại bước trước trong quá trình xác thực khuôn mặt.

// Proceed to next step

 

// Go back to prev step

Sau khi chụp ảnh chứng minh thư (IDTakeShot), thông qua API OCR của FPT.AI, chúng ta sẽ có thông tin của chứng minh thư (ConfirmInfo). Việc tiếp theo là xác định xem chứng minh thư đó và ảnh chân dung có cùng một người hay không (FaceMatch).

b. Kết nối API Facematch

Sau khi hoàn tất việc chụp ảnh CMT/CMND, xác nhận lại thông tin và chụp ảnh chân dung, ta bắt đầu gọi API Facematch.

Chúng ta thấy file 1 là image dưới dạng base64 được truyền từ form IDTakeSHot (Chụp ảnh chứng minh thư) sang, file 2 là ảnh mặt cần nhận diện vừa chụp.

Ở đây có một điều cần lưu ý, dung lượng của ảnh chụp thường rất lớn trong khi khả năng nhận diện khuôn mặt của API lại rất tốt (không cần đến dung lượng ảnh quá cao). Do vậy, trước khi gửi ảnh xuống server chúng ta cần giảm dung lượng của ảnh.

Với React chúng ta có thư viện ‘react-image-file-resizer’

Ảnh đã được giảm xuống với mức Height 400px, Width 400px và Quality 90%. Ngoài ra chúng ta cần kiểm tra file đưa lên có phải là ảnh hay không.

Sau khi đã hoàn thành phần giao diện, chúng ta chuyển sang phần server với NodeJS.

Đầu tiên chúng ta cần import một số thư viện:

Sau đó xác định đầu vào:

Lưu ý: Hiện tại API Facematch chỉ nhận đầu vào dạng file nên chúng ta cần chuyển từ dạng base64 sang dạng file trước khi thực hiện truyền vào.

Tiếp theo, thực hiện call API Facematch:

Response trả về sẽ có dạng JSON và chứa các thông tin sau:

  • isMatch: Thể hiện 2 ảnh có cùng một người hay không (dựa trên ngưỡng 80%).
  • similarity: Độ giống nhau của 2 ảnh.
  • isBothImgIDCard: Thể hiện 2 ảnh có phải cùng là ảnh CMND hay không.

Tùy vào bài toán thực tế, chúng ta sẽ sử dụng những thông tin trả về này một cách hợp lý.

Nhận biết khách hàng (KYC – Know Your Customer) là yêu cầu bắt buộc đối với tổ chức tín dụng khi khách hàng mở mới tài khoản tại ngân hàng. Cùng với đó là sự phát triển của công nghệ và để đơn giản hóa các thủ tục, giấy tờ, tạo thuận lợi cho khách hàng, hiện nay các ngân hàng ở nhiều quốc gia với sự chấp thuận của cơ quan quản lý có thẩm quyền, đã và đang chuyển sang hình thức nhận biết khách hàng qua phương thức điện tử hay còn gọi là Định danh khách hàng điện tử – eKYC.

Trần Đức Long – FPT Head Office

Tin liên quan: