1.第三方接口
文字识别OCR,需要进行注册和实名认证后,获取对应的应用列表以及免费测试额度
2.调用例子
<!-- 百度识别 -->
<dependency>
<groupId>com.baidu.aip</groupId>
<artifactId>java-sdk</artifactId>
<version>4.16.11</version>
</dependency>
package com.alex.examples;
import java.util.*;
import org.json.JSONException;
import org.json.JSONObject;
import com.baidu.aip.ocr.AipOcr;
public class IDCardSample {
//设置APPID/AK/SK
public static final String APP_ID = "身份证识别的appId";
public static final String API_KEY = "身份证识别的apiKey";
public static final String SECRET_KEY = "身份证识别的secretKey";
public static void main(String[] args) throws JSONException {
// 初始化一个AipOcr
AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);
// 传入可选参数调用接口
HashMap<String, String> options = new HashMap<>();
/**
* 检测方向,非必选,默认false
* - false:默认值不进行图像方向自动矫正
* - true: 开启图像方向自动矫正功能,可对旋转 90/180/270 度的图片进行自动矫正并识别
*/
options.put("detect_direction", "true");
/**
* 检测风险,非必选,默认false
* 是否开启身份证风险类型(身份证复印件、临时身份证、身份证翻拍、修改过的身份证)检测功能,默认不开启,即:false。
* - true:开启,请查看返回参数risk_type;
* - false:不开启
*/
options.put("detect_risk", "false");
/**
* 必选
* -front:身份证含照片的一面
* -back:身份证带国徽的一面
* 自动检测身份证正反面,如果传参指定方向与图片相反,支持正常识别,返回参数image_status字段为"reversed_side"
*/
String idCardSide = "back"; //检测:背面
//身份证文件:
//参数为本地图片路径(也可以是字节流,调用的方法也是client.idcard)
String image = "C:\\Users\\86137\\Pictures\\Saved Pictures\\2.jpg";
JSONObject res = client.idcard(image, idCardSide, options);
System.out.println(res.toString(2));
}
}
3.效果图如下
//查的是身份证背面/侧面,则返回背面/侧面的信息
{
"words_result": {
"失效日期": {
"words": "20390711",
"location": {
"top": 445,
"left": 523,
"width": 153,
"height": 38
}
},
"签发机关": {
"words": "陆丰市公安局",
"location": {
"top": 377,
"left": 339,
"width": 195,
"height": 38
}
},
"签发日期": {
"words": "20190606",
"location": {
"top": 445,
"left": 343,
"width": 152,
"height": 38
}
}
},
"log_id": "1559208562721579328",
"words_result_num": 3,
"error_code": 0,
"image_status": "normal"
}