# 通用文字识别 intsig API 文档

# 接口说明

内容 说明
传输方式 http[s] (为提高安全性,强烈推荐https)
请求地址 http(s): //api.xf-yun.com/v1/private/hh_ocr_recognize_doc
注:服务器IP不固定,为保证您的接口稳定,请勿通过指定IP的方式调用接口,使用域名方式调用
请求行 POST /v1/private/hh_ocr_recognize_doc HTTP/1.1
接口鉴权 签名机制,详情请参照下方鉴权认证
字符编码 UTF-8
响应格式 统一采用JSON格式
开发语言 任意,只要可以向讯飞云服务发起HTTP请求的均可
适用范围 任意操作系统,但因不支持跨域不适用于浏览器
图片格式 jpg/jpeg/png/bmp
图片大小 base64编码后大小不超过4M
文字语种 支持52种语种,详细请参照语种列表

# 鉴权说明

在调用业务接口时,请求方需要对请求进行签名,服务端通过签名来校验请求的合法性。

# 鉴权方法

通过在请求地址后面加上鉴权相关参数的方式,请注意影响鉴权结果的值有url、apiSecret、apiKey、date,如果调试鉴权,请务必按照示例中给的值进行调试,具体参数如下:

http示例url:

http://api.xf-yun.com/v1/private/hh_ocr_recognize_doc?host=api.xf-yun.com&date=Mon%2C+22+Aug+2022+03%3A26%3A45+GMT&authorization=YXBpX2tleT0iYXBpa2V5WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0iL2ZMQ0dQcHp0RWdPS2RGRHAvNkpZaCtrVHp4OUJ1bS8wUmV4UmxKa0lwMD0i

鉴权参数:

参数 类型 必须 说明 示例
host string 请求主机 api.xf-yun.com
date string 当前时间戳,RFC1123格式("EEE, dd MMM yyyy HH:mm:ss z") Mon, 22 Aug 2022 03:26:45 GMT
authorization string 使用base64编码的签名相关信息(签名基于hamc-sha256计算) 参考下方详细生成规则

• date参数生成规则:

date必须是UTC+0或GMT时区,RFC1123格式(Mon, 22 Aug 2022 03:26:45 GMT)。
服务端会对date进行时钟偏移检查,最大允许300秒的偏差,超出偏差的请求都将被拒绝。

• authorization参数生成格式:

1)获取接口密钥APIKey 和 APISecret。
在讯飞开放平台控制台,创建一个应用后打开通用文字识别intsig页面可以获取,均为32位字符串。
2)参数authorization base64编码前(authorization_origin)的格式如下。

api_key="$api_key",algorithm="hmac-sha256",headers="host date request-line",signature="$signature"

其中 api_key 是在控制台获取的APIKey,algorithm 是加密算法(仅支持hmac-sha256),headers 是参与签名的参数(见下方注释)。
signature 是使用加密算法对参与签名的参数签名后并使用base64编码的字符串,详见下方。

注: headers是参与签名的参数,请注意是固定的参数名("host date request-line"),而非这些参数的值。

3)signature的原始字段(signature_origin)规则如下。

signature原始字段由 host,date,request-line三个参数按照格式拼接成,
拼接的格式为(\n为换行符,’:’后面有一个空格):

host: $host\ndate: $date\n$request-line

假设

请求url = "http(s)://api.xf-yun.com/v1/private/hh_ocr_recognize_doc"
date = "Mon, 22 Aug 2022 03:26:45 GMT"

那么 signature原始字段(signature_origin)则为:

host: api.xf-yun.com
date: Mon, 22 Aug 2022 03:26:45 GMT
POST /v1/private/hh_ocr_recognize_doc HTTP/1.1

4)使用hmac-sha256算法结合apiSecret对signature_origin签名,获得签名后的摘要signature_sha。

signature_sha=hmac-sha256(signature_origin,$apiSecret)

其中 apiSecret 是在控制台获取的APISecret

5)使用base64编码对signature_sha进行编码获得最终的signature。

signature=base64(signature_sha)

假设

APISecret = "apisecretXXXXXXXXXXXXXXXXXXXXXXX"	
date = "Mon, 22 Aug 2022 03:26:45 GMT"

则signature为

signature="/fLCGPpztEgOKdFDp/6JYh+kTzx9Bum/0RexRlJkIp0="

6)根据以上信息拼接authorization base64编码前(authorization_origin)的字符串,示例如下。

api_key="apikeyXXXXXXXXXXXXXXXXXXXXXXXXXX", algorithm="hmac-sha256", headers="host date request-line", signature="/fLCGPpztEgOKdFDp/6JYh+kTzx9Bum/0RexRlJkIp0="

注: headers是参与签名的参数,请注意是固定的参数名("host date request-line"),而非这些参数的值。

7)最后再对authorization_origin进行base64编码获得最终的authorization参数。

