package cn.huge.module.utils;
|
|
|
import cn.huge.module.constant.CaseBaseConstsEnum;
|
import cn.huge.module.constant.NotionBaseConstsEnum;
|
import cn.huge.module.sys.dto.IdcardOcrResultDTO;
|
import com.baidu.aip.ocr.AipOcr;
|
import lombok.extern.slf4j.Slf4j;
|
import org.json.JSONObject;
|
|
import java.util.HashMap;
|
|
/**
|
* @title: 百度云OCR工具类
|
* @description: 百度云OCR工具类
|
* @company: hugeinfo
|
* @author: liyj
|
* @time: 2021-11-05 16:51:48
|
* @version: 1.0.0
|
*/
|
@Slf4j
|
public class BaiduOcrUtils {
|
// 公司百度云账号
|
// public static final String APP_ID = "24661114";
|
// public static final String API_KEY = "cKXdjXhgRP9fsbI15UxGB0jM";
|
// public static final String SECRET_KEY = "1X1BY7oAAmjemQgzzdfG3VnTh0rUTO2X";
|
// 个人账号-15602261488
|
public static final String APP_ID = "27535980";
|
public static final String API_KEY = "6U6tSA75gKf4UMXvHgDpzOC9";
|
public static final String SECRET_KEY = "BBjjCDhy2sAVO0jfiaGn8OWIGE470lWU";
|
|
public static void main(String[] args) {
|
|
}
|
|
/**
|
* 身份证识别(二进制流)
|
* @param images
|
* @return
|
*/
|
public static IdcardOcrResultDTO ocrIdcard(byte[] images) {
|
try{
|
AipOcr client = new AipOcr(APP_ID,API_KEY,SECRET_KEY);
|
// 设置识别身份证正面参数 front - 身份证含照片的一面 back - 身份证带国徽的一面
|
String idCardSide = "front";
|
// 自定义参数定义
|
HashMap<String, String> options = new HashMap<String, String>();
|
options.put("detect_direction", "true");
|
options.put("detect_risk", "true");
|
JSONObject json = client.idcard(images, idCardSide, options);
|
JSONObject result = json.getJSONObject("words_result");
|
// 解析识别结果
|
IdcardOcrResultDTO idcardOcrResultDTO = new IdcardOcrResultDTO();
|
String name = result.getJSONObject("姓名").getString("words");
|
idcardOcrResultDTO.setTrueName(name);
|
|
String sex = result.getJSONObject("性别").getString("words");
|
idcardOcrResultDTO.setSexName(sex);
|
idcardOcrResultDTO.setSex(CaseBaseConstsEnum.getIndex(sex));
|
|
String idcard = result.getJSONObject("公民身份号码").getString("words");
|
idcardOcrResultDTO.setCertiType(CaseBaseConstsEnum.CARD_TYPE_1.getIndex());
|
idcardOcrResultDTO.setCertiTypeName(CaseBaseConstsEnum.CARD_TYPE_1.getDes());
|
idcardOcrResultDTO.setCertiNo(idcard);
|
|
String address = result.getJSONObject("住址").getString("words");
|
idcardOcrResultDTO.setPlaceAddr(address);
|
|
String bir = result.getJSONObject("出生").getString("words");
|
String birthday = "";
|
birthday += bir.substring(0,4)+"-"+bir.substring(4,6)+"-"+bir.substring(6,8);
|
idcardOcrResultDTO.setBirthday(birthday);
|
|
String nation = result.getJSONObject("民族").getString("words")+"族";
|
idcardOcrResultDTO.setNationName(nation);
|
idcardOcrResultDTO.setNation(NotionBaseConstsEnum.getIndex(nation));
|
return idcardOcrResultDTO;
|
}catch (Exception e){
|
log.error("方法[BaiduOcrUtils.ocrIdcard]调用失败,异常信息:"+e, e);
|
return null;
|
}
|
}
|
|
}
|
/**
|
* -------------------_ooOoo_-------------------
|
* ------------------o8888888o------------------
|
* ------------------88" . "88------------------
|
* ------------------(| -_- |)------------------
|
* ------------------O\ = /O------------------
|
* ---------------____/`---'\____---------------
|
* -------------.' \\| |// `.-------------
|
* ------------/ \\||| : |||// \------------
|
* -----------/ _||||| -:- |||||- \-----------
|
* -----------| | \\\ - /// | |-----------
|
* -----------| \_| ''\---/'' | |-----------
|
* -----------\ .-\__ `-` ___/-. /-----------
|
* ---------___`. .' /--.--\ `. . __----------
|
* ------."" '< `.___\_<|>_/___.' >'"".-------
|
* -----| | : `- \`.;`\ _ /`;.`/ - ` : | |-----
|
* -----\ \ `-. \_ __\ /__ _/ .-` / /-----
|
* ======`-.____`-.___\_____/___.-`____.-'======
|
* -------------------`=---='
|
* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
* ---------佛祖保佑---hugeinfo---永无BUG----------
|
*/
|