本文介绍了调用图片异步检测接口识别通用图文OCR的方法。通用图文OCR能够识别并返回图片中的文字内容。
- 普通版本适用于识别影视画面、互联网图片等文字较少的场景。
- 高精度版本适用于复杂的文档图片识别以及图片中有高密度文字的场景,能够返回单字信息。
(图片异步检测)使用说明
业务接口:/green/image/asyncscan,表示图片异步检测。
您可以调用该接口创建图片异步检测任务。关于如何构造HTTP请求,请参见请求结构;您也可以直接选用已构造好的HTTP请求,更多信息,请参见SDK概览。
计费信息:
该接口为收费接口。关于计费方式,请参见内容安全产品定价。
检测超时:
同步检测允许的最长检测时间是6秒,如果检测在该时间限制内没有完成,系统会强制返回超时错误码。如果您对实时性要求不高,可以选择异步检测,其他情况下请选择同步检测,同步检测接口的调用相对简单些。对于同步检测接口的调用,建议您将超时时间设置为6秒。
返回结果:
异步检测任务不会实时返回检测结果,您需要通过callback或者轮询的方式获取检测结果。检测结果最长保留一小时。
callback获取检测结果:提交异步检测任务时,在请求参数中传入callback参数,用来自动接收检测结果,具体请参见(异步检测)请求参数。
轮询获取检测结果:提交异步检测任务时,无需传入callback参数;提交异步检测任务后,调用结果查询接口获取检测结果,具体请参见(图片异步检测结果查询)使用说明。
图片要求:
图片链接支持以下协议:HTTP和HTTPS。
图片支持以下格式:PNG、JPG、JPEG、BMP、GIF、WEBP。
图片大小限制为20 MB以内(适用于同步和异步调用),高度或者宽度不能超过30,000像素(px),且图像总像素不超过2.5亿(px)。
说明其中,GIF格式的图片,图像总像素不超过4,194,304(px),高度或者宽度不能超过30,000像素(px)。
图片下载时间限制为3秒内,如果下载时间超过3秒,返回下载超时。
图片像素建议不低于256*256(px),像素过低可能会影响识别效果。
图片检测接口的响应时间依赖图片的下载时间。请保证被检测图片所在的存储服务稳定可靠,建议您使用阿里云OSS存储或者CDN缓存等。
QPS限制
本接口的单用户QPS限制为10次/秒。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。
(异步检测)请求参数
名称 | 类型 | 是否必须 | 示例值 | 描述 |
bizType | String | 否 | default | |
scenes | StringArray | 是 | ["ocr"] | 指定检测场景,取值:ocr。 |
callback | String | 否 | http://www.aliyundoc.com/xx.json | 检测结果回调通知您的URL,支持使用HTTP和HTTPS协议的地址。该字段为空时,您必须定时轮询检测结果。 callback接口必须支持POST方法、UTF-8编码的传输数据,以及表单参数checksum和content。内容安全按照以下规则和格式设置checksum和content,调用您的callback接口返回检测结果。
说明 您的服务端callback接口收到内容安全推送的结果后,如果返回的HTTP状态码为200,则表示接收成功,其他的HTTP状态码均视为接收失败。接收失败时,内容安全将最多重复推送16次检测结果,直到接收成功。重复推送16次后仍未接收成功,则不再推送,建议您检查callback接口的状态。 |
seed | String | 否 | aabbcc123 | 随机字符串,该值用于回调通知请求中的签名。 由英文字母、数字、下划线(_)组成,不超过64个字符。由您自定义,用于在接收到内容安全的回调通知时校验请求由阿里云内容安全服务发起。 说明 当使用callback时,该字段必须提供。 |
cryptType | String | 否 | SHA256 | 使用回调通知时(callback),设置对回调通知内容进行加密的算法。内容安全会将返回结果(由 用户uid + seed + content 拼接的字符串)按照您设置的加密算法加密后,再发送到您的回调通知地址。取值:
|
tasks | JSONArray | 是 | 指定检测对象,JSON数组中的每个元素是一个检测任务结构体。最多支持100个元素,即每次提交100条内容进行检测,支持100个元素的前提是需要将并发任务调整到100个以上。关于每个元素的具体结构描述,请参见task。 | |
extras | JSONObject | 否 | xxx | 不传入extras参数表示使用普通版本OCR识别。 如果使用高精度OCR识别,需要传入该参数,格式为 |
名称 | 类型 | 是否必须 | 示例值 | 描述 |
dataId | String | 否 | test_data_xxxx | 数据ID。需要保证在一次请求中所有的ID不重复。 |
url | String | 是 | https://www.aliyundoc.com/test_image_xxxx.png | 检测对象的URL。
|
interval | Integer | 否 | 2 | 截帧频率,GIF图、长图检测专用。
默认只会检测GIF图、长图的第一帧,interval参数用于指示后台在检测时可按照该间隔跳着检测,以节省检测成本。 说明 interval需要与maxFrames参数组合使用。例如,设置interval为2,maxFrames为100,在检测GIF图、长图时,将每间隔1帧检测一次,最多检测100帧,计费则按照实际检测的数量计算。 |
maxFrames | Integer | 否 | 100 | 最大截帧数量,GIF图、长图检测专用,默认值为1。 当 |
(异步检测)返回数据
名称 | 类型 | 示例值 | 描述 |
code | Integer | 200 | 错误码,和HTTP状态码一致。 更多信息,请参见公共错误码。 |
msg | String | OK | 请求信息的响应消息。 |
dataId | String | test_data_xxxx | 检测对象对应的数据ID。 说明 如果在检测请求参数中传入了dataId,则此处返回对应的dataId。 |
taskId | String | aaa25f95-4892-4d6b-aca9-7939bc6e9baa-148619876**** | 检测任务的ID。 |
url | String | https://www.aliyundoc.com/test_image_xxxx.png | 检测对象的URL。
|
extras | JSONObject | xxx | 额外调用参数,对应检测请求参数中的extras。 说明 该参数可能会被调整,目前请勿依赖该参数的返回值。 |
(异步检测)示例
请求示例
http(s)://[Endpoint]/green/image/asyncscan
&<公共请求参数>
{
"scenes": [
"ocr"
],
"tasks": [
{
"dataId": "test_data_xxxx",
"url": "https://www.aliyundoc.com/test_image_xxxx.png"
}
]
}
正常返回示例
{
"code": 200,
"msg": "OK",
"requestId": "92AD868A-F5D2-4AEA-96D4-E1273B8E074C",
"data": [
{
"code": 200,
"msg": "OK",
"dataId": "test_data_xxxx",
"taskId": "aaa25f95-4892-4d6b-aca9-7939bc6e9baa-148619876****",
"url": "https://www.aliyundoc.com/test_image_xxxx.png"
}
]
}
(图片异步检测结果查询)使用说明
业务接口:/green/image/results,表示查询图片异步检测结果。
您可以调用该接口查询图片异步检测任务的结果。关于如何构造HTTP请求,请参见请求结构;您也可以直接选用已构造好的HTTP请求,更多信息,请参见SDK概览。
计费信息:
该接口不计费。
查询超时:
建议您将查询间隔设置为30秒(即在提交异步检测任务30秒后查询结果),最长不能超出4个小时,否则结果将会丢失。
QPS限制
本接口的单用户QPS限制为10次/秒。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。
(结果查询)请求参数
名称 | 类型 | 是否必须 | 示例值 | 描述 |
body | JSONArray | 是 | ["aaa25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695"] | 要查询的检测任务的taskId列表。数组中的元素个数不超过100个。 您在提交检测任务后,可以从返回数据中获取检测任务的taskId。 |
(结果查询)返回数据
名称 | 类型 | 示例值 | 描述 |
code | Integer | 200 | 错误码,和HTTP状态码一致。 更多信息,请参见公共错误码。 |
msg | String | OK | 请求信息的响应消息。 |
dataId | String | test_data_xxxx | 检测对象对应的数据ID。 说明 如果在检测请求参数中传入了dataId,则此处返回对应的dataId。 |
taskId | String | aaa25f95-4892-4d6b-aca9-7939bc6e9baa-148619876**** | 检测任务的ID。 |
url | String | https://www.aliyundoc.com/test_image_xxxx.png | 检测对象的URL。
|
extras | JSONObject | xxx | 额外调用参数,对应检测请求参数中的extras。 说明 该参数可能会被调整,目前请勿依赖该参数的返回值。 |
results | Array | 返回结果。调用成功时(code=200),返回结果中包含一个或多个元素。每个元素是个结构体,具体结构描述请参见result。 |
名称 | 类型 | 示例值 | 描述 |
scene | String | ocr | 检测场景,取值:ocr。 |
label | String | ocr | 检测结果的分类。取值:
|
suggestion | String | review | 建议用户执行的操作,取值:
|
rate | Float | 99.91 | 在OCR图文识别场景中,可以不用关注该返回值。 |
ocrLocations | Array | 静态图(非GIF图片)有文字时,返回识别出来的单条文字信息,具体结构描述请参见ocrLocation。 | |
ocrData | Array | 本文提供了调用图片异步检测任务的具体内容, | 静态图(非GIF图片)有文字时,返回识别出来的所有文字信息组合。通常文本组合信息存储于数组第一个元素上。 |
frames | Array | xxx | 动态图(GIF图片)有文字时,返回识别出来的每一帧及对应的文字。 |
ocrDetailInfo | Object | 高精度全文识别结果的详细文字信息,具体结构描述请参见ocrDetailInfo。 说明 只有在异步检测任务的请求参数extras中传入了 |
名称 | 类型 | 示例值 | 描述 |
text | String | hello | 识别出来的单条文本信息。 |
x | Float | 41 | 以图片左上角为坐标原点,文字区域左上角到y轴的距离,单位:像素。 |
y | Float | 84 | 以图片左上角为坐标原点,文字区域左上角到x轴的距离,单位:像素。 |
w | Float | 83 | 文字区域的宽度,单位:像素。 |
h | Float | 26 | 文字区域的高度,单位:像素。 |
名称 | 类型 | 示例值 | 描述 |
wordNum | Integer | 2 | 字块数量。 |
wordsInfo | Object | 字块信息。具体结构描述请参见wordsInfo。 |
名称 | 类型 | 示例值 | 描述 |
charInfo | Array | 单字信息。具体结构描述请参见charInfo。 | |
direction | Integer | 0 | 文字方向。取值:
|
pos | Array | 坐标信息。具体结构描述请参见pos。 | |
prob | Integer | 99 | 置信度。 |
word | String | 林下漏光 | 字块包含的文字内容。 |
名称 | 类型 | 示例值 | 描述 |
h | Integer | 20 | 文字高度,单位:像素。 |
prob | Integer | 99 | 置信度。 |
w | Integer | 20 | 文字宽度,单位:像素。 |
word | String | 林 | 单字内容。 |
x | Integer | 39 | 单字在x轴上的坐标,单位:像素。 |
y | Integer | 86 | 单字在y轴上的坐标,单位:像素。 |
名称 | 类型 | 示例值 | 描述 |
x | Integer | 73 | 当前字块在x轴上的坐标,单位:像素。 |
y | Integer | 113 | 当前字块在y轴上的坐标,单位:像素。 |
(结果查询)示例
请求示例
http(s)://[Endpoint]green/image/results
&<公共请求参数>
[
"aaa25f95-4892-4d6b-aca9-7939bc6e9baa-148619876****"
]
正常返回示例
普通图文OCR
{ "code": 200, "data": [ { "code": 200, "dataId": "test_data_xxxx", "extras": { }, "msg": "OK", "results": [ { "label": "ocr", "ocrData": [ "本文提供了调用图片异步检测任务的具体内容," ], "ocrLocations": [ { "h": 19, "text": "本文提供了调用图片异步检测任务的具体内容,", "w": 362, "x": 31, "y": 11 } ], "rate": 99.91, "scene": "ocr", "suggestion": "review" } ], "taskId": "aaa25f95-4892-4d6b-aca9-7939bc6e9baa-148619876****", "url": "https://www.aliyundoc.com/test_image_xxxx.png" } ], "msg": "OK", "requestId": "992C7849-AA45-4055-8F82-8D44D64C15E3" }
高精度图文OCR
http(s)://[Endpoint]green/image/results &<公共请求参数> { "msg": "OK", "code": 200, "data": [ { "msg": "OK", "code": 200, "dataId": "test_data_xxxx", "extras": { }, "results": [ { "ocrData": [ "林下漏光,疏疏如残雪 " ], "ocrDetailInfo": { "wordsInfo": [ { "prob": 99, "pos": [ { "x": 37, "y": 86 }, { "x": 123, "y": 86 }, { "x": 123, "y": 109 }, { "x": 37, "y": 109 } ], "word": "林下漏光", "charInfo": [ { "prob": 99, "w": 20, "h": 20, "x": 39, "y": 86, "word": "林" }, { "prob": 99, "w": 5, "h": 20, "x": 63, "y": 86, "word": "下" }, { "prob": 99, "w": 17, "h": 20, "x": 72, "y": 86, "word": "漏" }, { "prob": 99, "w": 17, "h": 20, "x": 103, "y": 86, "word": "光" } ], "direction": 0 }, { "prob": 99, "pos": [ { "x": 73, "y": 113 }, { "x": 174, "y": 113 }, { "x": 174, "y": 136 }, { "x": 73, "y": 136 } ], "word": "疏疏如残雪", "charInfo": [ { "prob": 99, "w": 19, "h": 20, "x": 74, "y": 113, "word": "疏" }, { "prob": 99, "w": 16, "h": 20, "x": 97, "y": 113, "word": "疏" }, { "prob": 99, "w": 13, "h": 20, "x": 117, "y": 113, "word": "如" }, { "prob": 99, "w": 16, "h": 20, "x": 134, "y": 113, "word": "残" }, { "prob": 99, "w": 16, "h": 20, "x": 154, "y": 113, "word": "雪" } ], "direction": 0 } ], "wordNum": 2 }, "scene": "ocr", "label": "ocr", "suggestion": "review", } ], "taskId": "aaa25f95-4892-4d6b-aca9-7939bc6e9baa-148619876****", "url": "https://www.aliyundoc.com/test_image_xxxx.png" } ], "requestId": "03E6B458-8DDD-4D44-8856-3216E660201E" }