authorization = base64(authorization_origin)
示例结果为:
authorization=YXBpX2tleT0iYXBpa2V5WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0iL2ZMQ0dQcHp0RWdPS2RGRHAvNkpZaCtrVHp4OUJ1bS8wUmV4UmxKa0lwMD0i

# 鉴权结果

如果鉴权失败,则根据不同错误类型返回不同HTTP Code状态码,同时携带错误描述信息,详细错误说明如下:

HTTP Code 说明 错误描述信息 解决方法
401 缺少authorization参数 {"message":"Unauthorized"} 检查是否有authorization参数,详情见authorization参数详细生成规则
401 签名参数解析失败 {“message”:”HMAC signature cannot be verified”} 检查签名的各个参数是否有缺失是否正确,特别确认下复制的api_key是否正确
401 签名校验失败 {“message”:”HMAC signature does not match”} 签名验证失败,可能原因有很多。
1. 检查api_key,api_secret 是否正确。
2.检查计算签名的参数host,date,request-line是否按照协议要求拼接。
3. 检查signature签名的base64长度是否正常(正常44个字节)。
403 时钟偏移校验失败 {“message”:”HMAC signature cannot be verified, a valid date or x-date header is required for HMAC Authentication”} 检查服务器时间是否标准,相差5分钟以上会报此错误

时钟偏移校验失败示例:

HTTP/1.1 403 Forbidden
Date: Mon, 30 Nov 2020 02:34:33 GMT
Content-Length: 116
Content-Type: text/plain; charset=utf-8
{
    "message": "HMAC signature does not match, a valid date or x-date header is required for HMAC Authentication"
}

# 请求参数

在调用业务接口时,都需要在 Http Request Body 中配置以下参数,请求数据均为json字符串。
请求参数示例:

{
	"header": {
		"app_id": "your_appid",
		"status": 3
	},
	"parameter": {
		"hh_ocr_recognize_doc": {
			"recognizeDocumentRes": {
				"encoding": "utf8",
				"compress": "raw",
				"format": "json"
			}
		}
	},
	"payload": {
		"image": {
			"encoding": "jpg",
			"image": "iVBORw0KGgoAAAANSUhEUg......",
			"status": 3
		}
	}
}

请求参数说明:

参数名 类型 必传 描述
header object 用于上传平台参数
header.app_id string 在讯飞开放平台申请的appid信息
header.status int 请求状态,取值为:3(一次传完)
parameter object 用于上传服务特性参数
parameter.hh_ocr_recognize_doc object 必传,规定响应数据格式
parameter.hh_ocr_recognize_doc.recognizeDocumentRes object 响应结果控制,此参数无需改动,均采取默认值
parameter.hh_ocr_recognize_doc.recognizeDocumentRes.encoding string 文本编码,默认值:utf8
parameter.hh_ocr_recognize_doc.recognizeDocumentRes.compress string 文本压缩格式,默认值:raw
parameter.hh_ocr_recognize_doc.recognizeDocumentRes.format string 文本格式,默认值:json
payload object 用于上传请求数据
payload.image object 用于上传图像数据
payload.image.encoding string 图片的编码方式
可选值:jpg(默认值)/jpeg/bmp/png
payload.image.image string 图片数据
最小长度:1B,最大长度:4194304B,采用base64编码
payload.image.status int 数据状态,可选值:3(一次传完)

# 返回结果

返回参数示例:

{
	"header": {
		"code": 0,
		"message": "success",
		"sid": "ase000e452f@hu182c467aac605c2882"
	},
	"payload": {
		"recognizeDocumentRes": {
			"encoding": "utf8",
			"compress": "raw",
			"format": "json",
			"text": "eyJpbWFnZV9hbmdsZSI6MCwibGluZ····"
		}
	}
}

text字段Base64解码后示例:

{
	"image_angle": 0,
	"lines": [{
		"angle": 0,
		"char_centers": [
			[37, 29],
			[57, 29],
			[80, 29],
			[94, 29],
			[112, 29],
			[127, 29]
		],
		"char_polygons": [
			[29, 19, 46, 19, 46, 39, 29, 39],
			[46, 19, 68, 19, 68, 39, 46, 39],
			[75, 20, 85, 20, 85, 38, 75, 38],
			[85, 21, 103, 21, 103, 38, 85, 38],
			[103, 21, 122, 21, 122, 37, 103, 37],
			[122, 20, 132, 20, 132, 38, 122, 38]
		],
		"char_score": [0.999, 0.991, 0.999, 1, 0.999, 0.999],
		"position": [23, 18, 133, 18, 133, 41, 23, 41],
		"property": 0,
		"score": 0.997,
		"text": "桃夭《诗经》"
	}, {
		"angle": 0,
		"char_centers": [
			[35, 76],
			[55, 76],
			[80, 76],
			[94, 76],
			[112, 76],
			[127, 76]
		],
		"char_polygons": [
			[28, 67, 43, 67, 43, 86, 28, 86],
			[43, 67, 68, 67, 68, 86, 43, 86],
			[75, 67, 85, 67, 85, 85, 75, 85],
			[85, 68, 103, 68, 103, 85, 85, 85],
			[103, 68, 122, 68, 122, 84, 103, 84],
			[122, 67, 132, 67, 132, 85, 122, 85]
		],
		"char_score": [0.999, 0.999, 0.997, 1, 0.999, 0.999],
		"position": [23, 65, 133, 65, 133, 88, 23, 88],
		"property": 0,
		"score": 0.996,
		"text": "河广《诗经》"
	}],
	"property_map": ["text", "stamp", "formula"],
	"rotated_image_height": 105,
	"rotated_image_width": 205,
	"whole_text": "桃夭《诗经》\n河广《诗经》\n"
}

