1.需求背景
因项目需求,需要提取身份证、发票(9/16更新内容)、荣誉证书上的文字信息,与相关文件进行匹配,而查阅相关资料,经过对比之后,发现用百度OCR文字识别API服务可以相应解决相关问题,识别率较好。当然,还不能够做到完全匹配,也有其中不足的地方,例如,发票中公章信息不能提取;发票周围的线圈被识别成了数字,etc。毕竟是免费的嘛,配合学校科研还是可以的。如果实在介意,百度云OCR有专门的自定义模板文字识别,自定义模板文字识别技术文档可以参考。
首先需要成为百度AI开放平台的开发者,就是要有百度AI的账号,具体参照新手指南,完成相关操作之后,就可以获取密钥如下图所示。
2.项目文件总览
其中需要的jar包分别为
解压后即可得到jar包如下所示
2.相关工具类FileUtil ,Base64Util ,HttpUtil, GsonUtils 请点击进行下载
3.相关代码
获取access_token
/**
* @ Description:获取access_token代码
* @ author: Joy
* @ date:2018年9月12日下午8:27:30
*/
package com.baidu.ai.api.auth;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;
import org.json.JSONObject;
/**
* @author Joy
*
*/
public class AuthService {
/**
* 获取权限token
* @return 返回示例:
* {
* "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",
* "expires_in": 2592000
* }
*/
public static String getAuth() {
// 官网获取的 API Key 更新为你注册的
String clientId = "替换为你的百度云应用的AK";//百度云应用的AK
// 官网获取的 Secret Key 更新为你注册的
String clientSecret = "替换为你的百度云应用的SK";//百度云应用的SK
return getAuth(clientId, clientSecret);
}
/**
* 获取API访问token
* 该token有一定的有效期,需要自行管理,当失效时需重新获取.
* @param ak - 百度云官网获取的 API Key
* @param sk - 百度云官网获取的 Securet Key
* @return assess_token 示例:
* "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"
*/
public static String getAuth(String ak, String sk) {
// 获取token地址
String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
String getAccessTokenUrl = authHost