全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网

图片二维码识别API

更新时间:2017-11-16 17:34:53

功能描述

对图片进行二维码识别.

HTTP接口描述

公共描述

  • 云盾内容安全API调用的 域名公共请求查询参数公共请求头描述签名构造返回状态码等描述统一收录在 调用方式 章节。请务必阅读完 调用方式 章节后,在阅读本章节后续内容,才能清楚如何构造HTTP请求从而使用内容安全检测API进行开发.

  • 如果您自己来编写程序构建HTTP请求,请务必先阅读完调用方式 所有章节 及本页1.1章节及以后章节内容,同时您也可以参考部分语言的第三方构造好的HTTP请求(https://help.aliyun.com/document_detail/49178.html?spm=5176.doc28427.6.587.3n1CVE),参考如何设置HTTP请求头、查询参数、签名构造。

  • 新版API经过全新设计更易使用,使用老版本SDK用户点击下载 老版文档

  • 云盾内容安全图片检测同时提供同步和异步图片检测接口。云盾内容安全的大部分图片请求会在1秒内返回结果,但在一些特殊场景(比如系统繁忙导致堆积严重,图片较大,含有OCR场景),耗时一般会多些。同步和异步允许的最长检测时间是有区别的。同步允许的最长检测时间是6秒;而异步则允许最长排队等待时间为2分钟。当超过该限制,仍然没有检测完毕时,系统会强制返回超时错误码。对于用户来说,如果实时性要求不高,可以选择异步。否则选择同步。同步调用也相对简单些。对于同步调用,用户需要注意设置的超时时间最好为6秒。

1.1 场景(scene)和分类(label)

图片检测有不同的场景(scene),每个场景scene)对应不同的分类(label)。对应关系如下:

场景(scene)中文名 场景(scene) 分类(label) 备注
图片二维码识别 qrcode normal 正常图片
图片二维码识别 qrcode qrcode 含二维码的图片

1.2 图片二维码同步检测 (uri: /green/image/scan)

检测图片是否为二维码图片。请求body是一个JSON对象,字段说明如下:

字段 类型 是否必须 说明
bizType 字符串 可选 业务类型,由调用方提供。根据配置,后端可根据该字段对请求做不同处理。属于高级用法
scenes 字符串数组 必须 字符串数组,场景定义参考1.1小节, 图片二维码识别的scene取值为:qrcode. 图片检测支持多场景(scenes)一起检测, 比如对一张图片进行黄图和二维码的同时识别,scenes为[“porn”, “qrcode”], 其他更多图片检测场景同时检测类似添加.
tasks JSON数组 必选 JSON数组中的每个元素是一个图片检测任务结构体,最多支持100个,即100张图片的检测.参见下面Image表

Image表:

字段 类型 是否必须 说明
clientInfo JSON结构体 可选 客户端信息,参考[调用方式/公共请求参数/公共查询参数]小节中ClientInfo结构体描述。服务器会把[调用方式/公共请求参数/公共查询参数]小节中全局的clientInfo和这里的独立的clientInfo合并。独立的clientInfo优先级更高。
dataId 字符串 可选 调用者通常保证一次请求中,所有的dataId不重复
url 字符串 必选 待检测图像URL
time 整型 可选 图片创建/编辑时间,单位为ms

返回body中的Data字段是JSON数组,每一个元素有如下字段:

字段 类型 是否必须 说明
code 整型 必须 错误码,和http的status code一致
msg 字符串 必须 错误描述信息
dataId 字符串 可选 对应的请求中的dataId
taskId 字符串 必须 云盾内容安全服务器返回的唯一标识该检测任务的ID
url 字符串 必须 对应的请求中的url
results 数组 可选 当成功时(code == 200),该结果的包含一个或多个元素。每个元素是个结构体。参见下表。

上表results中包含的元素说明:

字段 类型 是否必须 说明
scene 字符串 必须 风险场景,和传递进来的场景对应
suggestion 字符串 必须 建议用户处理,取值范围:[“pass”, “review”], pass:图片正常,无二维码,review:含有二维码
label 字符串 必须 该文本的分类,取值范围参考1.5小节
rate 浮点数 必须 结果为该分类的概率;值越高,越趋于该分类;取值为[0.00-100.00]
qrcodeData 字符串数组 可选 图片中含有二维码时,该字段是图片中所有二维码包含的文本信息
extras map 可选 附加信息.该值将来可能会调整,建议不要在业务上进行依赖

请求body例子:

  1. {
  2. "scenes": ["qrcode"],
  3. "tasks": [
  4. {
  5. "dataId": "test2NInmO$tAON6qYUrtCRgLo-1mwxdi",
  6. "url": "http://www.taobao.com/content/images/taobao.jpg"
  7. }
  8. ]
  9. }

