一、准备工具
1.eclipse
2.百度云AI平台应用(网址:https://ai.baidu.com/ai-doc/OCR/Ek3h7xypm)
3.下载jar包导入
二、具体过程
实话实说,本人是个技术小白。接到这个任务时简直一片茫然,上学期才开始学习一点点Java,对maven更是无知。希望能帮助跟我一样在努力摸索进步的人吧。
1.在eclipse新建一个Web项目(此处不详解如何创建,跟平时创建几乎一样。主要讲在过程中遇到的困惑和难题)
2.在百度云AI平台,创建应用,从而获取AppID、API Key、Secret Key关键信息。具体获取方法参见大佬博客(https://blog.csdn.net/fangchao2011/article/details/90062551),给出了详细的步骤
3.此处需要注意:在获取了关键信息之后,还需要下载相应的jar包。一定要下载,后期需要导入建立的项目中,不然运行代码会报错。
在创建的应用处选择SDK下载:
点开后选择相应的下载,此处选择Java SDK下载即可:
3.将下载的相应jar包导入创建的项目中,同时新建一个Java类。代码如下:(代码同样参考大佬博客)
import java.util.HashMap;
import org.json.JSONException;
import org.json.JSONObject;
import com.baidu.aip.ocr.AipOcr;
public class ApiOrcUtil {
//设置APPID/AK/SK
private static String APP_ID = "APP_ID";
private static String API_KEY ="API_KEY";
private static String SECRET_KEY = "SECRET_KEY";
public static String getPictureString(String photoPath){
// 初始化一个AipOcr
AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);
// 可选:设置网络连接参数
client.setConnectionTimeoutInMillis(2000);
client.setSocketTimeoutInMillis(60000);
// 传入可选参数调用接口
HashMap
// 是否检测朝向
options.put("detect_direction", "false");
// 是否检测风险
options.put("detect_risk", "false");
// 正反面front /back
String idCardSide = "front";
// 参数为本地图片二进制数组
/*byte[] file = new byte[0];
try {
file = Util.readFileByBytes(photoPath);
} catch (IOException e) {
e.printStackTrace();
}
JSONObject res = client.idcard(file, idCardSide, options);
System.out.println(res.toString(2));*/
// 参数为本地图片路径
try {
JSONObject res = client.idcard(photoPath, idCardSide, options);
System.out.println(res.toString(2));
if (res != null) {
JSONObject idCard = new JSONObject();
JSONObject words_result = res.getJSONObject("words_result");
idCard.put("name", words_result.getJSONObject("姓名").get("words"));
idCard.put("nation", words_result.getJSONObject("民族").get("words"));
idCard.put("address", words_result.getJSONObject("住址").get("words"));
idCard.put("sex", words_result.getJSONObject("性别").get("words"));
idCard.put("birth", words_result.getJSONObject("出生").get("words"));
idCard.put("number", words_result.getJSONObject("公民身份号码").get("words"));
return idCard.toString(2);
} else {
return "";
}
}catch (JSONException e){
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
System.out.println(getPictureString("C:/Users/Administrator/Desktop/1.jpg"));
}
}
4.大佬博客中还有一步,添加sdk依赖。我在实践中,导入相应的jar包后,并没有使用。如果有问题,可以在eclipse中创建一个Maven项目直接加入必要的依赖,省去自己创建的时间。另外,创建Maven项目可能还会遇到无法创建的问题,网上诸多大佬已解决。
5.自己在此过程中,因为依赖问题浪费了很多时间。还因此去学习了Maven部分知识。感谢上述博客大佬分享知识。
6.因为半路出家,有太多不懂的地方。写博客记录自己学习的点点滴滴,欢迎大家指正~