recognize
概览
- API URL:/api/v1/zoloz/idrecognition/recognize
- API 描述:该接口用于为护照、身份证、驾照等大部分证件提供文字识别(Optical Character Recognition,简称OCR)功能和证件防伪检测结果。
请求参数
字段名称 | 数据类型 | 最大长度 | 是否必填 | 默认值 | 描述 | 示例值 |
bizId | String | 32B | 是 | - | 业务ID,业务的唯一标识,用于追踪业务。 | "trans-abc-1234" |
docType | String | 32B | 否 | null | 证件类型。
| "00000001003" |
autoDocTypes | List<String> | 200 | 否 | null | 证件类型列表。
支持的证件类型,请参见RealID和ID Recognition支持的证件类型和返回的OCR结果。 | ["08520000001","08520000002"] |
frontPageImage | String | 5MB | 是 | - | 证件的正面照,支持Base64编码的JPG、JPEG、PNG、BMP格式。 注意: | "/9j/4AA..[omitted]..PxA=" |
backPageImage | String | 5MB | 否 | null | 证件的背面照,支持Base64编码的JPG、JPEG、PNG、BMP格式。 注意: | "/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" |
ConsistencyCheckItem类型说明
commonConsistencyCheck
字段名称 | 数据类型 | 取值范围 | 描述 | 支持的证件 / 国家或地区 / 证件类型 | OCR一致性检查支持字段 |
type | String | commonConsistencyCheck | 对证件防伪检测中的OCR字段进行一致性检查。 | 大马卡 / 马来西亚 / 00600000001 |
|
mrzVisualConsistencyCheck
字段名称 | 数据类型 | 取值范围 | 描述 | 支持的证件 / 国家或地区 / 证件类型 | OCR一致性检查支持字段 |
type | String | mrzVisualConsistencyCheck | 对证件防伪检测中机读区和视读区的OCR字段进行一致性检查。 | - | - |
details | List<String> | 在
| MyVisa / 马来西亚 / 00600000011 |
| |
护照(含机读区和视读区)/ 中国大陆、中国香港、中国台湾、中国澳门、菲律宾、新加坡、马来西亚 / 00000001006 |
|
passportCountryCheck
字段名称 | 数据类型 | 取值范围 | 描述 | 支持的证件 / 国家或地区 / 证件类型 / OCR一致性检查支持字段 / 默认国家代码 |
type | String | passportCountryCheck | 检查OCR结果中的 | - |
valueRange | List<String> | 应与默认国家代码一致 | OCR结果中的 当 | 以下证件的
|
每一项都应符合ISO_3166-1_alpha-3标准 | 以下证件的
|
返回参数
字段名称 | 数据类型 | 必须返回 | 描述 | 示例值 |
certType | String | 否 | 证件类型,当证件验证完成时才返回 | "00600000001" |
docEdition | Integer | 否 | 身份证件的版本。
| 1 |
result | 是 | API请求结果,包含结果状态、结果码和结果消息。 | { "resultCode":"SUCCESS", "resultStatus":"S", "resultMessage":"success" } | |
transactionId | String | 否 | 事务ID。 | "G000000005FID20200304000000000001570702" |
recognitionResult | String | 否 | 证件识别总结果。
| "Y" |
recognitionErrorCode | String | 否 | 证件识别不通过明细。
| "BLUR" |
recognitionErrorDescription | String | 否 | 证件识别失败的原因。 | "" |
ocrResult | Map | 否 | OCR识别结果。详细信息,请参见RealID和ID Recognition支持的证件类型和返回的OCR结果。 | { "ID_NUMBER": "xxxx", "COUNTRY": "xxxxx", "SEX": "M", "LAST_NAME": "xxxxx", "DATE_OF_BIRTH": "xxxxx", "FIRST_NAME": "xxxxx" } |
ocrResultDetail | Map<String, OcrResultDetail> | 否 | OCR识别结果详情,当在API请求中传入 | 参考返回示例 |
spoofResult | Map | 否 | 证件防伪分项检测结果,包含篡改、材质和屏幕翻拍等检测结果。详细信息,请参见spoofResult。 | { "TAMPER_CHECK": "Y", "MATERIAL_CHECK": "Y", "SCREEN_RECAPTURE_CHECK": "Y" } |
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": {
"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": "xxx",
"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"
},
"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"
}
},
"recognitionResult": "Y",
"recognitionErrorCode": "BLUR",
"recognitionErrorDescription": "xxxxx",
"spoofResult": {
"TAMPER_CHECK": "Y",
"SECURITY_FEATURE_CHECK": "Y",
"MATERIAL_CHECK": "Y",
"INFORMATION_CHECK": "Y",
"SCREEN_RECAPTURE_CHECK": "Y"
},
"extraImages": {
"CROPPED_FACE_FROM_DOC": "/9j/4AA..[omitted]..PxA="
}
}