图片二维码识别

最近更新时间:2024-04-09 15:54:34

我的收藏

功能描述

数据万象二维码识别功能可识别图片中有效二维码的位置及内容,输出图像中二维码包含的文本信息(每个二维码对应的 URL 或文本),并可对识别出的二维码添加马赛克。
注意:
本接口属于 GET 请求,为同步请求方式,需携带签名,具体签名设置请参见 请求签名

授权说明

通过子账号使用时,需要授予对应权限,COS权限具体请参见 COS action,CI 权限具体请参见 数据万象 action
下载时识别:授权策略中 action 设置为 cos:GetObjectci:CreateDetectQRcodeJob
上传时识别:授权策略中 action 设置为 cos:PutObjectci:CreateDetectQRcodeJob

服务开通

使用该功能需提前开通数据万象,并绑定存储桶。详情请参见 绑定存储桶
使用该功能需提前通过控制台或接口开通 AI 内容识别服务 。详情请参见 开通 AI 内容识别服务

使用限制

使用该接口时,请先确认相关限制条件。详情请参见 使用限制

费用说明

该接口为付费服务,产生的费用将由数据万象收取,详细计费说明可参见 内容识别费用

请求一:上传时识别

图片上传时识别二维码的请求包与 COS 简单上传文件接口一致,只需在请求头部增加图片处理参数 Pic-Operations,并将请求 Host 更改为对象存储域名即可。

请求

PUT /<ObjectKey> HTTP/1.1
Host: <BucketName-APPID>.cos.<Region>.myqcloud.com
Date: GMT Date
Authorization: Auth String
Pic-Operations: <PicOperations>
说明
COS 简单上传文件接口,详细请参见 PUT Object 文档
Authorization: Auth String,详情请参见 请求签名 文档。

请求头

此接口仅使用公共请求头部,详情请参见 公共请求头部 文档。

请求参数

此接口无请求参数。

请求体

Pic-Operations 为 json 格式的字符串,具体参数如下:
参数名称
描述
类型
是否必选
is_pic_info
是否返回原图信息,0不返回原图信息,1返回原图信息,默认为0
Int
rules
处理规则,一条规则对应一个处理结果(目前最多支持五条规则),不填则不进行图片处理
Array
rules(json 数组)中每一项具体参数如下:
参数名称
描述
类型
是否必选
bucket
存储结果的目标存储桶,格式为 BucketName-APPID,如果不指定的话默认保存到当前存储桶
String
fileid
处理结果的文件路径名称,例如以/开头,则存入指定文件夹中,否则存入与原图文件相同的目录位置
String
rule
处理参数,参见数据万象图片处理 API。若按指定样式处理,则以style/开头,后加样式名,
例如样式名为test,则 rule 字段为style/test
String
使用二维码识别功能需在 rule 中添加二维码识别参数(QRcode),相关内容如下:
QRcode/cover/<mode>
示例参数说明如下:
参数
描述
类型
是否必选
cover
二维码覆盖功能。可为0或1:
0表示不开启二维码覆盖
1表示开启二维码覆盖
功能开启后,将对识别出的二维码覆盖上马赛克,默认值0
Int
bar-type
二维码/条形码识别功能,将对识别出的二维码/条形码 覆盖马赛克。取值为0,1,2 :
0表示都识别,
1表示识别二维码
2表示识别条形码
默认值0
Int
segment
通用的切片开关参数,指定是否需要切片,有效值:
0(表示不切片)
1(表示切片)
默认值0,需要切片时,后台会根据图片尺寸进行切片识别
Int
size
当segment取值为1时生效,默认1000像素,取值范围为大于等于500的整数。当size指定的数值大于图片像素时,则不进行切片,直接识别
Int

响应

响应头

此接口仅返回公共响应头部,详情请参见 公共响应头部 文档。

响应体

响应体具体数据内容如下:
参数名称
类型
描述
UploadResult
Container
原图信息
UploadResult 节点内容:
参数名称
类型
描述
OriginalInfo
Container
原图信息
ProcessResults
Container
图片处理结果
OriginalInfo 节点内容:
节点名称
类型
描述
Key
String
原图文件名
Location
String
图片路径
ImageInfo
Container
原图图片信息
ImageInfo 节点内容:
节点名称
类型
描述
Format
String
格式
Width
Int
图片宽度
Height
Int
图片高度
Quality
Int
图片质量
Ave
String
图片主色调
Orientation
Int
图片旋转角度
ProcessResults 节点内容:
节点名称
类型
描述
Object
Container
每一个图片处理结果
Object 节点内容:
节点名称
类型
描述
Key
String
文件名
Location
String
图片路径
Format
String
图片格式
Width
Int
图片宽度
Height
Int
图片高度
Size
Int
图片大小
Quality
Int
图片质量
codeStatus
Int
二维码识别结果。0表示未识别到二维码,1表示识别到二维码
QRcodeInfo
Container
二维码识别结果,可能有多个
QRcodeInfo 节点内容:
节点名称
类型
描述
codeUrl
String
二维码的内容。可能识别不出
codelocation
Container
图中识别到的二维码位置坐标
codelocation 节点内容:
节点名称
类型
描述
point
String
二维码坐标点

实际案例

请求

PUT /picture.jpg HTTP/1.1
Host: examplebucket-1250000000.cos.ap-chengdu.myqcloud.com
Date: Tue, 03 Apr 2018 09:06:15 GMT
Authorization:XXXXXXXXXXXX



