身份证识别系统搭建
Day 2 - 身份证识别系统搭建
身份证识别功能描述
RecognizeIdentityCard可以识别二代身份证关键字段内容,关键字段包括:姓名、性别、民族、身份证号、出生日期、地址信息、有效起始时间、签发机关,同时可输出身份证区域位置和人脸位置信息。
输入限制
- 图片格式:JPEG、JPG、PNG、BMP、GIF。
- 图像大小:图像大小不超过3M。
- 图像分辨率:不限制图片分辨率,但图片分辨率太高可能会导致API识别超时,超时时间为5秒。
请求参数
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Action | String | 是 | RecognizeIdentityCard | 系统规定参数。取值:RecognizeIdentityCard。 |
ImageURL | String | 是 | https://viapi-demo.oss-cn-shanghai.aliyuncs.com/viapi-demo/images/DetectImageElements/detect-elements-src.png | 图片URL地址。 |
Side | String | 是 | face | 身份证正反面类型。 - face:正面。 - back:反面。 |
返回数据
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
Data | Struct | 返回的结果数据内容。 | |
BackResult | Struct | 反面照结果。 | |
EndDate | String | 19800101 | 有效期结束时间,格式:YYYYMMDD,例如19800101,即1980年01月01日。 |
Issue | String | 杭州市公安局 | 签发机关。 |
StartDate | String | 19700101 | 有效期起始时间,格式:YYYYMMDD,例如19800101,即1980年01月01日。 |
FrontResult | Struct | 正面照结果。 | |
Address | String | 浙江省杭州市余杭区文一西路969号 | 地址信息。 |
BirthDate | String | 20000101 | 出生日期,格式:YYYYMMDD,例如19800101,即1980年01月01日。 |
CardAreas | Array | 身份证区域位置,四个顶点表示,顺序是逆时针(左上、左下、右下、右上)。 | |
X | Float | 165 | 身份证区域横坐标。 |
Y | Float | 657 | 身份证区域纵坐标。 |
FaceRectVertices | Array | 人脸位置,四个顶点表示。 | |
X | Float | 1024.6600341796875 | 人脸位置横坐标。 |
Y | Float | 336.629638671875 | 人脸位置纵坐标。 |
FaceRectangle | Struct | 人脸位置。 | |
Angle | Float | -90 | 表示矩形顺时针旋转的度数,范围-180~180。 |
Center | Struct | 人脸矩形中心坐标。 | |
X | Float | 952 | 人脸矩形中心横坐标。 |
Y | Float | 325.5 | 人脸矩形中心纵坐标。 |
Size | Struct | 人脸矩形尺寸。 | |
Height | Float | 181.99 | 高度。 |
Width | Float | 164.99 | 宽度。 |
Gender | String | 男 | 性别。 |
IDNumber | String | 1234567890 | 身份证号。 |
Name | String | 张三 | 姓名。 |
Nationality | String | 汉 | 民族。 |
RequestId | String | D6C24839-91A7-41DA-B31F-98F08EF80CC0 | 请求ID。 |
返回数据示例
请求示例
1 | http(s)://ocr.cn-shanghai.aliyuncs.com/?Action=RecognizeIdentityCard |
正常返回示例XML
格式
1 | <RequestId>D6C24839-91A7-41DA-B31F-98F08EF80CC0</RequestId> |
JSON
格式
1 | { |
JAVA SDK
引入POM包<artifactId>ocr20191230</artifactId>
。
1 | <dependency> |
- 说明 您可以通过
[https://mvnrepository.com/artifact/com.aliyun/](https://mvnrepository.com/artifact/com.aliyun/)**SDK包名称**
查看不同服务SDK的版本。例如[https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-ocr](https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-ocr)
查看aliyun-java-sdk-ocr的版本。
接入SDK
下面介绍新版本的参数构建和调用方法。
引入资源。在pom.xml文件中添加Maven依赖安装java SDK。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.4.8</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.52</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>ocr20191230</artifactId>
<version>${aliyun.ocr.version}</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>facebody20191230</artifactId>
<version>${aliyun.facebody.version}</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>imagerecog20190930</artifactId>
<version>${aliyun.imagerecog.version}</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>imageseg20191230</artifactId>
<version>${aliyun.imageseg.version}</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>imageenhan20190930</artifactId>
<version>${aliyun.imageenhan.version}</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>goodstech20191230</artifactId>
<version>${aliyun.goodstech.version}</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>objectdet20191230</artifactId>
<version>${aliyun.objectdet.version}</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>imgsearch20200320</artifactId>
<version>${aliyun.imgsearch.version}</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>videorecog20200320</artifactId>
<version>${aliyun.videorecog.version}</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>videoseg20200320</artifactId>
<version>${aliyun.videoseg.version}</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>videoenhan20200320</artifactId>
<version>${aliyun.videoenhan.version}</version>
</dependency>构建Client。示例如下:
1
2
3
4
5
6
7
8
9
10// 你的accessKeyId
config.accessKeyId="######";
//你的accessKeySecret
config.accessKeySecret="#######";
config.type="access_key";
config.regionId="cn-shanghai";
config.endpointType="internal";
Client client = new Client(config);
config.endpoint="ocr.cn-shanghai.aliyuncs.com";
//此处endpoint以文字识别为例。不同服务的Endpoint参见访问域名。调用服务。Client已经封装好需要调用的能力,且大多数API支持本地文件。
使用URL
- request:RecognizeIdentityCard
- 方法:recognizeIdentityCard
- 示例
1
2
3
4
5
6
7
8
9
10
11
12private static void RecognizeIdentityCard(Client client, RuntimeOptions runtimeOptions) throws Exception {
try {
RecognizeIdentityCardRequest req = new RecognizeIdentityCardRequest();
req.imageURL="https://viapi-demo.oss-cn-shanghai.aliyuncs.com/viapi-demo/images/RecognizeIdentityCard/IdentityCard.jpg";
RecognizeIdentityCardResponse rep = client.recognizeBankCard(req, runtimeOptions);
System.out.println("身份证识别="+JSON.toJSONString(rep));
}
catch (TeaException e){
System.out.println("身份证识别异常了");
System.out.println(JSON.toJSONString(e.getData()));
}
}
使用本地文件
- request:RecognizIdentityCardAdvanceRequest
- 方法:recognizeIdentityCardAdvance
- 示例
1
2
3
4
5
6
7
8
9
10
11
12
13private static void RecognizeIdentityCardAdvance(Client client, RuntimeOptions runtimeOptions) throws Exception {
try {
RecognizeIdentityCardAdvanceRequest req = new RecognizeBankCardAdvanceRequest();
InputStream inputStream = new FileInputStream(new File("/Users/robinqu/Library/IdentityCard.png"));
req.imageURLObject=inputStream;
RecognizeIdentityCardResponse rep = client.recognizeBankCardAdvance(req, runtimeOptions);
System.out.println("银行卡识别="+JSON.toJSONString(rep));
}
catch (TeaException e){
System.out.println("银行卡识别异常了");
System.out.println(JSON.toJSONString(e.getData()));
}
}
结果示例
对于同一个接口,如果SDK中包含类似xxxAdvanceRequest的结构,那么这个接口支持本地文件上传,否则不支持。
例如下图中ChangeImageSize是支持本地文件的,而RecolorImage则不支持本地文件,只支持OSS链接。
异常相关
如果调用发生异常,则异常信息会在TeaException.getData()
中显示出来。
1 | { |