Java,百度OCR通用文字识别(高精度版)
背景:
公司业务需要大量的识别图片,所以采用百度的API
接口描述
在通用文字识别的基础上,提供更高精度的识别服务,支持更多语种识别(丹麦语、荷兰语、马来语、瑞典语、印尼语、波兰语、罗马尼亚语、土耳其语、希腊语、匈牙利语),并将字库从1w+扩展到2w+,能识别所有常用字和大部分生僻字
请求说明
请求示例
HTTP 方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/x-www-form-urlencoded |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 是否必选 | 类型 | 可选值范围 | 说明 |
---|---|---|---|---|
image | 是 | string | - | 图像数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/jpeg/png/bmp格式 |
language_type | 否 | string | auto_detect CHN_ENG ENG JAP KOR FRE SPA POR GER ITA RUS DAN DUT MAL SWE IND POL ROM TUR GRE HUN |
识别语言类型,默认为CHN_ENG 可选值包括: - auto_detect:自动检测语言,并识别 - CHN_ENG:中英文混合 - ENG:英文 - JAP:日语 - KOR:韩语 - FRE:法语 - SPA:西班牙语 - POR:葡萄牙语 - GER:德语 - ITA:意大利语 - RUS:俄语 - DAN:丹麦语 - DUT:荷兰语 - MAL:马来语 - SWE:瑞典语 - IND:印尼语 - POL:波兰语 - ROM:罗马尼亚语 - TUR:土耳其语 - GRE:希腊语 - HUN:匈牙利语 |
detect_direction | 否 | string | true/false | 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括: - true:检测朝向; - false:不检测朝向 |
paragraph | 否 | string | true/false | 是否输出段落信息 |
probability | 否 | string | true/false | 是否返回识别结果中每一行的置信度 |
请求代码示例
package com.baidu.ai.aip; import com.baidu.ai.aip.utils.Base64Util; import com.baidu.ai.aip.utils.FileUtil; import com.baidu.ai.aip.utils.HttpUtil; import java.net.URLEncoder; /** * 通用文字识别(高精度版) */ public class AccurateBasic { /** * 重要提示代码中所需工具类 * FileUtil,Base64Util,HttpUtil,GsonUtils请从 * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72 * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2 * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3 * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3 * 下载 */ public static String accurateBasic() { // 请求url String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"; try { // 本地文件路径 String filePath = "[本地文件路径]"; 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 = "[调用鉴权接口获取的token]"; String result = HttpUtil.post(url, accessToken, param); System.out.println(result); return result; } catch (Exception e) { e.printStackTrace(); } return null; } public static void main(String[] args) { AccurateBasic.accurateBasic(); } }