开发工具:IDEA2019.3
开发框架:SpringBoot2.2
数据库:Mysql
接口测试工具:swagger
阿里云demo如下
和我之前调OCR身份证识别类似,也有StringUtils工具类,和一些依赖,这个是需要的依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.aliyun.api.gateway</groupId><artifactId>java.demo</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.15</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.2.1</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.2.1</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-util</artifactId><version>9.3.7.v20160115</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.5</version><scope>test</scope></dependency></dependencies>
</project>
这个识别接口,是上传两张照片然后比较它们的相似度,值得注意的是,这里
这里的type有几种可选的类型
下面是我的代码
刚开始我用的是IDCARD,然后我上传的一个身份证反面照片和一个自己的生活照,结果让我傻眼了
是的,第一个相似度只有34(虽然自拍照开了美颜),又试了一次(以为是美颜的原因,关了美颜),也只有65,然后阿里的建议是要达到80才算是同一个人,当时就想不至于这么低吧,6-7年前的身份证(除了现在稍微长了的肉,肯定跟这个是没有关系的)。然后,仔细想想,也可能是我理解错了,把type改了,换成LIVE
改成LIVE后,没开美颜的相似度
开了美颜的相似度
这个结果差别有点大,嘿嘿,尴尬尴尬(美颜是个好东西)
总结:1.用的时候要先把工具包下载到本地
2.相关依赖配好
3.理解type各个类型的用法,避免尴尬,为了准确度,谨慎开美颜
(这里的type,我也只弄清楚两个,IDCARD是两张图片都传身份证带照片那一面的照片对比
LIVE,可以是一张身份证,一张自拍/ 两张自拍之类的,其它type我也没有测过)
贴一下源码
@RequestMapping(value = "face",method = RequestMethod.POST)private JSONObject faceRate(MultipartFile file, MultipartFile face) {String srca = "";String srcb = "";JSONObject object = new JSONObject();try {BASE64Encoder encoder = new BASE64Encoder();// 通过base64来转化图片srca = (encoder.encode(file.getBytes())).replaceAll("\r\n", "");srcb = (encoder.encode(face.getBytes())).replaceAll("\r\n", "");String host = "https://face.xiaohuaerai.com";String path = "/face";String method = "POST";String appcode = "你的APPCODE";Map<String, String> headers = new HashMap<String, String>();//最后在header中的格式(中间是英文空格)为Authorization:APPCODE 12345679headers.put("Authorization", "APPCODE " + appcode);//根据API的要求,定义相对应的Content-Typeheaders.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");Map<String, String> querys = new HashMap<String, String>();Map<String, String> bodys = new HashMap<String, String>();bodys.put("srca", srca);bodys.put("srcb", srcb);bodys.put("type", "LIVE");HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);String msg = new String(EntityUtils.toString(response.getEntity()).getBytes(), "UTF-8");object = JSONObject.parseObject(msg);} catch (Exception e) {e.printStackTrace();}return object;}