资讯 社区 文档 控制台
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术
AR与VR
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
信息服务
智能园区

通用文字识别(高精度含位置版)

接口描述

提供多场景、多语种、高精度的整图文字检测和识别服务,支持生僻字识别,并支持 25 种语言识别,相对于通用文字识别(含位置信息版)该产品精度更高,但是识别耗时会稍长。

在线调试

您可以在 示例代码中心 中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。

请求说明

请求示例

HTTP 方法:POST

请求URL: https://aip.baidubce.com/rest/2.0/ocr/v1/accurate

URL参数:

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

Header如下:

参数
Content-Type application/x-www-form-urlencoded

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

请求参数

参数 是否必选 类型 可选值范围 说明
image 和 url/pdf_file/ofd_file 四选一 string - 图像数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过10M,最短边至少15px,最长边最大8192px,支持jpg/jpeg/png/bmp格式
优先级:image > url > pdf_file > ofd_file ,当image字段存在时,url、pdf_file、ofd_file 字段失效
url 和 image/pdf_file/ofd_file 四选一 string - 图片完整url,url长度不超过1024字节,url对应的图片base64编码后大小不超过10M,最短边至少15px,最长边最大8192px,支持jpg/jpeg/png/bmp格式
优先级:image > url > pdf_file > ofd_file,当image字段存在时,url字段失效
请注意关闭URL防盗链
pdf_file 和 image/url/ofd_file 四选一 string - PDF文件,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过10M,最短边至少15px,最长边最大8192px
优先级:image > url > pdf_file > ofd_file,当image、url字段存在时,pdf_file字段失效
pdf_file_num string - 需要识别的PDF文件的对应页码,当 pdf_file 参数有效时,识别传入页码的对应页面内容,若不传入,则默认识别第 1 页
ofd_file 和 image/url/pdf_file 四选一 string - OFD文件,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过10M,最短边至少15px,最长边最大8192px
优先级:image > url > pdf_file > ofd_file,当image、url、pdf_file字段存在时,ofd_file字段失效
ofd_file_num string - 需要识别的OFD文件的对应页码,当 ofd_file 参数有效时,识别传入页码的对应页面内容,若不传入,则默认识别第 1 页
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
THA
VIE
ARA
HIN
识别语言类型,默认为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:印地语
eng_granularity string word/letter 表示识别语言类型为「中英文(CHN_ENG)」的情况下,英文的单字符结果是按照单词(word)维度输出还是字母(letter)维度输出,当 recognize_granularity=small 时生效
recognize_granularity string big/small 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
detect_direction string true/false 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:
- true:检测朝向
- false:不检测朝向
输入非正向图片时,若想要达到较好识别效果,建议将此参数设置为“true”
vertexes_location string true/false 是否返回文字外接多边形顶点位置,不支持单字位置。默认为false
paragraph string true/false 是否输出段落信息
probability string true/false 是否返回识别结果中每一行的置信度

请求代码示例

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

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

curl -i -k 'https://aip.baidubce.com/rest/2.0/ocr/v1/accurate?access_token=【调用鉴权接口获取的token】' --data 'image=【图片Base64编码,需UrlEncode】' -H 'Content-Type:application/x-www-form-urlencoded'
# encoding:utf-8

import requests
import base64

'''
通用文字识别(高精度含位置版)
'''

request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate"
# 二进制方式打开图片文件
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())
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 Accurate {

    /**
    * 重要提示代码中所需工具类
    * 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 accurate() {
        // 请求url
        String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate";
        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) {
        Accurate.accurate();
    }
}
#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";
static std::string accurate_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格式
    accurate_result = std::string((char *) ptr, size * nmemb);
    return size * nmemb;
}
/**
* 通用文字识别(高精度含位置版)
* @return 调用成功返回0,发生错误返回其他错误码
*/
int accurate(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 = accurate_result;
        curl_easy_cleanup(curl);
        is_success = 0;
    } else {
        fprintf(stderr, "curl_easy_init() failed.");
        is_success = 1;
    }
    return is_success;
}
<?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?access_token=' . $token;
$img = file_get_contents('[本地文件路径]');
$img = base64_encode($img);
$bodys = array(
    'image' => $img
);
$res = request_post($url, $bodys);

var_dump($res);
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Web;

namespace com.baidu.ai
{
    public class Accurate
    {
        // 通用文字识别(高精度含位置版)
        public static string accurate()
        {
            string token = "[调用鉴权接口获取的token]";
            string host = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate?access_token=" + token;
            Encoding encoding = Encoding.Default;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
            request.Method = "post";
            request.KeepAlive = true;
            // 图片的base64编码
            string base64 = getFileBase64("[本地图片文件]");
            String str = "image=" + HttpUtility.UrlEncode(base64);
            byte[] buffer = encoding.GetBytes(str);
            request.ContentLength = buffer.Length;
            request.GetRequestStream().Write(buffer, 0, buffer.Length);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
            string result = reader.ReadToEnd();
            Console.WriteLine("通用文字识别(高精度含位置版):");
            Console.WriteLine(result);
            return result;
        }

