java调用百度AI实现图文识别功能
一、创建百度应用
1、在浏览器输入网址https://login.bce.baidu.com/或者百度搜索‘百度ai’点击第一个。点击主页的产品服务,看到文字识别。如下图所示:
2、点击创建应用
创建完应用后,才能获取百度AI的授权
3、创建完成后可查看相应API key和Secret Key
2、查看sdk文档
点击文字识别下面的技术文档https://cloud.baidu.com/doc/OCR/index.html,如图
可以根据官方提供的文档进行图文识别,下面博主为大家提供了java的工具类
3、java调用图文识别的工具类
3.1 获取access_token
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
/*** 获取token类* https://github.com/ourlang* @author 福小林*/public class AuthService {/*** 获取权限token* @return 返回示例:* {* "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",* "expires_in": 2592000* }*/public static String getAuth() {// 官网获取的API Key 更新为你注册的String clientId = "sZoHMGl0jo1pSXQ1SeWiG8kv";// 官网获取的 Secret Key 更新为你注册的String clientSecret = "FPRCv0tbhoEXjDD6Gj7XWLhg64EqAelo";return getAuth(clientId, clientSecret);}/*** 获取API访问token* 该token有一定的有效期,需要自行管理,当失效时需重新获取.* @param ak - 百度云官网获取的 API Key* @param sk - 百度云官网获取的 Securet Key* @return assess_token 示例:* "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"*/private 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();// 定义 BufferedReader输入流来读取URL的响应BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));StringBuilder result = new StringBuilder();String line;while ((line = in.readLine()) != null) {result.append(line);}JSONObject jsonObject = new JSONObject(result.toString());return jsonObject.getString("access_token");} catch (Exception e) {//打印错误日志e.printStackTrace(System.err);}return null;}
}
3.2 调用服务测试
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLEncoder;/*** 图像文字识别公用接口类* https://github.com/ourlang* @author 福小林*/public class ImageTextUtil {/*** 调用百度的图文识别接口*/private static final String POST_URL = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" + AuthService.getAuth();private static final String BASE64_START_MARK = "data:image/png;base64,";/*** 根据图片的base64编码实现图文识别功能** @param imgStr base64图片字符串* @return 识别结果,为json格式* @throws URISyntaxException URI打开异常* @throws IOException io流异常*/public static String getTextByBase64(String imgStr) throws URISyntaxException, IOException {StringBuilder sb = new StringBuilder();if (imgStr.startsWith(BASE64_START_MARK)){imgStr=imgStr.substring(22);}String[] strings = splitStringByLength(imgStr, 1000);for (String tempStr : strings) {sb.append(tempStr);}String s = encodeUriComponent(sb.toString());String param = "image=" + s;return post(param);}/*** @param url 图片url http地址* @return 识别结果,为json格式*/public static String getTextByUrl(String url) throws IOException, URISyntaxException {String param = "url=" + url;return post(param);}/**** 将字符串按固定长度切割成字符子串* @param src 需要切割的字符串* @param length 字符子串的长度* @return 字符子串数组*/public static String[] splitStringByLength(String src, int length) {//检查参数是否合法if (null == src || src.isEmpty()) {System.out.println("the string is null");return null;}if (length <= 0) {System.out.println("the length < 0");return null;}//获取整个字符串可以被切割成字符子串的个数int n = (src.length() + length - 1) / length;String[] split = new String[n];for (int i = 0; i < n; i++) {if (i < (n - 1)) {split[i] = src.substring(i * length, (i + 1) * length);} else {split[i] = src.substring(i * length);}}return split;}/*** 通过传递参数:url和image进行文字识别** @param param 区分是url还是image识别* @return 识别结果* @throws URISyntaxException URI打开异常* @throws IOException IO流异常*/private static String post(String param) throws URISyntaxException, IOException {//开始搭建post请求HttpClient httpClient = new DefaultHttpClient();HttpPost post = new HttpPost();URI url = new URI(POST_URL);post.setURI(url);//设置请求头,请求头必须为application/x-www-form-urlencoded,因为是传递一个很长的字符串,不能分段发送post.setHeader("Content-Type", "application/x-www-form-urlencoded");StringEntity entity = new StringEntity(param);post.setEntity(entity);HttpResponse response = httpClient.execute(post);if (response.getStatusLine().getStatusCode() == 200) {String str;try {//读取服务器返回过来的json字符串数据str = EntityUtils.toString(response.getEntity());return str;} catch (Exception e) {e.printStackTrace();return null;}}return null;}/*** 返回编码后的字符串** @param s 要编码的字符串* @return 编码好的字符串*/public static String encodeUriComponent(String s) {String result;try {result = URLEncoder.encode(s, "UTF-8").replaceAll("\\+", "%20").replaceAll("\\%21", "!").replaceAll("\\%27", "'").replaceAll("\\%28", "(").replaceAll("\\%29", ")").replaceAll("\\%7E", "~");}// This exception should never occur.catch (UnsupportedEncodingException e) {result = s;}return result;}public static void main(String[] args) {try {String textByUrl = getTextByUrl("http://lsdcloud.com/img/goImage/file.png");System.out.println(textByUrl);} catch (URISyntaxException | IOException e) {e.printStackTrace();}}
}
3.3.输出结果如下
java调用百度AI实现图文识别功能相关推荐
- Java调用百度AI实现人体属性分析
Java调用百度AI实现人体属性分析 好久没有更新了...闲来无事发一下模仿百度AI的人体属性分析. 百度AI效果图如下: 本人开发效果图如下: 界面大家可以忽略........下面讲讲代码实现 1. ...
- php 调用百度AI实现图像审核功能
今天主要记录下我完成百度AI实现图像审核功能做出可笑的行为,哈哈哈!! 废话不多说,开始了············ 各位准备好了没有.. 1.首先肯定是登录 百度AI开放平台了,没有账号的同志自行注册 ...
- 保姆级——Java调用百度OCR实现身份证识别
具体实现功能和参数,可以看百度的API开发文档:https://ai.baidu.com/ai-doc/OCR/rk3h7xzck 其实我是看不懂API文档的 文章中的请求参数 调用百度的OCR需要做 ...
- Java调用百度AI开放平台API
百度AI开放平台 百度AI开放平台是全球领先的人工智能服务平台,面向开发者及企业开放120多项全球领先的AI能力和软硬一体组件,并提供 EasyDL定制化训练平台.对话系统开发平台UNIT.自定义模板 ...
- python百度ai文字识别、代码分析_python利用百度AI实现文字识别功能
本文为大家分享了python实现文字识别功能大全,供大家参考,具体内容如下 1.通用文字识别 # -*- coding: UTF-8 -*- from aip import AipOcr # 定义常量 ...
- php调用人脸识别接口,PHP调用百度AI接口人脸识别-语音技术-文本识别-图像识别...
Rain-AI系统基于百度人工智能接口二次开发 有问题的可以加入这个群:226520254,大家一起交流 说明:这个代码是原生PHP开发的,在6个月前我为了效率和安全性能使用框架进行重写,测试站里的是 ...
- ai图像识别python的项目_Python3调用百度AI识别图片中的文字功能示例【测试可用】...
本文实例讲述了Python3调用百度AI识别图片中的文字功能.分享给大家供大家参考,具体如下: 首先pip install命令安装baidu-aip模块,如下图所示(这里使用pip3 install ...
- python调用百度AI接口识别营业执照
上一篇文章介绍了应用python中的pytesseract库和OCR识别软件进行文字识别.本文介绍应用百度AI的文字识别功能对营业执照进行识别,感兴趣的朋友一起来看看效果吧. 一.安装baidu ...
- Python调用百度AI识别身份证
本文介绍应用百度AI的文字识别功能对身份证进行识别,感兴趣的朋友一起来看看效果吧. 一.安装baidu-aip模块 按win+R打开cmd,在里面输入 pip3 install baidu ...
最新文章
- 记录两段经典标定代码
- k8s部署dubbo-admin 2.5.10
- [CQOI2017] 老C的任务(差分 + 树状数组 / K-D tree)
- javascript 西瓜一期 09 字符与编码的对应关系 理解
- 复习一下,免得下次面试又栽在沟里~
- workList in DCMTK问题总结
- 《从零开始走进FPGA》导读
- Linux压缩文件与解压文件(*.zip)
- 初始----python数字图像处理--:环境安装与配置
- 欠阿里云 1 分钱,数据被删除
- 做项目时自己的心得体会
- 计算机辅助英语教学 研究背景,计算机辅助外语教学中的教师角色研究
- 【Autoware自动驾驶-开源项目实践】大家快来入门体验啦
- spark python编程 林子雨_林子雨编著《Spark编程基础(Python版)》教材第5章的命令行和代码...
- MTK FAQ最新资料,MTK_on_line_FAQ_SW_ALPS_Framework+-+Battery
- js 数据类型之字符串
- VMware+CentOS7搭建私有云桌面服务
- 和绅的女人们——汉人、黑人、白人、还有他的“干”女儿
- 配置静态路由——默认路由
- 2018CCPC吉林赛区 hdu6555~hdu6566