金润·核验通-身份证识别接口文档

简介: 【身份证识别接口】支持对二代居民身份证所有字段的结构化OCR识别提取,支持正、反面身份证识别。支持全国各区域身份证识别。【身份证识别-身份证OCR-身份证正反面图像信息提取-身份证OCR识别-身份证识别-身份证图片识别-身份证识别】《身份证核验、身份证实名认证、身份证实名认证、人脸实名认证》。上海金润联汇数字科技有限公司是一家以ETC为切入点,深耕交通行业,服务于交通生态的数据科技服务平台。2014年开始为货车提供高速通行ETC后付费业务,超10年行业运营经验。货车ETC后付费业务年交易额超150亿元,规模全国屈指可数。与鲁苏浙赣粤黔赣湘闽沪藏。


金润·核验通-身份证识别接口文档

身份证识别接口行业内常用语

身份证OCR识别-身份证图片识别-身份证识别-二代居民身份证OCR识别-身份证信息识别

 目录


1. 接口描述

2. 加密方式

2.1 加签,验签机制说明

2.2 签名算法

2.3 加密方式

2.4 生成签名

2.4.1 筛选并排序

2.4.2 拼接

2.4.3 调用签名函数

2.4.4 拼接完整请求

2.5 解密方式

3. 请求参数

3.1 公共请求参数

3.2 接口请求参数

4. 响应参数

4.1 公共响应参数

4.2 接口响应参数

4.3 字段说明

5. 代码示例

5.1 请求示例

5.2 响应示例

5.3 异常示例

6. 附录

6.1 接口返回码

1. 身份证识别接口描述

接口名称

身份证识别

接口编号

JR-HYT-015

接口描述

用于进行识别身份证信息接口

接口地址

/dmp/api

请求方式

POST

加密方式

RSA2


2. 身份证识别接口加密方式

2.1 加签,验签机制说明

客户在应用中使用自己的“私钥”对消息加签之后,消息和签名会传递给金枢系统,金枢系统则使用应用的 公钥 验证消息的真实性(来自于合法应用的真实消息)。

对于金枢系统返回消息给商户应用的情形,应用则使用金枢系统的 公钥 来验证返回消息的真实性。

 

2.2 签名算法

签名算法:RSA2

标准签名算法:SHA256WithRSA

描述:强制要求 RSA 密钥的长度至少为 2048。

 

2.3 加密方式

请求体加密

将请求参数(biz_content)字段通过 私钥进行加密

2.4 生成签名

2.4.1 筛选并排序

获取所有请求参数(包括公共请求参数),不包括字节类型参数,如文件、字节流,剔除 sign 字段,剔除值为空的参数,并按照第一个字符的键值 ASCII 码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值 ASCII 码递增排序,以此类推。

2.4.2 拼接

将排序后的参数与其对应值,组合成 参数=参数值 的格式,并且把这些参数用 & 字符连接起来,此时生成的字符串为待签名字符串。

示例:

app_id=2014072300XXXXXX&biz_content=fV9IJsNcmZcPEQbvr8S3kkJ3uT0GRfHlAM25LT8w9xCAJqywxotrVlH1ZJsIXwHBvz97uFyNbBoSKbxfRgwKLl7P88hKBmPDwyDzB4t8MT&charset=UTF-8&method=alipay.trade.pay&sign_type=RSA2×tamp=2014-07-24 03:07:50&version=1.0

2.4.3 调用签名函数

使用各自语言对应的 SHA256WithRSA(对应 sign_type 为 RSA2)签名函数利用商户私钥对签名字符串进行签名,并进行 Base64 编码。把生成的签名 encode 后赋值给 sign 参数,拼接到请求参数中。

2.4.4 拼接完整请求

调用签名函数 后需将生成的签名作为 sign 的 value 拼接到请求数据中。

示例:

