帮助与文档 > 产品文档 > 视觉智能服务 > API文档 > 通用OCR
通用OCR

通用文字识别 API 简介

概念解释

通用文字识别:将自然场景下图片上的文字内容,通过定位和检测,智能识别为可编辑的文本信息。

说明

Hi,您好,欢迎使用有道智云通用文字识别 API接口服务。

如果您想快速体验服务,建议您前往 体验中心 或者在体验中心右下侧找到小程序二维码,扫描进行体验。

本文档主要针对需要集成HTTP API的技术开发工程师,详细描述OCR识别能力相关的技术内容。

如果您有与我们商务合作的需求,可以通过以下方式联系我们:

商务邮箱: AIcloud_Business@corp.youdao.com

如果您对文档内容有任何疑问,可以通过以下几种方式联系我们:

客服QQ:1906538062

智云OCR技术交流QQ 1群: 654064748

智云OCR技术交流QQ 2群: 471638046

联系邮箱: zhiyun@corp.youdao.com

温馨提示:

  • 本文档主要针对开发人员,接入测试前需要获取应用ID应用密钥;如果您还没有,请按照 新手指南 获取。
  • 平台向每个账户赠送50元的体验金,供用户集成前测试所用,具体资费规则详见 通用文字识别服务报价

接口能力

有道智云OCR API接口提供有道的OCR文字识别服务,目前有道智云OCR支持八十种语言的文字识别。您只需要通过调用有道智云OCR API,传入经过Base64编码的图片,通过POST请求方式,就可以得到相应的文字识别结果。

有道智云OCR API HTTPS地址:

https://openapi.youdao.com/ocrapi

注:请求采用application/x-www-form-urlencoded,不用JSON。

协议须知

调用方在集成通用文字识别 API时,请遵循以下规则。

规则 描述
传输方式 HTTPS
请求方式 POST
字符编码 统一使用UTF-8编码
响应格式 统一采用application/x-www-form-urlencoded格式

接口调用参数

调用API需要向接口发送以下字段来访问服务。

字段名 类型 含义 必填 备注
img text 要识别的图片,需要Base64编码 True 必须是Base64编码
langType text 要识别的语言类型 True 目前支持八十余种语言的识别,具体参见支持的语种列表
detectType text 识别类型,按行识别 true 按行识别:10012
imageType text 图片类型,目前只支持Base64 True 目前只支持Base64:1,imageType的值为1
appKey text 应用ID True 可在应用管理查看
salt text 随机字符串,最好是UUID,和curtime一起防请求重放 True uuid,唯一通用识别码
sign text 签名,sha256(appKey+input+salt+curtime+密钥) True appKey+img+salt+curtime+应用密钥
docType text 服务器响应类型,目前只支持json True json
signType text 签名类型 true v3
curtime text 当前UTC时间戳(秒) true TimeStamp
angle text 是否进行360角度识别 false 0:不识别,1:识别。默认不识别(0)
column text 是否按多列识别 false onecolumn:按单列识别;columns:按多列识别。默认按单列识别
rotate text 是否需要获得文字旋转角度 false donot_rotate:不需要旋转,返回angle倾斜角度,可自行旋转;rotate:根据angle旋转,不返回angle倾斜角度。默认旋转

签名生成方法如下: signType=v3; sign=sha256(应用ID+input+salt+curtime+应用密钥)。

其中,input的计算方式为:input=img前10个字符 + img长度 + img后十个字符(当img长度大于20)或 input=img字符串(当img长度小于等于20)。

不同语言获取时间戳,请参看此链接

如果对签名有疑问,可以参看文档末尾各语言demo。

输出结果

返回的结果是json格式,具体说明如下:

字段 类型 字段说明
errorCode text 错误码,一定存在
Result text 识别结果,查询成功一定存在
+orientation text 图片方向
+regions jsonarray 区域,查询正确一定存在
++lang text 该行文本的语言
++dir text 方向;h:行;v:列,竖排识别
++lines jsonarray 行,查询正确一定存在
+++words jsonarray 字,查询正确一定存在
++++word text 识别的字的结果
+++text text 行识别结果
boundingBox text 段落、行、字的区域位置信息

即识别结果主要在Result中,输出结构为:regions->lines->words.一个文档可能有多个region,代表段落,一个段落有多行,一行有多个字。

每个段落、每行、每个字都有boundingBox,代表能够框住段落、行、字的最大box的位置信息。

boundingBox共八个值:分别是左上角坐标(x,y),右上角坐标(x,y),右下角坐标(x,y),左下角(x,y)。

具体可参见下面的参考示例。

参考示例

识别的返回结果:

{
    "errorCode": "0",   //识别错误码
    "Result": {         //识别结果
        "orientation": "UP",//图像方向
        "regions": [        //段落
        {
            "boundingBox": "90,56,232,56,232,244,90,244",   //段落区域位置信息
	    "dir": "h",	//按行识别
	    "lang": "zh",	//语种
            "lines": [      //行
            {
            "boundingBox": "116,56,204,56,204,82,116,82",   //行区域位置信息
            "words": [  //字
                {
                    "boundingBox": "124,54,148,54,148,86,124,86",   //字区域位置信息
                    "word": "静" //字识别结果
                },
                {
                "boundingBox": "156,54,172,53,172,85,156,86",
                "word": "夜"
                },
                {
                "boundingBox": "180,53,204,53,204,85,180,85",
                "word": "思"
                }
            ],
            "text": "静夜思"   //行识别结果
        },
        ...
        ]
        }
        ]
    }
}