响应例子:

  1. {
  2. "msg": "OK",
  3. "code": 200,
  4. "requestId": "36D384DA-8023-4E84-BCFD-0C5581352C16",
  5. "data": [
  6. {
  7. "code": 200,
  8. "msg": "OK",
  9. "dataId": "test2NInmO$tAON6qYUrtCRgLo-1mwxdi",
  10. "taskId": "img2MVcKPU1QGD64LoAb4cK6w-1mwxdi",
  11. "url": "http://www.taobao.com/content/images/taobao.jpg",
  12. "results": [
  13. {
  14. "rate": 100,
  15. "scene": "qrcode",
  16. "qrcodeData":["https://www.taobao.com"],
  17. "suggestion": "review",
  18. "label": "qrcode"
  19. }
  20. ]
  21. }
  22. ]
  23. }

1.3 图片二维码异步检测 (uri: /green/image/asyncscan)

异步检测图片是否为二维码图片。请求body是一个JSON对象,字段说明如下:

字段 类型 是否必须 说明
bizType 字符串 可选 业务类型,由调用方提供。根据配置,后端可根据该字段对请求做不同处理。属于高级用法
scenes 字符串数组 必须 字符串数组,场景定义参考1.1小节, 图片二维码的scene取值为:qrcode.图片检测支持多场景(scenes)一起检测, 比如对一张图片进行黄图和二维码的同时识别,scenes为[“porn”, “qrcode”], 其他更多图片检测场景同时检测类似添加.
callback 字符串 可选 异步检测结果回调通知用户url;支持http/https。但该字段为空时,用户必须定时检索检测结果
seed 字符串 可选 随机字符串,该值会用于用户回调通知请求中签名;当含有callback时,该字段为必须。
tasks JSON数组 必选 JSON数组中的每个元素是一个图片检测任务结构体,参见下面Image表

Image表:

字段 类型 是否必须 说明
clientInfo JSON结构体 可选 客户端信息,参考[调用方式/公共请求参数/公共查询参数]小节中ClientInfo结构体描述。服务器会把[调用方式/公共请求参数/公共查询参数]小节中全局的clientInfo和这里的独立的clientInfo合并。独立的clientInfo优先级更高。
dataId 字符串 可选 调用者通常保证一次请求中,所有的dataId不重复
url 字符串 必须 待检测图像URL
time 字符串 可选 内容创建/编辑时间
interval 整型 可选 GIF图/长图检测专用。截帧频率,GIF图可理解为图片数组,每interval张图片抽取一张进行检测。只有该值存在时,才会对GIF进行截帧。长图同时支持长竖图和长横图。对长竖图,按照9:16(宽:高)来计算总图数,并进行切割。长横图会按照16:9(宽:高)来计算总图数,并进行切割。这里的interval指示后台检测时可按照该间隔跳着检测,以节省检测成本。
maxFrames 整型 可选 GIF图/长图检测专用。最大截帧数量。当interval*maxFrames小于该图片所包含的图片数量时,截帧间隔会自动修改为“该图片所包含的图片数/maxFrames”,以提高整体检测效果。默认值为100。

请求body例子:

  1. {
  2. "scenes": ["qrcode"],
  3. "tasks": [
  4. {
  5. "dataId": "test4lNSMdggA0c56MMvfYoh4e-1mwxpx",
  6. "url": "https://img.alicdn.com/tfs/TB1urBOQFXXXXbMXFXXXXXXXXXX-1442-257.png"
  7. }
  8. ]
  9. }

响应例子:

  1. {
  2. "code": 200,
  3. "msg": "OK",
  4. "requestId": "95AD868A-F5D2-4AEA-96D4-E0273B8E074C",
  5. "data": [
  6. {
  7. "code": 200,
  8. "msg": "OK",
  9. "dataId": "test4lNSMdggA0c56MMvfYoh4e-1mwxpx",
  10. "taskId": "fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695",
  11. "url": "https://img.alicdn.com/tfs/TB1urBOQFXXXXbMXFXXXXXXXXXX-1442-257.png"
  12. }
  13. ]
  14. }

返回body中的Data字段是JSON数组,每一个元素有如下字段:

字段 类型 是否必须 说明
code 整型 必须 错误码,和http的status code一致
msg 字符串 必须 错误描述信息
dataId 字符串 可选 对应的请求中的dataId
taskId 字符串 必须 云盾内容安全服务器返回的唯一标识该检测任务的ID
url 字符串 必须 对应的请求中的url

结果回调通知参数callback、seed使用说明:

如果设置了回调通知参数callback,被回调callback值,即一个http(s)协议接口的url, 需支持post方法, 传输数据编码采用utf-8,并且支持两个表单参数checksum和content, 系统将按以下描述的生成规则和格式设置checksum和content的值,调用您的callback接口返回检测内容。

约定:您服务端接收到我们推送的结果后,返回的http状态码为200时,我们视为推送成功,其他的http状态码均视为您接收失败,我们将进行最多16次推送的重试。

回调结果参数的生成规则和格式:

属性 值类型 说明
checksum String 由用户uid + seed + content拼成字符串,通过sha256算法生产. 为防篡改,您可(非必须)在获取到推送结果时按此算法生成字符串,与checksum做一次校验
content String JSON字符串格式, 请自行解析反转成json对象, content结果格式如下所述

