您的位置:首页 > 大数据 > 人工智能

百度AI-文字识别(身份证识别)的实现,大部分识别都通用适合所有人找灵感

2019-03-16 18:09 549 查看

最近开发中使用到百度AI-文字识别,找了下网的大部分都是太老没什么作用,所以就把自己实现的方式给大家展示下
写的不是很好大家见谅
如果大家有更好的实现方式希望的大家也发出来大家一起品鉴一番
其中工具类就不用自己下载了,百度SDK中全部都有直接引入依赖即可
APP_ID, API_KEY, SECRET_KEY 照这百度的搬就行了
下面进入正题


// An highlighted block
//设置APPID/AK/SK
public static final String APP_ID = "*******";
public static final String API_KEY = "************************";
public static final String SECRET_KEY = "********************************";

@RequestMapping(value = "addIdCard", method = RequestMethod.POST)
@ResponseBody
public String findFontIdCard(@RequestBody String image) throws IOException {
//由于前端传递的base64太大,没找到适合的方式,只好用RequestBody
//接收之后就将BASE64编码转为图片保存在本地在进行识别
JSONObject o = JSONObject.parseObject(image);
String im = o.getString("image");
String imgFile = "D:\\";
String s = im;
BASE64Decoder decoder = new BASE64Decoder();
try {
s = s.replaceAll("data:image/jpeg;base64,", "");
byte[] b = decoder.decodeBuffer(s);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {
b[i] += 256;
}
}
OutputStream out = new FileOutputStream(imgFile + "log.jpg");
out.write(b);
out.flush();
out.close();
} catch (Exception e) {
return "数据接收不到";
}
// 初始化一个AipOcr
AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);

// 可选:设置网络连接参数
client.setConnectionTimeoutInMillis(2000);
client.setSocketTimeoutInMillis(60000);

// 可选:设置log4j日志输出格式,若不设置,则使用默认配置
// 也可以直接通过jvm启动参数设置此环境变量
System.setProperty("aip.log4j.conf", "D:\\log4j.properties");
// 传入可选参数调用接口
HashMap<String, String> options = new HashMap<String, String>();
options.put("detect_direction", "true");
options.put("detect_risk", "false");
String idCardSide = "front";
// 参数为二进制数组
byte[] file = Util.readFileByBytes("D:\\log.jpg");
JSONObject res = client.idcard(file, idCardSide, options);
return res.toString(2);

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: