图片二维码识别

最近更新时间:2025-08-29 14:48:52

我的收藏

功能描述

数据万象二维码识别功能可识别图片中有效二维码的位置及内容,输出图像中二维码包含的文本信息(每个二维码对应的 URL 或文本),并可对识别出的二维码添加马赛克。

授权说明

通过子账号使用时,需要在 授权策略 的 action 中添加对应的权限。对象存储支持的所有操作接口请参见 COS action,数据万象支持的所有操作接口请参见 CI action。通过不同方式使用此功能时,授权策略如下:
下载时识别:授权策略 中 action 设置为 cos:GetObjectci:CreateDetectQRcodeJob
上传时识别:授权策略 中 action 设置为 cos:PutObject
注意:
注意 GetObject 对应的 resource 为源文件,PutObject 对应的 resource 为转存的文件。

服务开通

使用该功能需提前 绑定存储桶,开通数据万象服务。
注意:
数据万象绑定后,如果您手动对存储桶进行数据万象的解绑操作,将无法继续使用该功能。

使用限制

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

费用说明

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


请求一:上传时识别

图片上传时识别二维码的请求包与 COS 简单上传文件接口一致,只需在请求头部增加图片处理参数 Pic-Operations。

请求

请求示例

PUT /<ObjectKey> HTTP/1.1
Host: <BucketName-APPID>.cos.<Region>.myqcloud.com
Date: GMT Date
Authorization: Auth String
Pic-Operations:
{
"is_pic_info": 1,
"rules": [{
"fileid": "exampleobject",
"rule": "QRcode/cover/<cover>/bar-type/<bar-type>/segment/<segment>/size/<size>"
}]
}
说明:
Authorization: 携带鉴权信息,用于验证请求的合法性的请求头,Pic-Operations 头部需签入签名信息中,详情请参见 请求签名 文档。
<ObjectKey>:对象文件名,例如 folder/sample.jpg。
fileidObjectKey 相同时,处理后的图片将覆盖原图存储;不相同时将分别存储原图和处理后图片。

请求头

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

请求体

该请求的请求体为待处理的本地文件。

响应

响应头

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

响应体

响应体具体数据内容如下:
节点名称(关键字)
父节点
描述
类型
UploadResult
原图信息
Container
UploadResult 节点的内容:
节点名称(关键字)
父节点
描述
类型
OriginalInfo
UploadResult
原图信息
Container
ProcessResults
UploadResult
图片处理结果
Container
OriginalInfo 节点的内容:
节点名称(关键字)
父节点
描述
类型
Key
UploadResult.OriginalInfo
原图文件名
String
Location
UploadResult.OriginalInfo
图片路径
String
ImageInfo
UploadResult.OriginalInfo
原图信息
Container
ETag
UploadResult.OriginalInfo
图片的 ETag 值
String
ImageInfo 节点的内容:
节点名称(关键字)
父节点
描述
类型
Format
UploadResult.OriginalInfo.ImageInfo
格式
String
Width
UploadResult.OriginalInfo.ImageInfo
图片宽度
Int
Height
UploadResult.OriginalInfo.ImageInfo
图片高度
Int
Quality
UploadResult.OriginalInfo.ImageInfo
图片质量
Int
Ave
UploadResult.OriginalInfo.ImageInfo
图片主色调
String
Orientation
UploadResult.OriginalInfo.ImageInfo
图片旋转角度
Int
Md5
UploadResult.OriginalInfo.ImageInfo
图片的 MD5值
String
FrameCount
UploadResult.OriginalInfo.ImageInfo
图片的帧数。静态图为1,动图为对应的帧数
Int
BitDepth
UploadResult.OriginalInfo.ImageInfo
图片的位深度
Int
VerticalDpi
UploadResult.OriginalInfo.ImageInfo
图像水平方向的分辨率
Int
HorizontalDpi
UploadResult.OriginalInfo.ImageInfo
图像垂直方向的分辨率
Int
ProcessResults 节点的内容:
节点名称(关键字)
父节点
描述
类型
Object
UploadResult.ProcessResults
每一个图片处理结果
Container
Object 节点的内容:
节点名称(关键字)
父节点
描述
类型
Key
UploadResult.ProcessResults.Object
文件名
String
Location
UploadResult.ProcessResults.Object
图片路径
String
Format
UploadResult.ProcessResults.Object
图片格式
String
Md5
UploadResult.ProcessResults.Object
图片的 MD5值
String
Width
UploadResult.ProcessResults.Object
图片宽度
Int
Height
UploadResult.ProcessResults.Object
图片高度
Int
Size
UploadResult.ProcessResults.Object
图片大小
Int
Quality
UploadResult.ProcessResults.Object
图片质量
Int
FrameCount
UploadResult.ProcessResults.Object
图片的帧数。静态图为1,动图为对应的帧数
Int
BitDepth
UploadResult.ProcessResults.Object
图片的位深度
Int
VerticalDpi
UploadResult.ProcessResults.Object
图像水平方向的分辨率
Int
HorizontalDpi
UploadResult.ProcessResults.Object
图像垂直方向的分辨率
Int
ETag
UploadResult.ProcessResults.Object
图片的 ETag 值
String
CodeStatus
UploadResult.ProcessResults.Object
二维码识别结果。0表示未识别到二维码,1表示识别到二维码
Int
QRcodeInfo
UploadResult.ProcessResults.Object
二维码识别结果,可能有多个
Container
QRcodeInfo 节点的内容:
节点名称(关键字)
父节点
描述
类型
CodeUrl
UploadResult.ProcessResults.Object.QRcodeInfo
二维码的内容。可能识别不出
String
CodeLocation
UploadResult.ProcessResults.Object.QRcodeInfo
图中识别到的二维码位置坐标
Container
CodeLocation 节点内容:
节点名称(关键字)
父节点
描述
类型
Point
UploadResult.ProcessResults.Object.QRcodeInfo.CodeLocation
二维码坐标点
String

实际案例

请求

PUT /picture.png HTTP/1.1
Host: examplebucket-1250000000.cos.ap-chengdu.myqcloud.com
Date: Tue, 03 Apr 2018 09:06:15 GMT
Authorization:q-sign-algorithm=sha1&q-ak=****************&q-sign-time=1754615854;1754619454&q-key-time=1754615854;1754619454&q-header-list=&q-url-param-list=&q-signature=*******************
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.png</Key>
<Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/picture.png</Location>
<ETag>&quot;3824c0d430726c*************&quot;</ETag>
<VersionId>MTg0NDQ5ODgz*************</VersionId>
<ImageInfo>
<Md5>3824c0d43072****************</Md5>
<Format>PNG</Format>
<Width>2797</Width>
<Height>1448</Height>
<Quality>100</Quality>
<Ave>0x060e0</Ave>
<FrameCount>1</FrameCount>
<BitDepth>8</BitDepth>
<VerticalDpi>94</VerticalDpi>
<HorizontalDpi>94</HorizontalDpi>
</ImageInfo>
</OriginalInfo>
<ProcessResults>
<Object>
<Key>pircture.png</Key>
<Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/pircture.png</Location>
<Format>png</Format>
<Md5>24bba1d14*****************</Md5>
<Width>2797</Width>
<Height>1448</Height>
<Size>54879</Size>
<Quality>80</Quality>
<FrameCount>1</FrameCount>
<BitDepth>8</BitDepth>
<VerticalDpi>94</VerticalDpi>
<HorizontalDpi>94</HorizontalDpi>
<ETag>&quot;24bba1d1422e**********************&quot;</ETag>
<VersionId>MTg0NDQ5ODgz****************8</VersionId>
<CodeStatus>1</CodeStatus>
<QRcodeInfo>
<CodeUrl>http://example.com</CodeUrl>
<CodeLocation>
<Point>2043,975</Point>
<Point>2043,528</Point>
<Point>2488,528</Point>
<Point>2488,975</Point>
</CodeLocation>
</QRcodeInfo>
</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=************************************&q-sign-time=1497530202;1497610202&q-key-time=1497530202;1497610202&q-header-list=&q-url-param-list=&q-signature=****************************************
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>