app_id=2014072300XXXXXX&biz_content=fV9IJsNcmZcPEQbvr8S3kkJ3uT0GRfHlAM25LT8w9xCAJqywxotrVlH1ZJsIXwHBvz97uFyNbBoSKbxfRgwKLl7P88hKBmPDwyDzB4t8MT&charset=UTF-8&method=alipay.trade.pay&sign_type=RSA2×tamp=2014-07-24 03:07:50&version=1.0&sign=GhT5Q6YxBtvf4q855TiNWEF/DIeLMyEE97+OnJDHpe6joNfr9F3BAE37dczcogU7uLfpNo+dh3cgly05bQN5nTj9TJ3SrBZWa40cltlgkI+6+0FuJoFSA225+MCrD4fNNqi2Zd5Adi9qC9NdN8nBVsjvzqtn5NepOt8dG1qdv7KvVwG74emFea1j2JuMBVBMp2PgIEwCv5c8OJSXa2P66+l3YCqEEMjBN22Dz0chlJ4hKMW3rA2oISH6ryzIvNIiy4/djKEdmxFeBorp1vrbmAtBqE++afggzzGt5w4arkbQ4fWLXJwkC9+1y4irCgmX65CEb5ct+fRgG2/9/B0rYg==

 

2.5 解密方式

返回数据data内容是加密的,要用商户的公钥解密。

3. 身份证识别接口请求参数

3.1 公共请求参数

参数

类型

必填

最大长度

说明

app_id

String

Y

32

金润商务提供

method

String

Y

100

固定值:

"jinrun.id.card.ocr"

sign

String

Y

 

参见2加密方式

charset

String

Y

10

utf-8

format

String

Y

10

json

sign_type

String

Y

10

RSA2

version

String

Y

10

1.0

 

3.2 接口请求参数

参数

类型

必填

最大长度

说明

file

File

Y

 

身份证图片

biz_content

pageFlag

String

N

1

文件页标记

0表示单页双面1表示单页面主要用于复印件识别;默认为1

doQuality

String

N

1

是否进行质量评判

1表示执行,0表示不执行且后续所有质检属性字段无效,默认为1;跟是否识别doRec参数不能同时为0

judgedImag

String

N

1

是否返回矫正平铺后的身份证图片

1表示返回,0表示不返回且后续judgedImageWidthjudgedImageHeight,returnKeyPos无效;默认为0

judgedImageWidth

String

N

1

矫正平铺后的图片宽度

默认为0,0表示使用原始宽度;doQuality为1时有效

judgedImageHeight

String

N

1

矫正平铺后的图片高度

默认为0,0表示使用原始度;doQuality为1时有效

illumination

String

N

1

是否进行光照检测

1表示执行,0表示不执行。默认为1;doQuality为1时有效

definition

String

N

1

是否进行清晰度检测

1表示执行,0表示不执行。默认为1;doQuality为1时有效

occlusion

String

N

1

是否进行遮挡检测

1表示执行,0表示不执行;默认为1。doQuality为1时有效

hardCopy

String

N

1

是否进行复印件检测

1表示执行,0表示不执行;默认为1。doQuality为1时有效

returnKeyPos

String

N

1

是否在矫正平铺上的图上返回区域信息

1表示返回,0表示不返回;默认为0。doQuality为1时有效

doRec

String

N

1

是否进行识别

1表示执行,0表示不执行且后续所有识别属性字段无效。默认为1

faceImage

String

N

1

是否返回人脸图片

1表示返回,0表示不返回;默认为0。doRec为1时有效


4. 身份证识别接口响应参数

4.1 公共响应参数

参数

类型

说明

code

String

响应码,见附录6.1

request_id

String

请求Id

message

String

响应信息

timestamp

Long

时间戳

data

String

返回数据

 

4.2 接口响应参数

参数

类型

说明

sessionId

String

sessionId

statcode

String

状态码

state

String

识别内容(JSON字符串)

 

4.3 字段说明

字段名称

中文描述

备注

name

姓名

 

address

住址

 

sex

性别

 

nat

民族

 

birth

出生年月

 

number

身份证号

 

