今天学习了身份证识别系统的搭建,由于本人没有Java基础,为了简便,就使用Python的sdk实现了
首先是安装支持库
使用下面的代码安装SDK核心库pip install aliyun-python-sdk-core
由于身份证识别是在OCR下面的,所以我们需要安装OCR的sdk,在console使用下面的语句安装sdkpip install aliyun-python-sdk-ocr
然后是代码部分
先要导库,使用下面的语句即可
from aliyunsdkcore.client import AcsClient
from aliyunsdkocr.request.v20191230 import RecognizeIdentityCardRequest
然后根据文档,使用下面的代码(示例)即可
# 创建 AcsClient 实例
client = AcsClient("<your-access-key-id>", "<your-access-key-secret>", "cn-shanghai")
# 身份证识别
request = RecognizeIdentityCardRequest.RecognizeIdentityCardRequest();
## 如下url替换为自有的上海region的oss文件地址
request.set_ImageURL("https://viapi-demo.oss-cn-shanghai.aliyuncs.com/viapi-demo/images/RecognizeIdentityCard/identityCard.jpg")
request.set_Side("face")
response = client.do_action_with_exception(request)
print(response)
根据演示,我们需要使用oss上传文件,为了简便,我就直接把我本人的身份证照片上传到oss了
因为隐私问题,我就不公开我的身份证照片的URL了,这里返回结果演示使用阿里云给的默认的图片吧
{
"RequestId":"82C8C488-A684-4733-BCF0-97F9CFF343C9",
"Data":{
"FrontResult":{
"Address":"杭州市西湖区万塘路黄龙时代广场",
"FaceRectVertices":[
{
"X":0,
"Y":0
},
{
"X":0,
"Y":0
},
{
"X":0,
"Y":0
},
{
"X":0,
"Y":0
}
],
"FaceRectangle":{
"Center":{
"X":0,
"Y":0
},
"Angle":0,
"Size":{
"Height":0,
"Width":0
}
},
"CardAreas":[
{
"X":70,
"Y":112
},
{
"X":435,
"Y":112
},
{
"X":435,
"Y":331
},
{
"X":70,
"Y":331
}
],
"Gender":"女",
"Nationality":"汉",
"Name":"支小宝",
"IDNumber":"330106200503287127",
"BirthDate":"20050328"
}
}
}
身份证正面照片能读取的所有的信息都能以程序可以读取和调用的信息展示出来,可以说是很方便了
使用我本人的身份证正面也是正确无误的
我们再来试试背面
把下面这行代码中的face改成back就好了
request.set_Side("face")
结果我直接用我自己的身份证背面展示
{
"RequestId":"C2CCC164-0090-493B-BFC4-1768B490E6B5",
"Data":{
"BackResult":{
"StartDate":"20190729",
"Issue":"深圳市*局南山*",
"EndDate":"20290729"
}
}
}
写在最后
说明
在返回结果展示所表示的内容均为json
收获
本期的学习收获颇丰,曾经如果我要实现这些东西可能需要无数的样本和算力资源才能做到这些功能,目前使用阿里云的OCR能够低成本又高效的方式实现这一功能,能够使我们更加专注于程序创意的表达和实现,阿里云为我们树立了一个强大的技术平台和能力的后盾