资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

文字识别API参考文档


本文档主要说明定制化模型发布后获得的API如何使用,如有疑问可以通过以下方式联系我们:

  • 在百度智能云控制台内提交工单
  • 进入BML社区交流 ,与其他开发者进行互动
  • 加入BML官方QQ群(群号:868826008)联系群管

接口描述

基于自定义训练出的文字识别模型,实现个性化文字识别。模型训练完毕后发布可获得定制化文字识别API。

接口鉴权

1、在BML控制台创建应用

2、应用列表页获取AK SK

image.png

请求说明

请求示例

HTTP 方法:POST

请求URL: 请首先进行自定义模型训练,完成训练后可在服务列表中查看并获取url。

URL参数:

参数
access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

Header如下:

参数
Content-Type application/json

注意:如果出现336001的错误码很可能是因为请求方式错误,与其他图像识别服务不同的是定制化图像识别服务以json方式请求。

Body中放置请求参数,参数详情如下:

请求参数

参数 是否必选 类型 可选值范围 说明
image string - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/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:匈牙利语 - THA:泰语 - VIE:越南语 - ARA:阿拉伯语 - HIN:印地语

请求代码示例

提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。

提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。

<?php
/**
* 发起http post请求(REST API), 并获取REST请求的结果
* @param string $url
* @param string $param
* @return - http response body if succeeds, else false.
*/
function request_post($url = '', $param = '')
{
    if (empty($url) || empty($param)) {
        return false;
    }

    $postUrl = $url;
    $curlPost = $param;
    // 初始化curl
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $postUrl);
    curl_setopt($curl, CURLOPT_HEADER, 0);
    // 要求结果为字符串且输出到屏幕上
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    // post提交方式
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
    // 运行curl
    $data = curl_exec($curl);
    curl_close($curl);

    return $data;
}

$token = '[调用鉴权接口获取的token]';
$url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic?access_token=' . $token;
$img = file_get_contents('[本地文件路径]');
$img = base64_encode($img);
$bodys = array(
    'image' => $img
);
$res = request_post($url, $bodys);

var_dump($res);
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;

/**
* BML文字识别
*/
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();
    }
}
"""
BML 图像分类 调用模型公有云API Python3实现
"""
# encoding:utf-8

import requests
import base64

request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
# 二进制方式打开图片文件
f = open('[本地文件]', 'rb')
img = base64.b64encode(f.read())

params = {"image":img}
access_token = '[调用鉴权接口获取的token]'
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:
    print (response.json())
#include <iostream>
#include <curl/curl.h>

// libcurl库下载链接:https://curl.haxx.se/download.html
// jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
const static std::string request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic";
static std::string accurateBasic_result;
/**
* curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
* @param 参数定义见libcurl文档
* @return 返回值定义见libcurl文档
*/
static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
    // 获取到的body存放在ptr中,先将其转换为string格式
    accurateBasic_result = std::string((char *) ptr, size * nmemb);
    return size * nmemb;
}
/**
* 通用文字识别(高精度版)
* @return 调用成功返回0,发生错误返回其他错误码
*/
int accurateBasic(std::string &json_result, const std::string &access_token) {
    std::string url = request_url + "?access_token=" + access_token;
    CURL *curl = NULL;
    CURLcode result_code;
    int is_success;
    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, url.data());
        curl_easy_setopt(curl, CURLOPT_POST, 1);
        curl_httppost *post = NULL;
        curl_httppost *last = NULL;
        curl_formadd(&post, &last, CURLFORM_COPYNAME, "image", CURLFORM_COPYCONTENTS, "【base64_img】", CURLFORM_END);

        curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
        result_code = curl_easy_perform(curl);
        if (result_code != CURLE_OK) {
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                    curl_easy_strerror(result_code));
            is_success = 1;
            return is_success;
        }
        json_result = accurateBasic_result;
        curl_easy_cleanup(curl);
        is_success = 0;
    } else {
        fprintf(stderr, "curl_easy_init() failed.");
        is_success = 1;
    }
    return is_success;
}

返回说明

返回参数

字段 是否必选 类型 说明
log_id number 唯一的log id,用于问题定位
words_results array[] 识别结果数组
words_result_num uint32 识别结果数,表示words_result的元素个数
+score number 置信度

返回示例

{
    "log_id": 1390582998516105216,
    "words_result_num": 2
    "words_result": [
        {
            "words": " OCR"
        },
        {
            "words": "百度通用文字识别高精度版"
        }
    ]  
}

错误码

若请求错误,服务器将返回的JSON文本包含以下参数:

  • error_code:错误码。
  • error_msg:错误描述信息,帮助理解和解决发生的错误。

例如Access Token失效返回:

{
  "error_code": 110,
  "error_msg": "Access token invalid or no longer valid"
}

需要重新获取新的Access Token再次请求即可。

错误码 错误信息 描述
1 Unknown error 服务器内部错误,请再次请求, 如果持续出现此类错误,请通过QQ群(649285136)或工单联系技术支持团队。
2 Service temporarily unavailable 服务暂不可用,请再次请求, 如果持续出现此类错误,请通过QQ群(649285136)或工单联系技术支持团队。
3 Unsupported openapi method 调用的API不存在,请检查后重新尝试
4 Open api request limit reached 集群超限额
6 No permission to access data 无权限访问该用户数据
13 Get service token failed 获取token失败
14 IAM Certification failed IAM鉴权失败
15 app not exists or create failed 应用不存在或者创建失败
17 Open api daily request limit reached 每天请求量超限额,已上线计费的接口,请直接在控制台开通计费,调用量不受限制,按调用量阶梯计费;未上线计费的接口,请通过QQ群(649285136)联系群管手动提额
18 Open api qps request limit reached QPS超限额,已上线计费的接口,请直接在控制台开通计费,调用量不受限制,按调用量阶梯计费;未上线计费的接口,请通过QQ群(649285136)联系群管手动提额
19 Open api total request limit reached 请求总量超限额,已上线计费的接口,请直接在控制台开通计费,调用量不受限制,按调用量阶梯计费;未上线计费的接口,请通过QQ群(649285136)联系群管手动提额
100 Invalid parameter 无效的access_token参数,请检查后重新尝试
110 Access token invalid or no longer valid access_token无效
111 Access token expired access token过期
336000 Internal error 服务器内部错误,请再次请求, 如果持续出现此类错误,请通过QQ群(868826008)或工单联系技术支持团队
336001 Invalid Argument 入参格式有误,比如缺少必要参数、图片base64编码错误等等,可检查下图片编码、代码格式是否有误。有疑问请通过QQ群(868826008)或工单联系技术支持团队
336002 JSON不合法 入参格式或调用方式有误,比如缺少必要参数或者代码格式有误。有疑问请通过QQ群(868826008)或工单联系技术支持团队
336003 Base64解码失败 图片/音频/文本格式有误或base64编码有误,请根据接口文档检查格式,base64编码请求时注意要去掉头部。有疑问请通过QQ群(868826008)或工单联系技术支持团队
336004 输入文件大小不合法 图片超出大小限制,图片限4M以内,请根据接口文档检查入参格式,有疑问请通过QQ群(868826008)或工单联系技术支持团队
336005 图片解码失败 图片编码错误(非jpg,bmp,png等常见图片格式),请检查并修改图片格式
336006 缺失必要参数 image字段缺失(未上传图片)
336100 model temporarily unavailable 遇到该错误码请等待1分钟后再次请求,可恢复正常,若反复重试依然报错或有疑问请通过QQ群(868826008)或工单联系技术支持团队
上一篇
实例分割API参考文档
下一篇
私有服务器部署