失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java百度智能云实现图片识别文字 录入信息和搜索功能

java百度智能云实现图片识别文字 录入信息和搜索功能

时间:2021-05-07 22:06:39

相关推荐

java百度智能云实现图片识别文字 录入信息和搜索功能

今天帮别人完成了俩个有意思的需求

1、根据上传的图片,识别图片的内容,进行搜索,搜索的内容就是列表的所有列标题。

2、根据上传的图片,进行信息录入的功能。

上传图片,自动更新分数

3、看下上传图片的格式

基本要求:

1、需要图片识别的是列表的所有列标题。数据格式,比如名称和值用冒号:隔开,然后用逗号区分下一组数据,如果换行末尾必须以逗号区分一组数据。

2、图片的文字信息不定,可以是一个标题,也可以是多个标题,最多8个

文本格式

课程号:8,工号:4,学号:2,成绩:9,学期:22-春季学期,教师名:李玉民,学生名:张四123,课程名:组合数学

4、实现

需要利用百度智能云的api实现(前提需要注册百度智能云的账号,开通网络图片文字识别的服务,注意这个不是免费的,免费1000次还是一个月,之后收费的,具体以官网为准)

Access_token获取参考:/ai-doc/REFERENCE/Ck3dwjhhu

官网:网络图片文字识别 - 文字识别OCR

代码里用到这3个值

5、核心代码

最核心代码

package com.auggie.student_server.utils;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;import mons.lang3.StringUtils;import .URLEncoder;import java.util.HashMap;import java.util.Map;public class ImgReadContent {/******************************* 用途说明:* 作者姓名: Administrator* 创建时间: -04-19 19:15******************************//*** 重要提示代码中所需工具类* FileUtil,Base64Util,HttpUtil,GsonUtils请从* /file/658A35ABAB2D404FBF903F64D47C1F72* /file/C8D81F3301E24D2892968F09AE1AD6E2* /file/544D677F5D4E4F17B4122FBD60DB82B3* /file/470B3ACCA3FE43788B5A963BF0B625F3* 下载*/public static Map<String, String> webImage(String fileUrl) {// 请求urlString url = "/rest/2.0/ocr/v1/webimage";try {// 本地文件路径String filePath = fileUrl;//"E:\\test10.png";byte[] imgData = FileUtil.readFileByBytes(filePath);String imgStr = Base64Util.encode(imgData);String imgParam = URLEncoder.encode(imgStr, "UTF-8");String param = "image=" + imgParam;// 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。String accessToken = "这里是上边说的Access Token";String result = HttpUtil.post(url, accessToken, param);if (StringUtils.isBlank(result)) {return null;}JSONObject jsonData = JSONObject.parseObject(result);if (null == jsonData || !jsonData.containsKey("words_result")) {return null;}JSONArray jsonArray = jsonData.getJSONArray("words_result");/*{"words_result":[{"words":"课程号:1"},{"words":"成绩:9"},{"words":"工号:2"},{"words":"学号:3"},{"words":"学期:学期1"},{"words":"课程名:5"},{"words":"教师名:6"},{"words":"学生名:8"}],"words_result_num":8,"log_id":1648528150507199501}*///words -> 姓名:张三年龄:16性别:女Map<String, String> map = new HashMap<String, String>();for (int i = 0; i < jsonArray.size(); i++) {JSONObject json = jsonArray.getJSONObject(i);/*String value = json.getString("words");if (value.contains(":")) {getMapJsonData(map, value, ":");} else if (value.contains(":")) {getMapJsonData(map, value, ":");}*/getMapJsonCommaData(map, json);System.out.println(map);}/*if (map.containsKey("课程号")) {map.get("课程号");}if (map.containsKey("成绩")) {map.get("成绩");}if (map.containsKey("工号")) {map.get("工号");}if (map.containsKey("学号")) {map.get("学号");}if (map.containsKey("学期")) {map.get("学期");}if (map.containsKey("课程名")) {map.get("课程名");}if (map.containsKey("教师名")) {map.get("教师名");}if (map.containsKey("学生名")) {map.get("学生名");}*/System.out.println("map = " + map);System.out.println("result = " + result);return map;} catch (Exception e) {e.printStackTrace();}return null;}public static Map<String, String> getMapJsonCommaData(Map<String, String> mapParam, JSONObject json) {String value = json.getString("words");String[] split = null;if (value.contains(",")) {split = value.split(",");} else if (value.contains(",")) {split = value.split(",");} else if (value.contains(":")) {//split = value.split(":");mapParam.put(value.split(":")[0], value.split(":")[1]);} else if (value.contains(":")) {//split = value.split(":");mapParam.put(value.split(":")[0], value.split(":")[1]);}if (split != null) {getMapJsonSemicolonData(mapParam, split);}return mapParam;}public static Map<String, String> getMapJsonSemicolonData(Map<String, String> mapParam, String[] split) {for (int i = 0; i < split.length; i++) {String[] splitMap = null;String value = split[i];if (value.contains(":")) {splitMap = value.split(":");mapParam.put(splitMap[0], splitMap[1]);} else if (value.contains(":")) {splitMap = value.split(":");mapParam.put(splitMap[0], splitMap[1]);}}return mapParam;}public static void main(String[] args) {webImage("");}}

pom文件

<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.2</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.auggie</groupId><artifactId>student_server</artifactId><version>0.0.1-SNAPSHOT</version><name>student_server</name><description>student_server</description><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.2</version></dependency><!-- json --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version></dependency><!--引入commons-lang3--><dependency><groupId>mons</groupId><artifactId>commons-lang3</artifactId><version>3.10</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

6、效果图如下

需求1

上传图片识别文字自动检索数据

需求2

上传图片更新分数

点击图片上传,页面分数自动设置为9

点击提交,更新分数为9

如果觉得《java百度智能云实现图片识别文字 录入信息和搜索功能》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。