阿里OCR身份证识别相关信息

maven

<!--  fastjson-->
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version><scope>compile</scope>
</dependency>
<!-- HTTP Client -->
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.3</version>
</dependency>

HttpUtil 工具类


import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.http.HttpStatus;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;
import java.net.URLEncoder;
import java.util.*;public class HttpUtil {public static String doGet(String url) throws Exception {return doGet(url, null);}public static String doGet(String urlPath, HashMap<String, Object> params)throws Exception {StringBuilder sb = new StringBuilder(urlPath);if (params != null && !params.isEmpty()) { // 说明有参数sb.append("?");Set<Map.Entry<String, Object>> set = params.entrySet();for (Map.Entry<String, Object> entry : set) { // 遍历map里面的参数String key = entry.getKey();String value = "";if (null != entry.getValue()) {value = entry.getValue().toString();// 转码value = URLEncoder.encode(value, "UTF-8");}sb.append(key).append("=").append(value).append("&");}sb.deleteCharAt(sb.length() - 1); // 删除最后一个&}URL url = new URL(sb.toString());HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(5000); // 5s超时conn.setRequestMethod("GET");if (conn.getResponseCode() == HttpStatus.OK.value()) {// HttpStatus.SC_OK ==// 200BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));StringBuilder sbs = new StringBuilder();String line;while ((line = reader.readLine()) != null) {sbs.append(line);}return sbs.toString();}return null;}public static String doPost(String url) {return doPost(url, null);}public static String doPost(String url, Map<String, Object> param) {// 创建Httpclient对象CloseableHttpClient httpclient = HttpClients.createDefault();String resultString = "";CloseableHttpResponse response = null;try {// 创建uriURIBuilder builder = new URIBuilder(url);if (param != null) {for (String key : param.keySet()) {builder.addParameter(key, param.get(key).toString());}}URI uri = builder.build();// 创建http Post请求HttpPost httpPost = new HttpPost(uri);// 执行请求response = httpclient.execute(httpPost);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() == 200) {resultString = EntityUtils.toString(response.getEntity(), "UTF-8");}} catch (Exception e) {e.printStackTrace();} finally {try {if (response != null) {response.close();}httpclient.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}/*** post form* 以form表单的方式提交** @param host* @param path* @param method* @param headers* @param querys* @param bodys* @return* @throws Exception*/public static HttpResponse doPost(String host, String path, String method,Map<String, String> headers,Map<String, String> querys,Map<String, String> bodys)throws Exception {CloseableHttpClient httpClient = HttpClients.createDefault();HttpPost request = new HttpPost(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}if (bodys != null) {List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();for (String key : bodys.keySet()) {nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));}UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");request.setEntity(formEntity);}return httpClient.execute(request);}/*** Post String* 以字符串的方式提交** @param host* @param path* @param method* @param headers* @param querys* @param body* @return* @throws Exception*/public static HttpResponse doPost(String host, String path, String method,Map<String, String> headers,Map<String, String> querys,String body)throws Exception {CloseableHttpClient httpClient = HttpClients.createDefault();HttpPost request = new HttpPost(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}if (StringUtils.isNotBlank(body)) {request.setEntity(new StringEntity(body, "utf-8"));}return httpClient.execute(request);}private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException {StringBuilder sbUrl = new StringBuilder();sbUrl.append(host);if (!StringUtils.isBlank(path)) {sbUrl.append(path);}if (null != querys) {StringBuilder sbQuery = new StringBuilder();for (Map.Entry<String, String> query : querys.entrySet()) {if (0 < sbQuery.length()) {sbQuery.append("&");}if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {sbQuery.append(query.getValue());}if (!StringUtils.isBlank(query.getKey())) {sbQuery.append(query.getKey());if (!StringUtils.isBlank(query.getValue())) {sbQuery.append("=");sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));}}}if (0 < sbQuery.length()) {sbUrl.append("?").append(sbQuery);}}return sbUrl.toString();}}

具体代码

/*** 阿里OCR身份证识别** @param type    身份证正反面类型:face/back* @param imgFile 身份证图片路径* @return*/public static void ocrIdCardAli(String type, String imgFile) {String host = "https://cardnumber.market.alicloudapi.com";String path = "/rest/160601/ocr/ocr_idcard.json";String appcode = "";//你的 appcodeString method = "POST";Map<String, String> headers = new HashMap<String, String>();//最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105headers.put("Authorization", "APPCODE " + appcode);//根据API的要求,定义相对应的Content-Typeheaders.put("Content-Type", "application/json; charset=UTF-8");Map<String, String> querys = new HashMap<String, String>();// 对图像进行base64编码String imgBase64 = img_base64(imgFile);//configure配置JSONObject configObj = new JSONObject();configObj.put("side", type);//身份证正反面类型:face/backString config_str = configObj.toString();// 拼装请求body的json字符串JSONObject requestObj = new JSONObject();requestObj.put("image", imgBase64);if (configObj.size() > 0) {requestObj.put("configure", config_str);}String bodys = requestObj.toString();try {HttpResponse response = HttpUtil.doPost(host, path, method, headers, querys, bodys);int stat = response.getStatusLine().getStatusCode();if (stat != 200) {System.out.println("身份证识别失败");return;}String res = EntityUtils.toString(response.getEntity());JSONObject res_obj = JSON.parseObject(res);if ((boolean) res_obj.get("success")) {if (type.equals("face")) {//正面System.out.println(res_obj.get("name"));System.out.println(res_obj.get("num"));System.out.println(res_obj.get("address"));System.out.println(res_obj.get("nationality"));System.out.println(res_obj.get("sex"));System.out.println(res_obj.get("birth"));} else {System.out.println(res_obj.get("end_date"));System.out.println(res_obj.get("issue"));}}} catch (Exception e) {e.printStackTrace();}}public static String img_base64(String path) {/***  对path进行判断,如果是本地文件就二进制读取并base64编码,如果是url,则返回*/String imgBase64 = "";if (path.startsWith("http")) {imgBase64 = path;} else {try {File file = new File(path);byte[] content = new byte[(int) file.length()];FileInputStream finputstream = new FileInputStream(file);finputstream.read(content);finputstream.close();imgBase64 = new String(Base64.encodeBase64(content));} catch (IOException e) {e.printStackTrace();return imgBase64;}}return imgBase64;}

阿里OCR身份证识别相关信息相关推荐

  1. 调用阿里云身份证识别OCR

    这个是需要收费的第三方身份证识别OCR的接口 这个是官方给出的案例和文档 https://market.aliyun.com/products/57124001/cmapi028587.htmlspm ...

  2. 腾讯OCR身份证识别信息

    腾讯OCR身份证识别信息 maven <!-- 腾讯身份证识别 --><dependency><groupId>com.qcloud</groupId> ...

  3. 关于调用百度云OCR身份证识别接口,用Java语言,识别结果缺少身份证号码的问题解决

    问题描述: 最近项目系统开发,使用到了相关证件的信息提取.识别,由于是学校科研使用,选择了百度云OCR文字识别的API.具体的相关识别身份等证件的代码将在另一篇文章中叙述,最近真的太忙了,草稿箱中还有 ...

  4. Android Study 玩转百度ocr身份证识别不是梦~

    LZ-Says:最近好哥儿们因公来廊坊,在家里可谓夜夜笙歌,喝酒喝的俩眼发懵,最近状态欠佳,导致学习计划一直在滞留,今天通过简短的小例子,重新拾起学习之路,滚蛋吧,懒瘤君~ 前言 Today,由于昨晚 ...

  5. 国航APP接入百度大脑OCR身份证识别技术,让机票购买更便捷!

    价值成果 中国国航APP通过接入百度大脑OCR身份证识别技术,实现了旅客线上自助修正错购机票信息的功能.购票信息错误的旅客只需在中国国航APP上传身份证照片,即可进行购票身份认证,并立即修正错误信息. ...

  6. springboot 集成 腾讯云ocr身份证识别

    //控制层 @GetMapping("/getCertification")@ApiOperation(value = "ocr身份证识别接口 positiveImg:正 ...

  7. 阿里云ocr身份证识别接口调用

    1.阿里云界面点击搜索ocr,选择文字识别,开通服务,默认已登录阿里云账号 2.选择个人证件识别,身份证识别(每个月赠送200次体验) 3.点击产品文档 4.下拉到最后,选择RecognizeIdca ...

  8. 信息收集域名、IP、端口服务、指纹识别相关信息

    信息收集域名.IP.端口服务.指纹识别.Googlehacking.目录信息.Githack相关信息 域名相关的信息 域名是什么 域名的分类 国际域名 国别域名 新顶级域名 域名联系人信息 whois ...

  9. 身份证在日常生活重要性 OCR身份证识别的作用

    如何能快速识别提取身份证号.姓名呢?结合使用ocr识别技术,一秒提取,不用手工输入: 身份证识别,识别解决方案 身份证识别OCR技术影响识别率的因素有很多:其中重要因素是图片清晰度,决定因素为字符分割 ...

最新文章

  1. Visual Studio Code中文文档(一)-快速入门
  2. GO语言实现文件的断点续传
  3. 你最想要的圣诞礼物是什么?
  4. jpa映射json_如何使用JPA和Hibernate映射JSON集合
  5. Jquery 全选,反选
  6. 解决 html5 input type='number' 类型可以输入e
  7. 自学python能找到工作吗-学完python能找到工作么
  8. 聊聊 API Gateway 和 Netflix Zuul
  9. 大数据分析的处理流程
  10. 今天发现的一个小问题,找不到模拟器和手机设备
  11. python雨课堂课后答案_有没有免费查网课雨课堂答案的公众号或者软件啥的
  12. el-checkbox-group 的坑
  13. uniapp 集成腾讯云超级播放器问题
  14. 多么痛的领悟,只有程序员才知道的12个人艰不拆的真相
  15. 从静态检查工具谈代码编程规范
  16. [零基础学JAVA]Java SE实战开发-37.MIS信息管理系统实战开发[文件保存](1)
  17. 【网络】Wireshark对远程主机抓包|过滤|原理
  18. [机缘参悟-43]:鬼谷子-第六忤合篇 - 合则聚,不合则散,顺势而为
  19. 视频播放器是如何播放音视频的?
  20. 无线网络边缘“遇上”分布式机器学习讲座:Machine Learning at the Wireless Edge

热门文章

  1. 搬砖之余来一杯意式浓缩咖啡(Espresso高级用法)
  2. 10 个压箱底的优质公众号,推荐给你!
  3. 2021届成都高考一诊成绩查询,2021届成都一诊分数线今日公布
  4. 【KeyError:Caught KeyError in Dataloader worker process 0. KeyError:‘标签’】
  5. 【离散数学】图论 通路与回路
  6. Android multiDex
  7. English listening
  8. java虚拟机手机下载_java虚拟机
  9. Mercurial ---hgignore
  10. 架构师之路--HTTP请求headr的Referer