目录
百度文字识别:
调用百度文字识别库
获取资源:文字识别OCR (baidu.com)
先完成0元领取:
然后创建应用:
获取API Key和Secret Key;
前端传给后端的数据:
包括上传图片列表的图片的base64信息。
后端图片识别及信息提取:
配置:
方式一:添加依赖
在pom中添加依赖:
<dependency>
<groupId>com.baidu.aip</groupId>
<artifactId>java-sdk</artifactId>
<version>${version}</version>
</dependency>
方式二:添加jar包
jar包下载:SDK下载_文字识别SDK_语音识别SDK-百度AI开放平台 (baidu.com)
下载到的压缩包中共有四个,导入前三个即可(第四个与我们项目中需要用到的其他技术冲突了)
在后端项目中点击”项目结构“:
调用识别接口:
import java.util.*;
import org.json.JSONObject;
import com.baidu.aip.ocr.AipOcr;
public class Sample {
//设置APPID/AK/SK
public static final String APP_ID = "你的 App ID";
public static final String API_KEY = "你的 Api Key";
public static final String SECRET_KEY = "你的 Secret Key";
public static void main(String[] args) {
// 初始化一个AipOcr
AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);
// 可选:设置网络连接参数
client.setConnectionTimeoutInMillis(2000);
client.setSocketTimeoutInMillis(60000);
// 可选:设置代理服务器地址, http和socket二选一,或者均不设置
client.setHttpProxy("proxy_host", proxy_port); // 设置http代理
client.setSocketProxy("proxy_host", proxy_port); // 设置socket代理
// 可选:设置log4j日志输出格式,若不设置,则使用默认配置
// 也可以直接通过jvm启动参数设置此环境变量
System.setProperty("aip.log4j.conf", "path/to/your/log4j.properties");
// 调用接口
String path = "test.jpg";
JSONObject res = client.basicGeneral(path, new HashMap<String, String>());
System.out.println(res.toString(2));
}
}
public void sample(AipOcr client) {
// 传入可选参数调用接口
HashMap<String, String> options = new HashMap<String, String>();
options.put("language_type", "CHN_ENG");
options.put("detect_direction", "true");
options.put("detect_language", "true");
options.put("probability", "true");
// 参数为本地图片路径
String image = "test.jpg";
JSONObject res = client.basicGeneral(image, options);
System.out.println(res.toString(2));
// 参数为本地图片二进制数组
byte[] file = readImageFile(image);
res = client.basicGeneral(file, options);
System.out.println(res.toString(2));
// 通用文字识别, 图片参数为远程url图片
JSONObject res = client.basicGeneralUrl(url, options);
System.out.println(res.toString(2));
}
返回值:
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
direction | 否 | number | 图像方向,当detect_direction=true时存在。 - -1:未定义, - 0:正向, - 1: 逆时针90度, - 2:逆时针180度, - 3:逆时针270度 |
log_id | 是 | number | 唯一的log id,用于问题定位 |
words_result_num | 是 | number | 识别结果数,表示words_result的元素个数 |
words_result | 是 | array | 定位和识别结果数组 |
+words | 否 | string | 识别结果字符串 |
probability | 否 | object | 行置信度信息;如果输入参数 probability = true 则输出 |
+average | 否 | number | 行置信度平均值 |
+variance | 否 | number | 行置信度方差 |
+min | 否 | number | 行置信度最小值 |
百度的文字识别提供多种方式的识别,有通用的文字识别、高精度版的文字识别、含生僻字的文字识别。我们只需要使用通用文字识别即可,获得的返回值是json形式的字符串,即可进行处理获得我们想要的数据。
难点:后端处理(识别不准确的情况)