Pic-Operations: {"is_pic_info":1,"rules":[{"fileid":"test.jpg","rule":" QRcode/cover/1"}]}
Content-Length: 64



[Object]

响应

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 645
Date: Tue, 03 Apr 2018 09:06:16 GMT
Status: 200 OK
x-cos-request-id: NWFjMzQ0MDZfOTBmYTUwXzZkZV8z****



<UploadResult>
<OriginalInfo>
<Key>picture.jpg</Key>
<Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/picture.jpg</Location>
<ImageInfo>
<Format>JPEG</Format>
<Width>640</Width>
<Height>427</Height>
<Quality>100</Quality>
<Ave>0xa18454</Ave>
<Orientation>1</Orientation>
</ImageInfo>
</OriginalInfo>
<ProcessResults>
<Object>
<Key>picture-2.jpg</Key>
<Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/picture-2.jpg</Location>
<Format>png</Format>
<Width>640</Width>
<Height>427</Height>
<Size>463092</Size>
<Quality>100</Quality>
<codeStatus>1</codeStatus>
<QRcodeInfo>
<codeUrl>xxxxxxxxxxxxx</codeUrl>
<codelocation>
<point>100,100</point>
<point>100,200</point>
<point>200,200</point>
<point>200,100</point>
</codelocation>
</QRcodeInfo>
<codeUrl>xxxxxxxxxxxxx</codeUrl>
<codelocation>
<point>1000,1000</point>
<point>1000,2000</point>
<point>2000,2000</point>
<point>2000,1000</point>
</codelocation>
</Object>
</ProcessResults>
</UploadResult>

请求二:下载时识别



请求

GET /<ObjectKey>?ci-process=QRcode&cover=<cover> HTTP/1.1
Host: <BucketName-APPID>.cos.<Region>.myqcloud.com
Date: <GMT Date>
Authorization: <Auth String>
说明
Authorization: Auth String ,详情请参见 请求签名 文档。

请求头

此接口仅使用公共请求头部,详情请参见 公共请求头部 文档。

请求参数

参数名称
描述
是否必选
类型
ObjectKey
对象文件名,例如 folder/sample.jpg
String
ci-process
万象处理能力,二维码识别固定为 QRcode
String
cover
二维码覆盖功能,将对识别出的二维码覆盖上马赛克。取值为0或1。0表示不开启二维码覆盖,1表示开启二维码覆盖,默认值0
Int

请求体

该请求无请求体。

响应

响应头

此接口仅返回公共响应头部,详情请参见 公共响应头部 文档。

响应体

该响应体返回为 application/xml 数据,包含完整节点数据的内容展示如下:
<Response>
<CodeStatus>1</CodeStatus>
<QRcodeInfo>
<CodeUrl>xxxx</CodeUrl>
<CodeLocation>
<Point>xxx,xxx</Point>
<Point>xxx,xxx</Point>
<Point>xxx,xxx</Point>
<Point>xxx,xxx</Point>
</CodeLocation>
</QRcodeInfo>
<ResultImage>
base64编码的图片
</ResultImage>
</Response>
具体的数据内容如下:
节点名称(关键字)
父节点
描述
类型
Response
保存结果的容器
Container
Response 的内容:
节点名称(关键字)
父节点
描述
类型
CodeStatus
Response
二维码识别结果。0表示未识别到二维码,1表示识别到二维码
Int
QRcodeInfo
Response
二维码识别结果,可能有多个
Container
ResultImage
Response
处理后的图片 base64数据,请求参数 cover 为1时返回
String
QRcodeInfo 节点内容:
节点名称(关键字)
父节点
描述
类型
CodeUrl
QRcodeInfo
二维码的内容。可能识别不到内容
String
CodeLocation
QRcodeInfo
图中识别到的二维码位置坐标
Container
CodeLocation 节点内容:
节点名称(关键字)
父节点
描述
类型
Point
CodeLocation
二维码坐标点(X坐标,Y坐标)
String

错误码

该请求操作无特殊错误信息,常见的错误信息请参见 错误码 文档。

实际案例

请求

GET /<ObjectKey>?ci-process=QRcode&cover=1 HTTP/1.1
Authorization: q-sign-algorithm=sha1&q-ak=AKIDZfbOAo7cllgPvF9cXFrJD0**********&q-sign-time=1497530202;1497610202&q-key-time=1497530202;1497610202&q-header-list=&q-url-param-list=&q-signature=28e9a4986df11bed0255e97ff90500557e0ea057
Host: examplebucket-1250000000.cos.ap-beijing.myqcloud.com

响应

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 414641
Date: Thu, 15 Jun 2017 12:37:29 GMT
Server: tencent-ci
x-cos-request-id: NTk0MjdmODlfMjQ4OGY3XzYzYzhf****



<Response>
<CodeStatus>1</CodeStatus>
<QRcodeInfo>
<CodeUrl>xxxxxxxxxxxxx</CodeUrl>
<CodeLocation>
<Point>100,100</Point>
<Point>100,200</Point>
<Point>200,200</Point>
<Point>200,100</Point>
</CodeLocation>
</QRcodeInfo>
<QRcodeInfo>
<CodeUrl>xxxxxxxxxxxxx</CodeUrl>
<CodeLocation>
<Point>1000,1000</Point>
<Point>1000,2000</Point>
<Point>2000,2000</Point>
<Point>2000,1000</Point>
</CodeLocation>
</QRcodeInfo>
<ResultImage>
base64编码的图片
</ResultImage>
</Response>