返回参数说明:

参数名 类型 描述
header object 用于描述平台特性的参数
header.code int 0表示会话调用成功(并不一定表示服务调用成功,服务是否调用成功以text字段为准)
header.message string 描述信息
header.sid string 本次会话唯一标识id
payload object 数据段,用于携带响应的数据
payload.recognizeDocumentRes object 响应数据块
payload.recognizeDocumentRes.compress string 文本压缩格式
payload.recognizeDocumentRes.encoding string 文本编码格式
payload.recognizeDocumentRes.format string 文本格式
payload.recognizeDocumentRes.text string 返回的文本数据,需要对其进行base64解码

payload.result.text字段base64解码后信息如下,请重点关注:

参数名 类型 描述
image_angle int 图片旋转角度(原图经过顺时针旋转该角度后获得正确方向图片)
lines list 文本块识别信息集合
lines.angle int 文本块被旋转了多少度
lines.char_centers array 字符中心坐标
lines.char_polygons array 字符块坐标(每个字符左上角起,顺时针一周四角坐标形成的集合)
lines.char_score array 字符置信度,值域范围:0-1
lines.position array 文本块坐标(文本阅读方向的左上角起,顺时针一周四角坐标形成的集合)
lines.property int 文本块所属属性表下标,从0开始
lines.score float 文本块的整体置信度
lines.text string 文本块内容
ines.char_centers array 字符中心坐标(每个字符中心坐标形成的集合)
lines.char_polygons array 字符块坐标(每个字符左上角起,顺时针一周四角坐标形成的集合)
lines.char_score array 每个字符的置信度
lines.position array 文本块坐标(左上角起,顺时针一周四角坐标形成的集合
property_map array 文本块属性表,可选值:text(文本)、stamp(印章)、formula(公示);与lines里的每个元素的property搭配使用,property:0文本、1印章、2公式
rotated_image_width int 旋转后图片宽度
rotated_image_height int 旋转后图片高度
whole_text string 全文识别的所有内容(同行内容整合为一行输出)

# 语种列表:

Language 语言
汉语 汉语
漢語 繁体汉语
日本語 日语
한국어 韩语
English 英语
Français 法语
Português 葡萄牙语
Deutsch 德语
Italiano 意大利语
Nederlands 荷兰语
Svenska 瑞典语
Suomi 芬兰语
Dansk 丹麦语
Norsk 挪威语
Magyar 匈牙利语
Tiếng Việt 越南语
Afrikaans 南非语
shqip 阿尔巴尼亚语
Euskara 巴斯克语
Català 加泰罗尼亚语
Hrvatski 克罗地亚语
Čeština 捷克语
Eesti keel 爱沙尼亚语
Íslenska 冰岛语
Gaeilge 爱尔兰语
Latine 拉丁语
Latviešu 拉脱维亚语
Lietuvių 立陶宛语
Melayu 马来语
Polski 波兰语
Română 罗马尼亚语
Slovenčina 斯洛伐克语
Slovenščina 斯洛文尼亚语
Swahili 斯瓦希里语
Türkçe 土耳其语
Cymraeg 威尔士语
Malti 马耳他语
Kreyòl 克里奥尔语
Galego 加利西亚语
Esperanto 世界语
Filipino 菲律宾语
Indonesia 印度尼西亚语
Azərbaycan 阿塞拜疆语
Español 西班牙语
Русский 俄语
български 保加利亚语
Македонски 马其顿语
Українська 乌克兰语
Српски 塞尔维亚
БССР 白俄罗斯语
Ελληνικά 希腊语
Հայ 亚美尼亚语

# 常见问题

# 通用文字识别的主要功能是什么?

答:将图片中印刷或手写的文字转化为计算机可编码的文字。支持语种包括:中、日、韩、英、德、法等52种语言。

# 通用文字识别支持什么应用平台?

答:目前支持Web API应用平台。

# 通用文字识别对图片有什么要求吗?

答:图片格式支持jpg格式、jpeg格式、png格式、bmp格式,且需保证图像文件大小base64编码后不超过4MB。

在线
咨询
建议
反馈
体验
中心