不会java,我用python
今天的作业是通过前三天学习到的知识合作完成一个项目 - 车辆保险 / 其他有创意的功能。
提示:车辆保险项目可通过身份证识别,驾驶证、车辆识别等接口进行构思
也就是要在前三天的基础上才能完成项目,
安装Python SDK核心库
python的SDK文档 link
cmd里执行pip install aliyun-python-sdk-core命令,安装阿里云SDK核心库,报错。
国内的网络去链接python原版的库,很难连,可能会报错,我们要用国内的镜像。Python pip配置国内源的方法:link
阿里云和豆瓣是http开头,清华是https开头,多个"s"是加密的意思。豆瓣的源可能会报错,建议使用清华的源:link
“-i”的意思就是我要用后面的网址下载这个库
以安装aliyun-python-sdk-core库为例,有下图两种安装方式
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple aliyun-python-sdk-core
pip install aliyun-python-sdk-core -i https://pypi.tuna.tsinghua.edu.cn/simple
如下图,安装成功。
C:\Users\22532>pip install -i https://pypi.tuna.tsinghua.edu.cn/simple aliyun-python-sdk-core
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting aliyun-python-sdk-core
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/eb/02/934063402b766b6148930b86e57fabbc88f9ce48cb5c65bc199ede53db13/aliyun-python-sdk-core-2.13.16.tar.gz (434 kB)
|████████████████████████████████| 434 kB 1.7 MB/s
Collecting jmespath<1.0.0,>=0.9.3
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/07/cb/5f001272b6faeb23c1c9e0acc04d48eaaf5c862c17709d20e3469c6e0139/jmespath-0.10.0-py2.py3-none-any.whl (24 kB)
Building wheels for collected packages: aliyun-python-sdk-core
Building wheel for aliyun-python-sdk-core (setup.py) ... done
Created wheel for aliyun-python-sdk-core: filename=aliyun_python_sdk_core-2.13.16-py3-none-any.whl size=526481 sha256=193c00a054f4bd54040de3e3cf18ede66e5ffadca97ad692fed986c5cc025927
Stored in directory: c:\users\22532\appdata\local\pip\cache\wheels\31\4c\f8\a9903c691592e20f1b7df2f4786c047692dcb96ca3597e6084
Successfully built aliyun-python-sdk-core
Installing collected packages: jmespath, aliyun-python-sdk-core
Successfully installed aliyun-python-sdk-core-2.13.16 jmespath-0.10.0
安装视觉智能API相关服务Python SDK
需要哪类包就安装哪类
- 使用依赖包工具安装(推荐)。
- 执行以下命令,安装相应的包。
人脸人体:pip install aliyun-python-sdk-facebody
文字识别:pip install aliyun-python-sdk-ocr
商品理解:pip install aliyun-python-sdk-goodstech
内容安全:pip install aliyun-python-sdk-imageaudit
图像识别:pip install aliyun-python-sdk-imagerecog
图像生产:pip install aliyun-python-sdk-imageenhan
分割抠图:pip install aliyun-python-sdk-imageseg
目标检测:pip install aliyun-python-sdk-objectdet
图像分析处理:pip install aliyun-python-sdk-imageprocess
视觉搜索:pip install aliyun-python-sdk-imgsearch
视频理解:pip install aliyun-python-sdk-videorecog
视频生产:pip install aliyun-python-sdk-videoenhan
视频分割:pip install aliyun-python-sdk-videoseg - 自行下载安装:您可以使用git clone或其它方式下载aliyun-python-sdk-imageenhan并自行添加解决方案。详细下载地址请参见SDK简介。
身份证识别
身份证识别文档
我在Spyder (anaconda3)里安装了相应的库。
把AccessKey和AccessKeySecret输入相应的位置,
# -*- coding: utf8 -*-
from aliyunsdkcore.client import AcsClient
from aliyunsdkocr.request.v20191230 import RecognizeIdentityCardRequest
client = AcsClient("<your-access-key-id>", "<your-access-key-secret>", "cn-shanghai")
# 身份证识别
request = RecognizeIdentityCardRequest.RecognizeIdentityCardRequest();
## 如下url替换为自有的上海region的oss文件地址
request.set_ImageURL("https://hry.oss-cn-shanghai.aliyuncs.com/face.jpg")
request.set_Side("face")
response = client.do_action_with_exception(request)
print(response)
替换自己的url之后,运行结果是我的身份证正面的信息,字符编码有点问题,不是汉字编码,需要转换为汉字
驾驶证识别
完成了一项识别,其它的识别也差不多,下面是完整python代码:我把AccessKey、AccessKeySecret、图片url改了,你需要改为自己的。
# -*- coding: utf8 -*-
from aliyunsdkcore.client import AcsClient
from aliyunsdkocr.request.v20191230 import RecognizeIdentityCardRequest
from aliyunsdkocr.request.v20191230 import RecognizeDriverLicenseRequest
# 创建 AcsClient 实例
client = AcsClient("your-access-key-id", "your-access-key-secret", "cn-shanghai")
# 身份证正面识别
request1 = RecognizeIdentityCardRequest.RecognizeIdentityCardRequest();
## 如下url替换为自有的上海region的oss文件地址
request1.set_ImageURL("https://viapi-demo.oss-cn-shanghai.aliyuncs.com/viapi-demo/images/ChangeImageSize/change-image-size-src.png")
request1.set_Side("face")
response = client.do_action_with_exception(request1)
#身份证正面信息输出
#print(isinstance(response, str)) #判断变量的数据类型 返回False,不是字符串
#print(type(response)) #返回变量的类型,class 'bytes'
str = response.decode() #bytes是byte的序列,而str是unicode的序列,转换
#print(str)
aa = eval(str) #字符串转换为字典
a = aa['Data'] #取Data数据
#print(a)
b = a['FrontResult'] #取FrontResult数据
#print(b)
print("身份证信息:")
print('姓名:%s'%b["Name"])
print('性别:%s'%b["Gender"])
print('民族:%s'%b["Nationality"])
print('出生日期:%s'%b["BirthDate"])
print('地址:%s'%b["Address"])
print('公民身份号码:%s'%b["IDNumber"])
#获取身份证反面信息
request = RecognizeIdentityCardRequest.RecognizeIdentityCardRequest();
## 如下url替换为自有的上海region的oss文件地址
request.set_ImageURL("https://viapi-demo.oss-cn-shanghai.aliyuncs.com/viapi-demo/images/ChangeImageSize/change-image-size-src.png")
request.set_Side("back")
response = client.do_action_with_exception(request)
#print(response)
#身份证反面信息输出
str = response.decode() #bytes是byte的序列,而str是unicode的序列,转换
#print(str)
aa = eval(str) #字符串转换为字典
a = aa['Data'] #取Data数据
b = a['BackResult']
print('签发机关:%s'%b["Issue"])
print('生效日期:%s'%b["StartDate"])
print('失效日期:%s'%b["EndDate"])
print('\n')
# 驾驶证首页识别
request = RecognizeDriverLicenseRequest.RecognizeDriverLicenseRequest();
request.set_Side("face")
## 如下url替换为自有的上海region的oss文件地址
request.set_ImageURL("https://viapi-demo.oss-cn-shanghai.aliyuncs.com/viapi-demo/images/ChangeImageSize/change-image-size-src.png")
response = client.do_action_with_exception(request)
#输出格式设置
str = response.decode() #bytes是byte的序列,而str是unicode的序列,转换
#print(str)
aa = eval(str) #字符串转换为字典
a = aa['Data'] #取Data数据
b = a['FaceResult']
print("驾驶证信息:")
print('证件号:%s'%b["LicenseNumber"])
print('姓名:%s'%b["IssueDate"])
print('性别:%s'%b["Gender"])
print('地址:%s'%b["Address"])
print('生效日期:%s'%b["StartDate"])
print('有效期限:%s年'%b["EndDate"])
print('签发日期:%s'%b["IssueDate"])
print('准驾车型:%s'%b["VehicleType"])
# 驾驶证副页识别
request = RecognizeDriverLicenseRequest.RecognizeDriverLicenseRequest();
request.set_Side("back")
## 如下url替换为自有的上海region的oss文件地址
request.set_ImageURL("https://viapi-demo.oss-cn-shanghai.aliyuncs.com/viapi-demo/images/ChangeImageSize/change-image-size-src.png")
response = client.do_action_with_exception(request)
#输出格式设置
str = response.decode() #bytes是byte的序列,而str是unicode的序列,转换
#print(str)
aa = eval(str) #字符串转换为字典
a = aa['Data'] #取Data数据
b = a['BackResult']
print('档案编号:%s'%b["ArchiveNumber"])
同一个程序,我运行的时候有时候能运行,有时候会报错
ServerException: HTTP Status: 400 Error:Throttling.User Request was denied due to user flow control. RequestID: DA199402-78C5-45BE-8B86-938924D3BCB6
我猜是阿里云oss的节流设置,这个没关系。
车辆识别
# 车牌识别
request = RecognizeLicensePlateRequest.RecognizeLicensePlateRequest();
## 如下url替换为自有的上海region的oss文件地址
request.set_ImageURL("https://harry1.oss-cn-shanghai.aliyuncs.com/car1.png")
response = client.do_action_with_exception(request)
#print(response)
#车牌信息输出
str = response.decode() #bytes是byte的序列,而str是unicode的序列,转换
#print(str)
aa = eval(str) #字符串转换为字典
a = aa['Data'] #取Data数据
#print(a)
b = a['Plates'] #取FrontResult数据
#print(b[0])
b = b[0]
print("车子信息:")
print('车牌号:%s'%b["PlateNumber"])
print('可信度:%s'%b["Confidence"])
print('车子类型:%s'%b["PlateType"])
print('类型可信度:%s'%b["PlateTypeConfidence"])
c = b['Roi']
print('W:%s'%c["W"])
print('H:%s'%c["H"])
print('X:%s'%c["X"])
print('Y:%s'%c["Y"])
我用到的图片:
结果如下:
车子信息:
车牌号:京PKR676
可信度:0.9955239295959473
车子类型:小型汽车
类型可信度:1
W:152
H:55
X:283
Y:163
先写到这里吧。
欢迎扫码加入阿里云高校计划
阿里云——为了无法计算的价值[-]