概覽
API URL:/api/v1/zoloz/idrecognition/recognize
API 描述:該介面用於為護照、身份證、駕照等大部分證件提供文字識別(Optical Character Recognition,簡稱OCR)功能和證件防偽檢測結果。
請求參數
欄位名稱 | 資料類型 | 最大長度 | 是否必填 | 預設值 | 描述 | 樣本值 |
bizId | String | 32B | 是 | - | 業務ID,業務的唯一標識,用於追蹤業務。 | "trans-abc-1234" |
docType | String | 32B | 是 | - | 證件類型。
| "00000001003" |
autoDocTypes | List<String> | 200 | 否 | null | 證件類型列表。
支援的證件類型,請參見RealID和ID Recognition支援的證件類型和返回的OCR結果。 | ["08520000001","08520000002"] |
frontPageImage | String | 5MB | 是 | - | 證件的正面照,支援Base64編碼的JPG格式。 | "/9j/4AA..[omitted]..PxA=" |
backPageImage | String | 5MB | 否 | null | 證件的背面照,支援Base64編碼的JPG格式。 | "/9j/4AA..[omitted]..PxA=" |
operationMode | String | 32 | 否 | STANDARD | 為身分識別驗證配置操作模式。取值如下:
| "STANDARD" |
sceneCode | String | 64 | 否 | null | 情境碼,用於為資料分析指定不同的業務情境。 當需要區分不同業務情境中的資料表現時,建議根據業務用途為 | "changePassword" |
userId | String | 64 | 否 | null | 商戶的使用者ID或其他可用於識別某一使用者的標識,例如手機號碼、電子郵件地址等。 建議對userId欄位的值進行預脫敏,例如進行雜湊處理。 | "123456abcd" |
extraImageControlList | List<String> | - | 否 | null | 指定是否返回額外的圖片。支援的圖片類型如下:
| [ "CROPPED_FACE_FROM_DOC" ] |
productConfig | ProductConfig | - | 否 | null | 為IDR產品提供更精細化的控制。詳細資料,請參見ProductConfig。 | { "consistencyCheck": [ { "type": "commonConsistencyCheck" }, { "details": [ "NAME", "SEX" ], "type": "mrzVisualConsistencyCheck" } ] } |
ProductConfig欄位說明
欄位名稱 | 資料類型 | 最大長度 | 是否必填 | 預設值 | 描述 | 樣本值 |
pageInfoCheck | Array | - | 否 | null | 在證件防偽檢測中進行頁面資訊檢查,詳細檢查項,請參見證件防偽檢測組件。 說明:頁面資訊檢查僅適用於中國香港身份證。 | [ {"name":"id"}, {"name":"symbol"}, {"name":"name"} ] |
consistencyCheck | List<ConsistencyCheckItem> | - | 否 | null | 是否進行一致性檢查。一致性檢查僅適用於部分證件的特定欄位,詳見ConsistencyCheckItem。 | [ { "type": "commonConsistencyCheck" }, { "details": [ "NAME", "SEX" ], "type": "mrzVisualConsistencyCheck" } ] |
allowExpiredDocument | String | - | 否 | 不同的證件類型有不同的預設值:
| 已到期的證件是否可以通過驗證。取值:
說明:
| "N" |
cropFaceImageFromDoc | String | 1 | 否 | N | 是否從採集的證件圖片中裁剪出人臉圖片。取值如下:
| "Y" |
enableOCR | String | - | 否 | N | 是否開啟OCR功能。取值如下:
| "Y" |
spoofMode | String | 10 | 否 | CLOSED | 證件防偽等級。取值如下:
| "STANDARD" |
deeperMode | String | 10 | 否 | CLOSED | AIGC攻擊檢測的Deeper等級,Deeper檢測功能的詳細介紹,請參見什麼是Deeper。該參數支援以下取值:
注意:需要先購買Deeper產品,才能使用該功能。 | "STANDARD" |
ConsistencyCheckItem類型說明
commonConsistencyCheck
欄位名稱 | 資料類型 | 取值範圍 | 描述 | 支援的證件 / 國家或地區 / 證件類型 | OCR一致性檢查支援欄位 |
type | String | commonConsistencyCheck | 對證件防偽檢測中的OCR欄位進行一致性檢查。 | 大馬卡 / 馬來西亞 / 00600000001 |
|
mrzVisualConsistencyCheck
欄位名稱 | 資料類型 | 取值範圍 | 描述 | 支援的證件 / 國家或地區 / 證件類型 | OCR一致性檢查支援欄位 |
type | String | mrzVisualConsistencyCheck | 對證件防偽檢測中機讀區和視讀區的OCR欄位進行一致性檢查。 | - | - |
details | List<String> | 在詳細資料中指定OCR欄位進行一致性檢查。
| MyVisa / 馬來西亞 / 00600000011 |
| |
護照(含機讀區和視讀區)/ 中國大陸、中國香港、中國台灣、中國澳門、菲律賓、新加坡、馬來西亞 / 00000001006 |
|
passportCountryCheck
欄位名稱 | 資料類型 | 取值範圍 | 描述 | 支援的證件 / 國家或地區 / 證件類型 / OCR一致性檢查支援欄位 / 預設國家代碼 |
type | String | passportCountryCheck | 檢查OCR結果中的 | - |
valueRange | List<String> | 應與預設國家代碼一致 | OCR結果中的 當 | 以下證件的
|
每一項都應符合ISO_3166-1_alpha-3標準 | 以下證件的
|
返回參數
欄位名稱 | 資料類型 | 必須返回 | 描述 | 樣本值 |
certType | String | 否 | 證件類型,當證件驗證完成時才返回 | "00600000001" |
docCategory | String | 否 | 證件類別。
| "PASSPORT" |
docEdition | Integer | 否 | 身份證件的版本。
| 1 |
result | 是 | API請求結果,包含結果狀態、結果碼和結果訊息。 | { "resultCode":"SUCCESS", "resultStatus":"S", "resultMessage":"success" } | |
transactionId | String | 否 | 事務ID。 說明:僅當交易進入處理階段後系統才會返回
| "G000000005FID20200304000000000001570702" |
recognitionResult | String | 否 | 證件識別總結果。
| "N" |
recognitionErrorCode | String | 否 | 證件識別不通過明細。
| "NO_REQUIRED_ID" |
recognitionErrorDescription | String | 否 | 證件識別失敗的原因。 | "Passport country code check failed." |
ocrResult | Map | 否 | OCR識別結果。詳細資料,請參見Real ID和ID Recognition支援的證件類型和返回的OCR結果。 | { "ID_NUMBER": "xxxx", "COUNTRY": "xxxxx", "SEX": "M", "LAST_NAME": "xxxxx", "DATE_OF_BIRTH": "xxxxx", "FIRST_NAME": "xxxxx" } |
ocrResultFormat | Map | 否 | 標準化後的OCR輸出結果,詳見Notification on the Standardization of OCR Output Field Names。 | { "NUMBER": "12345", "GENDER": "M" } |
ocrResultDetail | Map<String, OcrResultDetail> | 否 | OCR識別結果詳情,當在API請求中傳入 | 參考返回樣本 |
countryCode | String | 否 | OCR識別出來的國家代碼,僅當 | "CHN" |
spoofResult | Map | 否 | 證件防偽分項檢測結果,包含篡改、材質和螢幕翻拍等檢測結果。詳細資料,請參見spoofResult。 | { "TAMPER_CHECK": "Y", "MATERIAL_CHECK": "Y", "SCREEN_RECAPTURE_CHECK": "Y" } |
deeperResult | String | 否 | 返回的Deeper證件檢測結果,僅當
| "N" |
deeperResultDescription | String | 否 | Deeper證件檢測結果的詳細描述,僅當 | "deepfake risk, AIGC feature blacklib" |
extraImages | Map<String,String> | 否 | 在
| { "CROPPED_FACE_FROM_DOC": "/9j/4AA..[omitted]..PxA=" } |
Result欄位說明
欄位名稱 | 資料類型 | 必須返回 | 描述 | 樣本值 |
resultCode | String | 是 | 結果碼。
| "SUCCESS" |
resultStatus | String | 是 | 結果狀態。
| "S" |
resultMessage | String | 是 | 結果描述。 | "success" |
spoofResult欄位說明
欄位名稱 | 資料類型 | 必須返回 | 描述 | 樣本值 |
TAMPER_CHECK | String | 是 | 身份證件是否通過了篡改檢測。
| "Y" |
MATERIAL_CHECK | String | 是 | 身份證件是否通過了材質檢測。
| "Y" |
SCREEN_RECAPTURE_CHECK | String | 是 | 身份證件是否通過了螢幕翻拍檢測。
| "Y" |
程式碼範例
請求樣本
POST /api/v1/zoloz/idrecognition/recognize HTTP/1.1
Content-Type: application/json; charset=UTF-8
Client-Id: 5X67656YXXXXXX
Request-Time: 2019-04-04T12:08:56+05:30
Signature: algorithm=RSA256, signature=xxxxxxxxxxxx
{
"bizId": "trans-test-1234",
"autoDocTypes":["08520000001","08520000002"],
"frontPageImage": "/9j/4AA..[omitted]..PxA=",
"backPageImage": "/9j/4AA..[omitted]..PxA=",
"extraImageControlList":[
"CROPPED_FACE_FROM_DOC"
],
"productConfig": {
"deeperMode": "STANDARD",
"consistencyCheck": [
{
"type": "commonConsistencyCheck"
},
{
"details": [
"NAME",
"SEX"
],
"type": "mrzVisualConsistencyCheck"
},
{
"valueRange": [
"CHN",
"PHL"
],
"type": "passportCountryCheck"
}
],
"pageInfoCheck": [
{
"name": "id"
},
{
"name": "symbol"
},
{
"name": "name"
}
],
"allowExpiredDocument": "Y",
"cropFaceImageFromDoc": "Y",
"enableOCR": "Y",
"spoofMode": "STANDARD"
},
"operationMode": "CLOSED",
"sceneCode": "changePassword",
"userId": "123456abcd"
}返回樣本
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Response-Time: 2019-11-19T21:56:15-0800
Signature: algorithm=RSA256, signature=xxxxxxxxxxxxxxxxxx
{
"transactionId": "G000000005FID20200304000000000001570702",
"result": {
"resultCode": "SUCCESS",
"resultMessage": "success",
"resultStatus": "S"
},
"certType": "00600000001",
"docCategory": "PASSPORT",
"docEdition": 1,
"ocrResult": {
"COUNTRY_CODE_IN_ISO": "Y",
"LOCAL_NAME": "xxxx",
"ID_NUMBER": "xxxx",
"MAC_ID": "",
"COUNTRY": "xxxx",
"SEX": "M",
"LAST_NAME": "xxxx",
"HK_ID": "",
"DATE_OF_BIRTH": "xxxx",
"FIRST_NAME": "xxxx",
"EXPIRY_DATE": "xxxx",
"COUNTRY_CODE": "xxxx"
},
"ocrResultFormat": {
"NUMBER": "12345",
"GENDER": "M"
},
"ocrResultDetail": {
"MRZ_MAC_ID": {
"name": "MAC_ID",
"source": "MRZ",
"value": ""
},
"MRZ_COUNTRY_CODE_IN_ISO": {
"name": "COUNTRY_CODE_IN_ISO",
"source": "MRZ",
"value": "Y"
},
"MRZ_ID_NUMBER": {
"name": "ID_NUMBER",
"source": "MRZ",
"value": "xxxx"
},
"VISUAL_ID_NUMBER": {
"name": "ID_NUMBER",
"source": "VISUAL",
"value": "xxxx"
},
"MRZ_DATE_OF_BIRTH": {
"name": "DATE_OF_BIRTH",
"source": "MRZ",
"value": "xxxx"
},
"MRZ_COUNTRY_CODE": {
"name": "COUNTRY_CODE",
"source": "MRZ",
"value": "xxxx"
},
"MRZ_EXPIRY_DATE": {
"name": "EXPIRY_DATE",
"source": "MRZ",
"value": "xxxx"
},
"MRZ_FIRST_NAME": {
"name": "FIRST_NAME",
"source": "MRZ",
"value": "xxxx"
},
"MRZ_HK_ID": {
"name": "HK_ID",
"source": "MRZ",
"value": ""
},
"MRZ_SEX": {
"name": "SEX",
"source": "MRZ",
"value": "M"
},
"VISUAL_LOCAL_NAME": {
"name": "LOCAL_NAME",
"source": "VISUAL",
"value": "xxxx"
},
"VISUAL_EXPIRY_DATE": {
"name": "EXPIRY_DATE",
"source": "VISUAL",
"value": "xxxx"
},
"MRZ_LAST_NAME": {
"name": "LAST_NAME",
"source": "MRZ",
"value": "xxxx"
},
"VISUAL_COUNTRY_CODE": {
"name": "COUNTRY_CODE",
"source": "VISUAL",
"value": "xxxx"
},
"MRZ_COUNTRY": {
"name": "COUNTRY",
"source": "MRZ",
"value": "xxxx"
}
},
"countryCode": "CHN",
"recognitionResult": "Y",
"recognitionErrorCode": "BLUR",
"recognitionErrorDescription": "passport country code check failed.",
"spoofResult": {
"TAMPER_CHECK": "Y",
"SECURITY_FEATURE_CHECK": "Y",
"MATERIAL_CHECK": "Y",
"INFORMATION_CHECK": "Y",
"SCREEN_RECAPTURE_CHECK": "Y"
},
"deeperResult": "N",
"deeperResultDescription": "deepfake risk, AIGC feature blacklib",
"extraImages": {
"CROPPED_FACE_FROM_DOC": "/9j/4AA..[omitted]..PxA="
}
}