注: 用户uid(账号ID),请在阿里云控制台上查询:https://account.console.aliyun.com/#/secure

content结果格式:

  1. {
  2. "code": 200,
  3. "msg": "OK",
  4. "taskId": "fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695",
  5. "url":"http://1.jpg",
  6. "results": [
  7. {
  8. "rate": 100,
  9. "scene": "qrcode",
  10. "suggestion": "pass",
  11. "label": "normal"
  12. }
  13. ]
  14. }

1.4 图片二维码异步检测结果查询接口 (uri: /green/image/results)

客户端定时轮询查询异步检测结果;建议查询间隔为30秒,最长不能超过1个小时,否则结果将会消失。请求body是一个JSON数组,字段说明如下:

字段 类型 是否必须 说明
body JSON数组 必须 要查询的taskId列表。最大长度不超过1000.

返回body中的Data字段是JSON数组,每一个元素有如下字段:

字段 类型 是否必须 说明
code 整型 必须 错误码,和http的status code一致
msg 字符串 必须 错误描述信息
dataId 字符串 可选 对应的请求中的dataId
taskId 字符串 必须 云盾内容安全服务器返回的唯一标识该检测任务的ID
url 字符串 可选 对应的请求中的url
results 数组 可选 当成功时(code == 200),该结果的包含一个或多个元素。每个元素是个结构体。参见下表。

上表results中包含的元素说明:

字段 类型 是否必须 说明
scene 字符串 必须 风险场景,和传递进来的场景对应
suggestion 字符串 必须 建议用户处理,取值范围:[“pass”, “review”], pass:图片正常,无二维码 review:含有二维码
label 字符串 必须 该图片的分类,取值范围参考1.1小节
rate 浮点数 必须 结果为该分类的概率;值越高,越趋于该分类;取值为[0.00-100.00]
details JSON数组 可选 如果对GIF图有截帧,该字段会展现需要注意(review/block)的截帧信息。每个元素是个JSON结构图,参见下面Frame表
extras JSON对象 可选 附加信息.该值将来可能会调整,建议不要在业务上进行依赖

Frame表

字段 类型 是否必须 说明
rate 浮点数 必须 结果为该分类的概率;值越高,越趋于该分类;取值为[0.00-100.00]
url 字符串 必须 截帧的URL地址

请求body例子:

  1. ["fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695"]

响应例子:

  1. {
  2. "code": 200,
  3. "msg": "OK",
  4. "requestId": "39D67E51-66CB-47DC-B70D-1226BE4E484F",
  5. "data": [
  6. {
  7. "code": 200,
  8. "msg": "OK",
  9. "taskId": "fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695",
  10. "results": [
  11. {
  12. "rate": 100,
  13. "scene": "qrcode",
  14. "suggestion": "pass",
  15. "label": "normal"
  16. }
  17. ]
  18. }
  19. ]
  20. }

1.5 图片二维码反馈接口 (uri: /green/image/feedback)

当用户审核发现云盾内容安全检测有错时,可以通过该API反馈给云盾内容安全。请求body是一个JSON数组,每个元素含有如下字段:

字段 类型 是否必须 说明
taskId 字符串 必须 云盾内容安全服务器返回的唯一标识该检测任务的ID
dataId 字符串 可选 对应的请求中的dataId
url 字符串 可选 对应的请求中的url,当请求中没有url时,该字段为空
label 字符串 可选 反馈的分类,取值范围参考1.1小节
note 字符串 可选 备注

返回body中的Data字段是为空

请求body例子:

  1. {
  2. "dataId": "test2K9GRLJKAi45G9uK64QjZv-1mwxKX",
  3. "taskId": "taskid",
  4. "url": "http://foo.bar",
  5. "label": "normal",
  6. "note": "blabla"
  7. }

响应例子:

  1. {
  2. "code": 200,
  3. "msg": "OK",
  4. "requestId": "EE5A1189-4D7B-4C24-AD78-4C1FAA3E7A0C"
  5. }

SDK调用方式

2.1 各语言SDK

如果您使用java、python、php语言,我们官方提供了对应的sdk,直接使用sdk调用即可,sdk如何调用请点击以下对应开发语言的链接继续阅读。

java

php

python

其他语言

2.2 代码示例

或者您也可以直接下载各语言的调用代码示例和离线文档进行阅读, 离线代码调用示例下载地址如下:

其他说明

  1. 图片链接协议支持:http和https
  2. 图片格式支持: PNG,JPG,JPEG,BMP,GIF,WEBP
  3. 同步调用时图片大小限制为5M,异步调用时图片大小限制为20M,图片下载时间限制为3s内,如果下载时间超过3s返回下载超时;
  4. 图片像素建议不小于256*256,太小可能会影响识别效果
  5. 图片检测接口响应时间依赖图片的下载时间,请保证所检测图片所在的存储服务的稳定,图片建议使用oss存储或者cdn做缓存等.
  6. 接口regionId请填写cn-shanghai(你自己的服务部署在其他region,也请填写cn-shanghai)
本文导读目录