自己是做Java开发,但是本人以前接触并学习很多图像的知识,所以对图像很敏感。下面以百度的一个接口,实现身份证识别案例(一颗算法开发的心在不断的跳动,哈哈!!!)

身份证识别在很多场景都有应用,如:门禁卡,使用身份证扫描识别;App注册扫描认证等。现在我将我的方法分享给大家,希望对大家有所帮助,谢谢!

1、需要百度开发者AppID、SecretKey 、API Key。

先注册,然后进入
https://console.bce.baidu.com/ai/?fromai=1#/ai/ocr/overview/index,这个网址,选择文字识别,创建应用,获取AppID、SecretKey 、API Key。

2、创建一个maven项目,在pom中添加相应的依赖jar

<!-- 百度文字识别SDK -->
    <dependency>
        <groupId>com.baidu.aip</groupId>
        <artifactId>java-sdk</artifactId>
        <version>4.6.1</version>
    </dependency>

3、创建两个配置工具类

public class BaiduConfig {
    public static final String APP_ID = "***";//自己的
    public static final String API_KEY = "****";//自己的
    public static final String SECRET_KEY = "***";//自己的

}
public class Utils {
        
    /**
        将图像转为二进制数组
   * @param path
   * @return
   */
  public static byte[] readImageFile(String path){
        byte[] data = null;
        FileImageInputStream input = null;
        try {
          input = new FileImageInputStream(new File(path));
          ByteArrayOutputStream output = new ByteArrayOutputStream();
          byte[] buf = new byte[1024];
          int numBytesRead = 0;
          while ((numBytesRead = input.read(buf)) != -1) {
          output.write(buf, 0, numBytesRead);
          }
          data = output.toByteArray();
          output.close();
          input.close();
        }
        catch (FileNotFoundException ex1) {
          ex1.printStackTrace();
        }
        catch (IOException ex1) {
          ex1.printStackTrace();
        }
        return data;
      }

4、执行类IDCardRecogizeController

package com.toutiao.yangwj.controller;

import com.baidu.aip.ocr.AipOcr;
import com.toutiao.yangwj.config.BaiduConfig;
import com.toutiao.yangwj.utils.ImageUtil;
import org.json.JSONObject;

import java.util.HashMap;

/**
 * @author yangwj
 * @date 2020/5/23 14:49
 */
public class IDCardRecogizeController {

    public static void main(String[] args) {
        IDCardRecogize();
    }

    public static void IDCardRecogize() {
        AipOcr client = new AipOcr(BaiduConfig.APP_ID, BaiduConfig.API_KEY, BaiduConfig.SECRET_KEY);
        // 传入可选参数调用接口
        HashMap<String, String> options = new HashMap<String, String>();
        options.put("detect_direction", "true");
        options.put("detect_risk", "false");
        //背面照
        //String idCardSide = "back";
        //前面照
        String idCardSide = "front";

        // 参数为本地图片路径
        //String image = "D:\\back.jpg";
        String image = "D:\\front.png";
        JSONObject res = client.idcard(image, idCardSide, options);
        System.out.println(res.toString(2));

        // 参数为本地图片二进制数组
        byte[] file = ImageUtil.readImageFile(image);
        res = client.idcard(file, idCardSide, options);
        System.out.println(res.toString(2));

    }

}

5、测试效果

java身份证提取年龄 java提取身份证信息_java

java身份证提取年龄 java提取身份证信息_API_02