validDate

有效期限

 

issueUnit

签发机关

 

isValid

是否过期

0-已过期,1-未过期

idCardSide

身份证正反面标记

0-未知,1-正面,-1-反面

faceImg

身份证头像图片;base64编码格式

请求接口doRec和faceImage都上送为1返回

judgedImg

矫正后图片;base64编码格式

请求接口doQuality和judgedImage都上送为1返回

qualityResultSummary

质检整体效果

0-质量合格,-1-未进行质量评判,-2-缺边或缺角,-3-光照不合格,-4-清晰度不合格,模糊,-5-遮挡,-6-检测为复印件,-7-未检测到身份证区域

copiesCheck

复印件检测结果

1表示原件,0表示未检测,-1表示复印件

definitionCheck

清晰度检测结果

1表示清晰,0表示未检测,-1表示模糊

edgeAngleCheck

边角检测结果

1表示边角完整,0表示未检测,-1表示缺边或缺角

illuminationCheck

光照检测结果

1表示光照合格,0表示未检测,-1表示光照过亮或过暗

poorIlluminationField

光照不合格区域信息

可能的区域值为name,sex,

nation,birth,address,number,

issueUnit,validDate,face

occlusionCheck

遮挡检测结果

1表示无遮挡,0表示未检测,-1表示存在文字或头像遮挡

poorOcclusionField

遮挡区域信息

可能的区域值为name,sex,

nation,birth,address,number,

issueUnit,validDate,face

validRegionCheck

身份证有效性检测结果

1表示存在身份证,0表示未检测,-1表示非身份证图像

5. 身份证识别接口代码示例

5.1 请求示例

biz_content的json格式样例

{

"pageFlag":"1",

"doQuality":"0"

}

 

5.2 响应示例

{

    "request_id": "SN1594865659450363904",

    "code": "1700",

    "data": {

        "data": null,

        "resultInfoDTO": {

            "sessionId": "a42be9767221122092939666e7",

            "statcode": 1700,

            "state": "{\"nat\":\"汉\",\"address\":\"广州市越秀区越华路73号101房\",\"validRegionCheck\":\"1\",\"faceImg\":\"\",\"validDate\":\"\",\"definitionCheck\":\"1\",\"sex\":\"男\",\"birth\":\"1994年5月21日\",\"occlusionCheck\":\"1\",\"poorIlluminationField\":\"\",\"number\":\"44010419940521xxxx\",\"illuminationCheck\":\"1\",\"idCardSide\":\"1\",\"edgeAngleCheck\":\"1\",\"poorOcclusionField\":\"\",\"name\":\"林灝\",\"judgedImg\":\"\",\"copiesCheck\":\"1\",\"issueUnit\":\"\",\"qualityResultSummary\":\"0\"}"

        },

        "sessionId": null,

        "resultInfo": "{\"sessionId\":\"a42be9767221122092939666e7\",\"statcode\":1700,\"state\":\"{\\\"nat\\\":\\\"汉\\\",\\\"address\\\":\\\"广州市越秀区越华路73号101房\\\",\\\"validRegionCheck\\\":\\\"1\\\",\\\"faceImg\\\":\\\"\\\",\\\"validDate\\\":\\\"\\\",\\\"definitionCheck\\\":\\\"1\\\",\\\"sex\\\":\\\"男\\\",\\\"birth\\\":\\\"1994年5月21日\\\",\\\"occlusionCheck\\\":\\\"1\\\",\\\"poorIlluminationField\\\":\\\"\\\",\\\"number\\\":\\\"44010419940521xxxx\\\",\\\"illuminationCheck\\\":\\\"1\\\",\\\"idCardSide\\\":\\\"1\\\",\\\"edgeAngleCheck\\\":\\\"1\\\",\\\"poorOcclusionField\\\":\\\"\\\",\\\"name\\\":\\\"林灝\\\",\\\"judgedImg\\\":\\\"\\\",\\\"copiesCheck\\\":\\\"1\\\",\\\"issueUnit\\\":\\\"\\\",\\\"qualityResultSummary\\\":\\\"0\\\"}\"}",

        "statcode": null,

        "state": null,

        "queryInfo": null

    },

    "timestamp": 1669080587311

}

 

