java实现百度云文字识别接口代码

网友投稿 315 2023-01-18


java实现百度云文字识别接口代码

本文实例为大家分享了java实现百度云文字识别的接口具体代码,供大家参考,具体内容如下

public class Images {

public static String getResult() {

String otherHost = "https://aip.baidubce.com/rest/2.0/ocr/v1/general";

// 本地图片路径

String str="你的本地图片路径"

String filePath = http://"str";

try {

byte[] imgData = FileUtil.readFileByBytes(filePath);

String imgStr = Base64Util.encode(imgData);

String params = URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(imgStr, "UTF-8");

/**

* access_token有过期时间, 客户端可自行缓存,过期后重新获取。

*/

String accessToken = getAuth("申请的api key", "申请的secret key");

//System.out.println("wwwwwwwwwwwwww");

String result = HttpUtil.post(otherHost, accessToken, params);

//System.out.println("sssssssssssssssssss");

return result;

//System.out.println(result);

} catch (Exception e) {

e.printStackTrace();

return null;

}

}

public static String getAuth(String ak, String sk) {

// 获取token地址

String authHost = "https://aip.baidubce.com/oauth/2.0/token?";

String getAccessTokenUrl = authHost

// 1. grant_type为固定参数

+ "grant_type=client_credentials"

// 2. 官网获取的 API Key

+ "&client_id=" + ak

// 3. 官网获取的 Secret Key

+ "&client_secret=" + sk;

try {

URL realUrl = new URL(getAccessTokenUrl);

// 打开和URL之间的连接

HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();

connection.setRequestMethod("GET");

connection.connect();

// 获取所有响应头字段

Map> map = connection.getHeaderFields();

// 遍历所有的响应头字段

for (String key : map.keySet()) {

System.err.println(key + "--->" + map.get(key));

}

// 定义 BufferedReader输入流来读取URL的响应

BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));

String result = "";

String line;

while ((line = in.readLine()) != null) {

result += line;

}

/**

* 返回结果示例

*/

System.out.println("result:" + result);

jsONObject jsonObject = new JSONObject(result);

String access_token = jsonObject.getString("access_token");

return access_token;

} catch (Exception e) {

System.err.printf("获取token失败!");

e.printStackTrace(System.err);

}

return null;

}

}

测试:

public static void main(String[] args) {

String otherHost = "https://aip.baidubce.com/rest/2.0/ocr/v1/general";

// 本地图片路径

String filePath = "本地图片路径";

try {

byte[] imgData = FileUtil.readFileByBytes(filePath);

String imgStr = Base64Util.encode(imgData);

String params = URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(imgStr, "UTF-8");

*//**

* 线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。

*//*

String accessToken = getAuth("api key", "secret key");

//System.out.println("wwwwwwwwwwwwww");

String result = HttpUtil.post(otherHost, accessToken, params);

//System.out.println("sssssssssssssssssss");

System.out.println(result);

} catch (Exception e) {

e.printStackTrace();

}

}

import java.util.HashMap;

import java.util.Iterator;

import org.json.JSONArray;

import org.json.JSONObject;

import com.baidu.aip.ocr.AipOcr;

/**

* 测试百度云OCR的文字识别功能

* 打开百度云AI的官网:

* https://console.bce.baidu.com/ai/?_=1517288853048#/ai/ocr/overview/index

*/

public class TestOcr {

//设置APP ID/AK/SK

public static final String APP_ID = "10736110";

public static final String API_KEY = "4nguIG7OdpHZFhdFnz2AbVhx";

public static final String SECRET_KEY = "8GnUzj19H0Nie5nOc7HSGSH2VigjU9VL";

public static void main(String[] args) {

// 初始化一个AipOcr

AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);

// 传入可选参数调用接口

HashMap options = new HashMap();

// 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置

options.put("recognize_granularity", "big");

// 识别语言类型,默认为CHN_ENG。可选值包括:

// CHN_ENG:中英文混合;

// ENG:英文;

// POR:葡萄牙语;

// FRE:法语;

// GER:德语;

// ITA:意大利语;

// SPA:西班牙语;

// RUS:俄语;

// JAP:日语;

// KOR:韩语;

options.put("language_type", "CHN_ENG");

// 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。

options.put("detect_direction", "true");

// 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)

options.put("detect_language", "true");

// 是否返回文字外接多边形顶点位置,不支持单字位置。默认为false

options.put("vertexes_location", "false");

// 是否返回识别结果中每一行的置信度

options.put("probability", "false");

// 可选:设置网络连接参数

client.setConnectionTimeoutInMillis(2000);

client.setSocketTimeoutInMillis(60000);

// 调用接口

String path = "D:\\QQ截图20180130134257.png";

JSONObject res = client.accurateGeneral(path, options);

JSONArray myJson = res.getJSONArray("words_result");

Iterator iterator = myJson.iterator();

while(iterator.hasNext()){

Object value = iterator.next();

JSONObject obj = new JSONObject(value.toString());

System.out.println(obj.get("words"));

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:实现接口和继承(实现接口和继承类的符号)
下一篇:@Autowired注入为null问题原因分析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~