在项目里因客户要求在注册时要求上传身份证照片来识别身份证上信息来录入信息资料,于是采用了百度OCR文字识别,废话不多说,进入正题
1.登录百度云(没有就先注册)
在全部产品 - 人工智能 - 文字识别创建一个应用,在创建中选择对应要的功能,我只做了身份证识别,所以我选择了默认自带的,如图
创建后则在列表能看到,点进详情能获取到两个百度自动生成的值API Key,Secret Key
这两者是调用OCR文字识别最重要的关键,接下来就可以写代码了
2.Access Token获取(官网地址)
- 导入Java SDK工具包
在创建应用后会有个JDK包下载,下载后导入项目即可,我用的是Maven,所以在pom.xml中的文件中写入如下:
|
- 访问令牌获取方法
|
调用baiduOcr.getAuth()就能获取到的结果,导致格式如下:
|
其中暂时有用的就两个值,access_token和expires_in
第一个是调用文字识别必带的一个参数,第二个是Access Token的有效期一般是一个月
3.将本地图片进行BASE64位编码
|
4.文字识别
|
写到如此,身份证的文字识别代码就差不多都写完了,赶紧调用看看效果吧
我写了个主要方法去调用,当然也可以写在控制器中调用
|
请求参数我就直接把官网上的弄下来了
参数 | 是否必选 | 类型 | 可选值范围 | 说明 |
detect_direction | 假 | 布尔 | 真假 | 是否检测图像旋转角度,默认不检测,即:假朝向是指输入图像是正常方向, 逆时针旋转90/180/270度。可选值包括: - true:检测旋转角度并矫正识别; - false:不检测旋转角度,针对摆放情况不可控制的情况建议本参数置为true。 |
id_card_side | 真正 | 串 | 前后 | 前:身份证含照片的一面;背面:身份证带国徽的一面 |
图片 | 真正 | 串 | - | 图像数据,的base64编码后进行进行urlencode, 要求的base64编码和进行urlencode后大小不超过4M, 最短边至少15像素,最长边最大4096px,支持JPG / PNG / BMP格式 |
detect_risk | 假 | 串 | 真假 | 是否开启身份证风险类型(身份证复印件,临时身份证,身份证翻拍,修改过的身份证)功能,默认不开启,即:假可选值:真阳性开启;假不开 |
获取到的结果是JSON格式,于是我把他转换成了HashMap中,代码如下:
|
至此全部代码都结束了,我把身份证附上
让我们来运行看下效果吧
|