支持语言

语言代码 语言
sq 阿尔巴尼亚语
az 阿塞拜疆语
eu 巴斯克语
be 白俄罗斯语
bs 波斯尼亚文(拉丁文)
bg 保加利亚文
ca 加泰罗尼亚文(加泰隆语)
ceb 宿务语
ny 齐切瓦语
zh-CHS 中文
zh-CHT 中文(繁体)
co 科西嘉语
hr 克罗地亚文
cs 捷克文
da 丹麦文
nl 荷兰文
en 英文
eo 世界语
et 爱沙尼亚文
fi 芬兰文
fr 法文
gd 苏格兰盖尔语
gl 加利西亚语
de 德文
ht 海地文
ha 豪萨语
haw 夏威夷语
hi 印地文
hu 匈牙利文
is 冰岛语
ig 伊博语
id 印度尼西亚文
ga 爱尔兰语
it 意大利文
ja 日文
jw 印尼爪哇语
ko 韩文
ku 库尔德语
la 拉丁语
lv 拉脱维亚文
lt 立陶宛文
lb 卢森堡语
mk 马其顿语
mg 马尔加什语
ms 马来文
mt 马耳他文
mi 毛利语
mr 马拉地语
mn 蒙古语
ne 尼泊尔语
no 挪威文
pl 波兰文
pt 葡萄牙文
ro 罗马尼亚文
ru 俄文
sm 萨摩亚语
sr-Latn 塞尔维亚文(拉丁文)
sn 修纳语
sk 斯洛伐克文
sl 斯洛文尼亚文
so 索马里语
st 塞索托语
es 西班牙文
su 印尼巽他语
sw 斯瓦希里文
sv 瑞典文
tl 菲律宾语
tg 塔吉克语
tr 土耳其文
uk 乌克兰文
uz 乌兹别克语
vi 越南文
cy 威尔士文
fy 弗里斯兰语
yo 约鲁巴语
zu 南非祖鲁语
hmn 苗族语
xh 班图
af 南非荷兰
ar 阿拉伯文
bg 保加利亚语
bn 孟加拉语
bs 波斯尼亚语
el 希腊
gu 古吉拉特
he 希伯来
ht 海地克里奥尔
ka 格鲁吉亚
km 高棉
kn 卡纳达
ky 柯尔克孜语(吉尔吉斯语)
ml 马拉雅拉姆语
mww 白苗语
my 缅甸
otq 克雷塔罗奥托米语
pa 旁遮普语
prs 达里语
ps 普什图语
rw 卢旺达语
sr-Cyrl 塞尔维亚语(西里尔文)
te 泰卢固语
th 泰语
tk 土库曼语
to 汤加语
ur 乌尔都语
yi 意第绪语
yua 尤卡坦玛雅语
auto 自动识别

auto支持所有语种的自动识别

服务配置

支持图片格式 每小时最大请求次数 图片大小 图片分辨率
jpg\png\bmp 3600 图像编码后大小必须小于2M,
建议不要超过1M;
(编码后大于1M的图像会被缩放,影响效果,
建议控制输入图像大小)
图片的长和宽要求最短边大于10px,
最长边小于2048 px。

错误代码列表

错误码 含义
101 缺少必填的参数,首先确保必填参数齐全,然后,确认参数书写是否正确。
102 不支持的语言类型
103 翻译文本过长
104 不支持的API类型
105 不支持的签名类型
106 不支持的响应类型
107 不支持的传输加密类型
108 应用ID无效,注册账号,登录后台创建应用并完成绑定,可获得应用ID和应用密钥等信息
109 batchLog格式不正确
110 无相关服务的有效应用,应用没有绑定。注:某些服务的结果发音需要tts服务,需要在控制台创建语音合成实例绑定应用后方能使用。
111 开发者账号无效
112 请求服务无效
113 q不能为空
114 不支持的图片传输方式
201 解密失败,可能为DES,BASE64,URLDecode的错误
202 签名检验失败,如果确认应用ID和应用密钥的正确性,仍返回202,一般是编码问题。请确保 img 为 UTF-8 编码.
203 访问IP地址不在可访问IP列表
205 请求的接口与应用的平台类型不一致,确保接入方式(Android SDK、IOS SDK、API)与创建的应用平台类型一致。如有疑问请参考入门指南
206 因为时间戳无效导致签名校验失败
207 重放请求(接口salt+curtime来防重放(即一个请求不可以被请求2次),所以salt最好为UUID。)
301 辞典查询失败
302 翻译查询失败
303 服务端的其它异常
304 会话闲置太久超时
401 账户已经欠费停
402 offlinesdk不可用
411 访问频率受限,请稍后访问
412 长请求过于频繁,请稍后访问
1001 无效的OCR类型
1002 不支持的OCR image类型
1003 不支持的OCR Language类型
1004 识别图片过大,超过最大限制
1005 angle参数错误
1006 图片不能为空
1007 columns参数错误
1008 rotate参数错误
1201 图片base64解密失败
1301 OCR段落识别失败
1411 访问频率受限

常用语言 Demo

Java 示例

通用ocr Java demo

Python3 示例

通用ocr python3 demo

C#示例

通用ocr c# demo

PHP 示例

通用ocr php demo

go 示例

通用ocr go demo