1.准备工作(jdk1.8)

使用之前需要获取对应的项目API_KEY,SECRET_KEY,这些参数在使用API的时候必须用到,用于生成access_token.

如何获取这些参数?

登陆后创建一个应用

点击创建应用,填入对应的信息.点击应用列表就可以得到API_KEY,SECRET_KEY了

2.下载java的SDK,并将jar包引入项目

3.引入jar包(百度云:链接:https://pan.baidu.com/s/1L6cQcFexhBqj1gjA9_FLFA  提取码:q65z )

预览:

1 packagecom.it;2

3 importjava.io.BufferedReader;4 importjava.io.InputStreamReader;5 importjava.net.HttpURLConnection;6 importjava.net.URL;7 importjava.util.List;8 importjava.util.Map;9

10 importorg.json.JSONObject;11

12 /**

13 *14 *@authorcsh15 *16 * 获取token类17 */

18 public classAuthService {19

20 /**

21 * 获取权限token22 *@return返回token23 */

24

25 public staticString getAuth() {26 //官网获取的 API Key 更新为你注册的

27 String clientId = "frNrube3CEybwGiXUOgrYH23";28 //官网获取的 Secret Key 更新为你注册的

29 String clientSecret = "05He2i4heaL21TgPbQeqWrt3u8Qh4RCl";30 returngetAuth(clientId, clientSecret);31 }32

33 /**

34 * 获取API访问token 该token有一定的有效期,需要自行管理,当失效时需重新获取.35 *36 *@paramak - 百度云官网获取的 API Key37 *@paramsk - 百度云官网获取的 Securet Key38 */

39 public staticString getAuth(String ak, String sk) {40 //获取token地址

41 String authHost = "https://aip.baidubce.com/oauth/2.0/token?";42 String getAccessTokenUrl =authHost43 //1. grant_type为固定参数

44 + "grant_type=client_credentials"

45 //2. 官网获取的 API Key

46 + "&client_id=" +ak47 //3. 官网获取的 Secret Key

48 + "&client_secret=" +sk;49 try{50 URL realUrl = newURL(getAccessTokenUrl);51 //打开和URL之间的连接

52 HttpURLConnection connection =(HttpURLConnection) realUrl.openConnection();53 connection.setRequestMethod("GET");54 connection.connect();55 //获取所有响应头字段

56 Map> map =connection.getHeaderFields();57 //遍历所有的响应头字段

58 for(String key : map.keySet()) {59 System.err.println(key + "--->" +map.get(key));60 }61 //定义 BufferedReader输入流来读取URL的响应

62 BufferedReader in = new BufferedReader(newInputStreamReader(connection.getInputStream()));63 String result = "";64 String line;65 while ((line = in.readLine()) != null) {66 result +=line;67 }68 /**

69 * 返回结果示例70 */

71 System.err.println("result:" +result);72 JSONObject jsonObject = newJSONObject(result);73 String access_token = jsonObject.getString("access_token");74 returnaccess_token;75 } catch(Exception e) {76 System.err.printf("获取token失败!");77 e.printStackTrace(System.err);78 }79 return null;80 }81 }

View Code

1 packagecom.it;2

3 importsun.misc.BASE64Encoder;4

5 importjava.io.FileInputStream;6 importjava.io.IOException;7 importjava.io.InputStream;8 importjava.net.URLEncoder;9

10 /**

11 *12 *@authorcsh13 *14 */

15 public classBaseImg64 {16

17 /**

18 * 将一张本地图片转化成Base64字符串19 */

20 public staticString getImageStrFromPath(String imgPath) {21 InputStream in;22 byte[] data = null;23 //读取图片字节数组

24 try{25 in = newFileInputStream(imgPath);26 data = new byte[in.available()];27 in.read(data);28 in.close();29 } catch(IOException e) {30 e.printStackTrace();31 }32 //对字节数组Base64编码

33 BASE64Encoder encoder = newBASE64Encoder();34 //返回Base64编码过再URLEncode的字节数组字符串

35 returnURLEncoder.encode(encoder.encode(data));36 }37 }

View Code

1 packagecom.it;2

3 importjava.io.File;4 importjava.io.IOException;5 importjava.net.URI;6 importjava.net.URISyntaxException;7

8 importorg.apache.http.HttpResponse;9 importorg.apache.http.client.HttpClient;10 importorg.apache.http.client.methods.HttpPost;11 importorg.apache.http.entity.StringEntity;12 importorg.apache.http.impl.client.DefaultHttpClient;13 importorg.apache.http.util.EntityUtils;14 /**

15 *16 *@authorcsh17 *图像文字识别18 */

19 public classCheck {20

21 private static final String POST_URL = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" +AuthService.getAuth();22

23 /**

24 * 识别本地图片的文字25 */

26 public static String checkFile(String path) throwsURISyntaxException, IOException {27 File file = newFile(path);28 if (!file.exists()) {29 throw new NullPointerException("图片不存在");30 }31 String image =BaseImg64.getImageStrFromPath(path);32 String param = "image=" +image;33 returnpost(param);34 }35

36 /**

37 * 图片url38 * 识别结果,为json格式39 */

40 public static String checkUrl(String url) throwsIOException, URISyntaxException {41 String param = "url=" +url;42 returnpost(param);43 }44

45 /**

46 * 通过传递参数:url和image进行文字识别47 */

48 private static String post(String param) throwsURISyntaxException, IOException {49 //开始搭建post请求

50 HttpClient httpClient = newDefaultHttpClient();51 HttpPost post = newHttpPost();52 URI url = newURI(POST_URL);53 post.setURI(url);54

55 //设置请求头,请求头必须为application/x-www-form-urlencoded,因为是传递一个很长的字符串,不能分段发送

56 post.setHeader("Content-Type", "application/x-www-form-urlencoded");57 StringEntity entity = newStringEntity(param);58 post.setEntity(entity);59 HttpResponse response =httpClient.execute(post);60 System.out.println(response.toString());61 if (response.getStatusLine().getStatusCode() == 200) {62 String str;63 try{64 //读取服务器返回过来的json字符串数据

65 str =EntityUtils.toString(response.getEntity());66 //很重要,主要是解决返回中文的编码格式。

67 str = new String(str.getBytes("ISO-8859-1"),"UTF-8");68 System.out.println(str);69 returnstr;70 } catch(Exception e) {71 e.printStackTrace();72 return null;73 }74 }75 return null;76 }77

78 /**

79 * 执行方法80 *@paramargs81 */

82 public static voidmain(String[] args) {83 //图片路径

84 String path = "E:\\newspace\\CDBC5937-A78B-41e7-BC12-30F921D3264F.png";85

86 try{87 long now =System.currentTimeMillis();88 checkFile(path);89 System.out.println("耗时:" + (System.currentTimeMillis() - now) / 1000 + "s");90 } catch (URISyntaxException |IOException e) {91 e.printStackTrace();92 }93 }94 }

View Code

5.实现结果

实验图片:

实验结果:

{

"log_id": 6134374853401645554,

"words_result_num": 14,

"words_result": [{

"words": "实时热点"

}, {

"words": "换一换"

}, {

"words": "端火锅泼妻子同学默克尔呼吸急促"

}, {

"words": "高楼坠刀嫌疑人"

}, {

"words": "常州奔驰连撞多车"

}, {

"words": "菲律宾打击性骚扰新张扣扣被执行死刑"

}, {

"words": "王思聪股权被冻结章莹颖案结案陈词"

}, {

"words": "荷兰弟恋情晛光"

}, {

"words": "孙杨暴力抗检听证"

}, {

"words": "强生爽身粉致癌案"

}, {

"words": "脑机接口系统"

}, {

"words": "个人破产制度试点走98800步遭质疑新"

}, {

"words": "007主角变成黑人"

}, {

"words": "华为申请专利"

}]

}

实验总结:百度的图片文字APi还是挺厉害的,比te4j厉害多了。但是有次数限制个人免费 “5000次/人/天”。不过学习起来还是可以的。如有不足之处请各位大佬指点!

java 图像识别包_Java基于百度API的图片文字识别免费源码和jar包相关推荐

  1. Java基于百度API的图片文字识别(支持中文,英文和中英文混合)

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 精彩内容 java实战练习项目教程 2018微服务资源springboot.s ...

  2. Java基于百度API的图片文字识别

    使用之前需要获取对应的项目API_KEY,SECRET_KEY,这些参数在使用API的时候必须用到,用于生成access_token. 如何获取这些参数:在百度开发者中心申请一个"通用文字识 ...

  3. Java-基于百度API的图片文字识别(支持中文,英文和中英文混合)

    具体文档:http://ai.baidu.com/docs#/OCR-API/e1bd77f3 PS: 基于Java 1.8 版本控制:maven 使用之前需要获取对应的项目API_KEY,SECRE ...

  4. Android Studio调用百度API(图片文字识别)

    1.登录百度AI平台(https://ai.baidu.com/),下载license文件 包名填写内容: 下载好的文件夹内包含四个文件 (OCR-Android-SDK.md文件里有使用说明) (1 ...

  5. Java调用百度OCR文字识别API实现图片文字识别软件

    java_baidu_ocr Java调用百度OCR文字识别API实现图片文字识别软件 这是一款小巧方便,强大的文字识别软件,由Java编写,配上了窗口界面 调用了百度ocr文字识别API 识别精度高 ...

  6. java ocr api_Java调用百度OCR文字识别API实现图片文字识别软件

    Java调用百度OCR文字识别API实现图片文字识别软件 原创isinple 发布于2019-01-06 13:35:59 阅读数 1296 收藏 展开 java_baidu_ocr Java调用百度 ...

  7. java计算机毕业设计ssm基于SSM学生信息管理系统37myx(附源码、数据库)

    java计算机毕业设计ssm基于SSM学生信息管理系统37myx(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm ...

  8. java打包带有外部jar,Eclipse使用总结——使用Eclipse打包带源码的jar包

    平时开发中,我们喜欢将一些类打包成jar包,然后在别的项目中继续使用,不过由于看不到jar包里面的类的源码了,所以也就无法调试,要想调试,那么就只能通过关联源代码的形式,这样或多或少也有一些不方便,今 ...

  9. Java操作Access数据库使用方法及案例 及 所需jar包【源码及jar包在最后下载】

    目录 写在前面 数据库编辑软件MDBplus.exe SQL查询语句的差异 字符串转数字 字符串转日期 示例:如下图打开SQL编辑窗口 源码及jar包下载地址 写在前面 最近接了一个项目,就是个简单的 ...

最新文章

  1. python 网络编程--socket模块/struct模块
  2. oracle 数据库讲解,oracle数据库基本讲解(菜鸟篇)
  3. 4、使用PreparedStatement接口实现增,删,改操作(常用)
  4. POPUP_GET_VALUES_DB_CHECKED’
  5. 2095 : 我只看看不写题(贪心)
  6. SAP Spartacus delivery mode页面Cannot find control with的错误消息
  7. day21—AngularJS学习初体验
  8. 运维linux脚本实例,Shell脚本使用示例
  9. Java、JVM、JRE、JDK等组件的理解
  10. IOC(控制反转)的理解
  11. 7 centos 查看程序文件数量_MongoDB最大连接数(centos7应用程序最大打开文件数)设置失效的异常分析过程与解决方法...
  12. notepad2正则表达式替换字符串
  13. windows安全事件id汇总
  14. 百度网盘高速直链提取
  15. 在EXCEL中生成服从三角分布随机数的方法
  16. 4G(LTE)背后的技术和利益纠结——VoIP,VoLTE,SIP,IMS的前世今生
  17. 几个寓意深远的小故事
  18. 【stm32f407】SPI实验 驱动W25Q128
  19. 2.1在 U-Boot 中添加自己的开发板
  20. 单片机彩灯移动实验_单片机动态控制64个彩灯实验报告

热门文章

  1. linux复现数据库,基于嵌入式Linux系统平台并可应用于监控组态软件实时数据库的设计方案详解...
  2. 【STM32】ADC详解
  3. 2022年中高级 Android 大厂面试秘籍,为你保驾护航金九银十,直通大厂
  4. 城管停车执法打印APP 移动云POS 现场打印告知单-执法平台+智能POS客户端系统
  5. 网友爆料:收到了抖音侵权的告知函
  6. 2021计算机维修工,2021年计算机维修工职业资格考试模拟要求.doc
  7. 感应电机 异步电机定子匝间短路仿真 matlab simulink
  8. 安卓百度地图之定位图标在地图上显示
  9. ReentrantLock与CAS
  10. GPS数据集下载资源