        public static String getFileBase64(String fileName) {
            FileStream filestream = new FileStream(fileName, FileMode.Open);
            byte[] arr = new byte[filestream.Length];
            filestream.Read(arr, 0, (int)filestream.Length);
            string baser64 = Convert.ToBase64String(arr);
            filestream.Close();
            return baser64;
        }
    }
}

返回说明

返回参数

字段 是否必选 类型 说明
log_id uint64 唯一的log id,用于问题定位
direction int32 图像方向,当 detect_direction=true 时返回该字段。
- - 1:未定义,
- 0:正向,
- 1:逆时针90度,
- 2:逆时针180度,
- 3:逆时针270度
words_result_num uint32 识别结果数,表示words_result的元素个数
words_result array[] 识别结果数组
+ words string 识别结果字符串
+ location array[] 位置数组(坐标0点为左上角)
++ left uint32 表示定位位置的长方形左上顶点的水平坐标
++ top uint32 表示定位位置的长方形左上顶点的垂直坐标
++ width uint32 表示定位位置的长方形的宽度
++ height uint32 表示定位位置的长方形的高度
+ chars array[] 单字符结果,当 recognize_granularity=small 时返回该字段
++ char string 单字符识别结果,当 recognize_granularity=small 时返回该字段
++ location array[] 位置数组(坐标0点为左上角),当 recognize_granularity=small 时返回该字段
+++ left uint32 表示定位位置的长方形左上顶点的水平坐标,当 recognize_granularity=small 时返回该字段
+++ top uint32 表示定位位置的长方形左上顶点的垂直坐标,当 recognize_granularity=small 时返回该字段
+++ width uint32 表示定位定位位置的长方形的宽度,当 recognize_granularity=small 时返回该字段
+++ height uint32 表示定位位置的长方形的高度,当 recognize_granularity=small 时返回该字段
+ probability object 识别结果中每一行的置信度值,包含average:行置信度平均值,variance:行置信度方差,min:行置信度最小值,当 probability=true 时返回该字段
+ vertexes_location array[] 识别结果中每一行的外包四边形点坐标,当 vertexes_location=true 时返回该字段
++ x uint32 水平坐标(坐标0点为左上角)
++ y uint32 垂直坐标(坐标0点为左上角)
+ finegrained_vertexes_location array[] 识别结果中每一行的多边形轮廓点坐标,当 vertexes_location=true 时返回该字段
++ x uint32 水平坐标(坐标0点为左上角)
++ y uint32 垂直坐标(坐标0点为左上角)
+ min_finegrained_vertexes_location array[] 表示 finegrained_poly_location对应的最小外包矩形点坐标,当 vertexes_location=true 时返回该字段
++ x uint32 水平坐标(坐标0点为左上角)
++ y uint32 垂直坐标(坐标0点为左上角)
paragraphs_result_num uint32 识别结果数,表示 paragraphs_result的元素个数,当 paragraph=true 时返回该字段
paragraphs_result array[] 段落检测结果,当 paragraph=true 时返回该字段
+ words_result_idx array[] 一个段落包含的行序号,当 paragraph=true 时返回该字段
+ finegrained_vertexes_location array[] 识别结果中每一行的多边形轮廓点坐标,当 paragraph=true && vertexes_location=true 时返回该字段
++ x uint32 水平坐标(坐标0点为左上角)
++ y uint32 垂直坐标(坐标0点为左上角)
+ min_finegrained_vertexes_location array[] 识别结果中每一行的多边形轮廓点坐标,当 paragraph=true && vertexes_location=true 时返回该字段
++ x uint32 水平坐标(坐标0点为左上角)
++ y uint32 垂直坐标(坐标0点为左上角)
pdf_file_size string 传入PDF文件的总页数,当 pdf_file 参数有效时返回该字段
ofd_file_size string 传入OFD文件的总页数,当 ofd_file 参数有效时返回该字段

返回示例

{
    "log_id": 1390584857033179136,
    "words_result_num": 2
    "words_result": [
        {
            "words": " OCR",
            "location": {
                "top": 19,
                "left": 54,
                "width": 119,
                "height": 46
            }
        },
        {
            "words": "百度通用文字识别高精度版",
            "location": {
                "top": 85,
                "left": 54,
                "width": 206,
                "height": 37
            }
        }
    ],
}
上一篇
通用文字识别(高精度版)
下一篇
通用文字识别(标准版)