5.3 异常示例

 

{

"request_id":"SN1526464148450447360",

"code":"1790",

"data":{

"resultInfoDTO":{

"sessionId":"a454b4e2962205171526293f8a4",

"statcode":1790,

"state":""

}

},

"message":"",

"timestamp":1652772394628

}

}


6. 身份证识别接口附录

6.1 接口返回码

编码

描述

是否收费

1700

识别成功

收费

998

参数异常

免费

400

异常信息

免费

1790

比对错误

免费

1910

无效参数

免费

2022

非法参数

免费

9100

账户无费用

免费

9110

账户无权限

免费

9200

账户错误

免费

9202

无效IP

免费

9304

URL错误

免费

 

相关文章
|
消息中间件 存储 Kafka
开源FaaS平台(二):Apache OpenWhisk
Apache OpenWhisk是一个开源FaaS平台,是一个由IBM和Adobe驱动的开源项目,可以部署在云或数据中心内。相比其他Serverless项目,OpenWhisk是一个健壮的、可扩展的平台,支持数千并发触发器和调用。OpenWhisk项目的基本信息如下表
1291 0
|
数据可视化 前端开发 数据管理
LayUI之树形权限菜单
LayUI之树形权限菜单
258 0
|
6月前
|
SQL 人工智能 大数据
新入互联网职场必考的6个大数据证书!含金量高+门槛低,新手速看
先选方向,再考证书:别盲目跟风!比如想做数据分析就优先考CDA,想进云计算赛道选阿里云。 实战>证书:证书只是敲门砖,企业更看重你的项目经验。考完证立刻用真实数据练手(如Kaggle竞赛)。 性价比至上:学生党优先选免费/低价证书(如IBM Data Science),工作党可冲高含金量证书(如CAIE)。
|
11月前
|
JSON 小程序 数据格式
微信小程序默认的文字内容在左上角怎么办?带你0基础快速了解skyline渲染模式。
本文主要介绍微信小程序开发中遇到的问题及其解决方法。问题通常由微信小程序自带的Skyline渲染模式引起,而非代码编写错误。解决步骤包括:1. 找到全局配置文件app.json;2. 去掉相关配置项;3. 修改后的配置示例。通过这些步骤可以有效解决文字内容顶格或覆盖的问题。文中还提供了进一步了解Skyline渲染模式的链接,帮助开发者深入理解其原理和应用。
1069 59
|
缓存 监控 Java
在使用 Glide 加载 Gif 动画时避免内存泄漏的方法
【10月更文挑战第20天】在使用 Glide 加载 Gif 动画时,避免内存泄漏是非常重要的。通过及时取消加载请求、正确处理生命周期、使用弱引用、清理缓存和避免重复加载等方法,可以有效地避免内存泄漏问题。同时,定期进行监控和检测,确保应用的性能和稳定性。需要在实际开发中不断积累经验,根据具体情况灵活运用这些方法,以保障应用的良好运行。
|
缓存
【已解决】npm安装依赖报错: npm ERR! cb() never called! npm ERR! This is an error with npm itself.
【已解决】npm安装依赖报错: npm ERR! cb() never called! npm ERR! This is an error with npm itself.
3549 0
|
人工智能 安全 API
【AI大模型应用开发】1.3 Prompt攻防(安全) 和 Prompt逆向工程
【AI大模型应用开发】1.3 Prompt攻防(安全) 和 Prompt逆向工程
935 0
|
机器学习/深度学习 算法
机器学习-特征选择:如何使用交叉验证精准选择最优特征?
机器学习-特征选择:如何使用交叉验证精准选择最优特征?
794 0
|
Java
notify () 和 notifyAll () 的区别
notify () 和 notifyAll () 的区别
366 0