20.身份证识别-沙溪行政执法系统-未验证
1.在学习身份证识别 接口 (语音识别接口,营业执照识别接口--我发现他们都是类似的)
20.1-身份证识别接口
实体层
BaseEntity-基础类
java
/**
* Created by vincent.yang on 2016-01-05.
* <p/>
* 基础实体类
*/
@Getter
@Setter
@ToString
public abstract class BaseEntity {
private static final long serialVersionUID = -5488114907242694673L;
// 状态: 0无效 1有效
private Long status = 1L;
/**
* 删除标记:逻辑删除用, 0-表示未删除, 1-表示已删除
*/
private String deletedFlag = "0";
/**
* 数据标识,S-系统数据(初始化),I-插入数据,O-其他
*/
private String inputType = "I";
/**
* 描述
*/
private String description = "";
/**
* 备注
*/
private String note = "";
private String updatedUser;
private String createdUser;
private Long updatedUserId;
private Long createdUserId;
private Date updatedTime;
private Date createdTime;
}
身份证识别结果类
java
@Getter
@Setter
public class IDCardResult extends BaseEntity {
/**
* 身份证号
*/
String idcard;
/**
* 籍贯
*/
String address;
/**
* 性别 男/女
*/
String sexnual;
/**
* 民族
*/
String nation;
/**
* 出生年月 年/月/日 不补全
*/
String birth;
}
身份证识别-控制层
java
/**
* 识别身份证信息
*
* @param file 图片
* @return 识别结果
*/
@PostMapping("secured/IDCardIdentify")
@ResponseBody
public IDCardResult identifyIDCard(@RequestParam("file") MultipartFile file) {
return videoCollectService.identifyIDCard(file);
}
身份证识别-service层
java
/**
* 调用接口识别身份证信息
* @param file 图片
* @return 结果
*/
IDCardResult identifyIDCard(MultipartFile file);
java
/**
* 身份证识别
*
* @param file 图片
* @return 结果
*/
@Override
public IDCardResult identifyIDCard(MultipartFile file) {
String pictureParamName = "idcard";
String ticketParamName = "appid";
//IDCardIdentifyUrl 这个是识别的url的服务 录入identify.idCardUrl=http://47.XXXX:8888/idcardocr
String jsonStr = identify(file, IDCardIdentifyUrl, pictureParamName, ticketParamName); //==》这里
if (jsonStr != null) {
JSONObject object = JSON.parseObject(jsonStr);
return object.getJSONArray("results").getJSONObject(0).getObject("ocrresult", IDCardResult.class);
}
return new IDCardResult();
}
所用到的identify公共这个方法
java
/**
* 识别公共方法
*
* @param file 文件
* @param interfaceUrl 接口地址
* @param pictureParamName 文件参数名
* @param ticketParamName 授权码参数名
* @return 返回信息
*/
private String identify(MultipartFile file, String interfaceUrl, String pictureParamName, String ticketParamName) {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(interfaceUrl);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
String jsonStr = null;
try {
builder.addBinaryBody(pictureParamName, file.getBytes(), ContentType.MULTIPART_FORM_DATA, file.getOriginalFilename());
//identifyToken 这个也是识别的token例如:identify.token=02628280fa5c45b1af06cXXX
builder.addTextBody(ticketParamName, identifyToken, ContentType.MULTIPART_FORM_DATA);
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
CloseableHttpResponse response = httpClient.execute(httpPost);
HttpEntity responseEntity = response.getEntity();
jsonStr = EntityUtils.toString(responseEntity, "utf-8");
} catch (IOException e) {
e.printStackTrace();
}
return jsonStr;
}
这个方法需要MultipartEntityBuilder引入这个相关的maven
xml
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.13</version>
</dependency>
20.2-识别营业执照信息接口
营业执照信息实体
java
/**
* @author Steven.sun
* @date 2020/11/30 16:07
* 营业执照识别结果
*/
@Getter
@Setter
public class BusinessLicenseResult extends BaseEntity {
/**
* 法人代表
*/
String lawer;
/**
* 类型
*/
String type;
/**
* 营业期限
*/
String limit;
/**
* 地址
*/
String address;
/**
* 注册资本
*/
String regmoney;
/**
* 信用代码
*/
String sid;
/**
* 成立日期
*/
String created;
/**
* 经营范围
*/
String business;
}
识别营业执照信息-控制层
java
/**
* 识别营业执照信息
* @param file 图片
* @return 识别结果
*/
@PostMapping("licenseIdentify")
@ResponseBody
public BusinessLicenseResult identityBusinessLicense(@RequestParam("file") MultipartFile file){
return videoCollectService.identityBusinessLicense(file);
}
识别营业执照信息-service层
java
/**
* 调用接口识别营业执照信息
* @param img 图片
* @return 结果
*/
BusinessLicenseResult identityBusinessLicense(MultipartFile img);
java
/**
* 营业执照识别
*
* @param file 图片
* @return 结果
*/
@Override
public BusinessLicenseResult identityBusinessLicense(MultipartFile file) {
//图片字段名
String pictureParamName = "taxcard";
//鉴权字段名
String ticketParamName = "appid";
//===taxLicenseIdentifyUrl是 identify.taxLicenseUrl=http://47.xxxx:8888/taxcardocr
//identify 上面公共的方法
String jsonStr = identify(file, taxLicenseIdentifyUrl, pictureParamName, ticketParamName);
if (jsonStr != null) {
return JSON.parseObject(jsonStr, BusinessLicenseResult.class);
}
return new BusinessLicenseResult();
}
20.3 语音识别接口
控制层
java
/**
* 语音识别
*
* @param file 文件
* @return 结果
*/
@PostMapping("APP_VOICE_IDENTIFY")
@ResponseBody
public String identifyVoice(@RequestParam("file") MultipartFile file) {
return videoCollectService.identifyVoice(file);
}
service层
java
/**
* 语音识别
* @param file 文件
* @return 结果
*/
String identifyVoice(MultipartFile file);
java
/**
* 语音识别
* @param file 文件
* @return 结果
*/
@Override
public String identifyVoice(MultipartFile file) {
String voiceParamName = "speechfile";
String ticketParamName = "appid";
//identify 公共的方法
//voiceIdentifyUrl服务 identify.voiceUrl=http://47.xxxx:8888/speechrec
return identify(file, voiceIdentifyUrl, voiceParamName, ticketParamName);
}