Thử thách khoảng cách#

Quá trình kiểm tra gồm các bước:

  • Dưới client sẽ nếu phát hiện có người trước Camera sẽ gọi đến server bắt đầu quá trình kiểm tra.

  • Từ server sẽ trả về các thông tin gồm: vị trí, kích thước của khung của gương mặt; tỉ lệ gương mặt; thông tin chuỗi các nhiệm vụ người dùng phải làm theo để xác thực.

  • Sau khi nhận các thông tin, dưới client sẽ cần hiển thị ra thông tin nhiệm vụ để người dùng làm theo các chỉ dẫn.

  • Bắt đầu gửi ảnh lên server khi phát hiện người dùng đã đặt khuôn mặt vào đúng vị trí được yêu cầu.

  • Sau khi người cần kiểm tra đã hoàn thành các nhiệm vụ thì kết thúc quá trình và bắt đầu gởi lệnh verify để server bắt đầu kiểm tra.

B1. Khởi tạo chuỗi lệnh#

Request

Gọi đến API POST /distance-liveness-challenge/distance-start, kèm theo thông tin

  • external_person_id: ID của người (nhân viên/ khách hàng) trong hệ thống của bạn, đã đăng ký trước đó.

  • image_width, image_height: Kích thước của hình ảnh sẽ được gửi lên để kiểm tra.

Có thể thêm các thông tin tự chọn khác như:

  • normal_distance_ratio, far_distance_ratio, close_distance_ratio: Tỉ lệ giữa kích thước ảnh và khung gương mặt tương ứng với 3 mức độ nhiệm vụ. Giá trị mặc định: normal-distance-ratio = 0.7, far-distance-ratio = 0.6, close-distance-ratio = 0.75.

  • normal_amount, far_amount, close_amount: Số lượng frame yêu cầu cho mỗi mức độ. Mặc định ngẫu nhiên từ 2 - 5.

  • max_face_area_percent, min_face_area_percent: Tỉ lệ khuôn mặt tối đa và tối thiểu trong khung để được đạt yêu cầu. Mặc định max_face_area_percent = 1.1 (tương đương 110%), min_face_area_percent = 0.7 (tương đưong 70%)

Ví dụ

CLI:

http -a $MY_AUTH POST https://api-uat.unicloud.ai/ekyc/distance-liveness-challenge/start \
  image_width:=640 image_height:=640 external_person_id=18

Response

Trả về sẽ gồm các thông tin:

  • id: ID của bài kiểm tra này.

  • normal_distance, far_distance, close_distance: Vị trí khung cho mỗi mức độ.

  • task_order: Chuỗi các lệnh cần người dùng thực hiện theo liên tục trong một khoảng thời gian yêu cầu.

  • message: Thông tin kết qủa khởi tạo.

  • result_code: Mã kết quả.

Result code

Message

Note

200

Success

Challenge khởi tạo thành công

Trường hợp thành công

{
      "close_distance": {
          "height": 480,
          "left": 140,
          "top": 80,
          "width": 360
      },
      "external_person_id": "18",
      "far_distance": {
          "height": 384,
          "left": 204,
          "top": 128,
          "width": 230
      },
      "id": "d225b7ad-2f6d-41d0-a76b-de9cca1b2b74",
      "image_height": 640,
      "image_width": 640,
      "max_face_area_percent": 1,
      "message": "Success",
      "min_face_area_percent": 0,
      "normal_distance": {
          "height": 448,
          "left": 163,
          "top": 96,
          "width": 313
      },
      "result_code": 200,
      "task_order": {
          "close-distance": 4,
          "far-distance": 2,
          "normal-distance": 2
      }
  }

B2. Thu thập hình ảnh#

Gửi những bức hình từ lúc người được kiểm tra đưa mặt vào giữa khung và đạt yêu cầu cho đến khi đủ thời lượng.

Request

Gọi đến API PUT /distance-liveness-challenge/{challenge_id}/frames với challenge_id được trả về ở B1, kèm theo thông tin

  • timestamp: Thời gian lưu trữ bức ảnh (Unix epoch time).

  • photo: Nội dung hình ảnh được chụp được mã hóa theo Base64.

  • task: Mô tả yều cầu cần người dùng thực hiện (bao gồm: ["normal-distance", "far-distance", "close-distance"]).

Ví dụ

CLI:

jo -d. photo=%anh_chup.jpg timestamp=12345 task='normal-distance' | http -a $MY_AUTH PUT https://api-uat.unicloud.ai/ekyc/distance-liveness-challenge/d225b7ad-2f6d-41d0-2541-de9cca1b2b74/frames

Response

Trả về các thông tin gồm:

  • message: Thông tin kết quả thêm ảnh.

  • result_code: Mã kết quả.

Result code

Message

Note

200

Success

Thêm ảnh cho challenge thành công

143

Request Challenge ID Not Found

Challenge ID không tồn tại

{
 "message": "Success",
 "result_code": 200
}

B3. Bắt đầu xác thực#

Request

Sau khi client đã gửi được các chuỗi ảnh cần theo từng nhiệm vụ, gọi đến API để xác thực POST /distance-liveness-challenge/{challenge_id}/verify

  • passive_liveness_frame_percentage: Số lượng frame sẽ được kiểm tra thụ động. Tương ứng với 50% = 0.5.

  • passive_liveness_threshold: [Optional] Ngưỡng tự tin hệ thống cần đạt được khi nhận diện được ảnh người thật, mặc định 0.5 (tương ứng với 50%).

Ví dụ

CLI:

http -a $MY_AUTH POST https://api-uat.unicloud.ai/ekyc/distance-liveness-challenge/d225b7ad-2f6d-41d0-2541-de9cca1b2b74/verify

Response

Trả về gồm:

  • result_code: Mã kết quả.

  • message: Thông tin kết quả trả về.

Result code

Message

Note

200

Success

Challenge thực hiện thành công

131

No Face Detected

Không tìm thấy khuôn mặt trong hình

135

Found More Than One Face

Quá nhiều khuôn mặt trong khung hình

140

Task Order Not Found

Không tìm thấy task order

143

Request Challenge ID Not Found

Challenge ID không tồn tại

144

Moving Photo Is Missing

Challenge chưa có ảnh để xác thựC

184

Distance Task Failed

Khoảng cách của khuôn mặt không đạt yêu cầu của task

Trường hợp thành công

{
    "message": "Success",
    "result_code": 200
}