1、产品简介
基于翻拍识别能力与多模态大模型元素定位构建的奶粉箱码图片审核产品,面向渠道巡检中的奶粉商品、外箱及箱码照片。产品输出非翻拍、翻拍或疑似翻拍结论,并定位可见奶粉商品、外箱与码区,为照片审核和人工复核提供结构化依据。
2、适用场景
箱码照片审核:检查门店或渠道上传的奶粉外箱照片是否存在翻拍风险。
奶粉陈列巡检:定位照片中可见的奶粉单品、整箱及清晰码区。
疑似样本复核:结合疑似状态、算法分值和定位框筛选需要人工核查的图片。
3、功能介绍
三态翻拍判断:photoStatus 为 0、1、2 时,分别表示非翻拍、翻拍、疑似翻拍;同步输出 isFake、isSuspect 和 score。
主体与码区定位:优先定位奶粉单品与外箱,补充清晰箱码、条码及二维码区域;没有箱码时仍可定位奶粉主体。
结果协同:元素定位补充可见目标,不改变翻拍识别结论;不解码二维码,也不提供商品真伪认证。
支持单张 HTTPS 图片输入;补充定位最多返回 12 个目标,每个目标包含类别、位置框和最多 24 字的可见文字,并通过 coverage 标明定位是否完整。
4、开发指南
本文请求和响应字段遵循对应搭建文档的实际大小写及结构。示例为业务工作流输入输出,不额外假设平台网关封装;对外调用地址、鉴权方式和网关封装应以实际发布接口为准。
4.1 请求参数
参数名 | 类型 | 必填 | 说明 |
imageUrl | String | 是 | 待识别原图的 HTTPS 地址;须可公开访问且能识别为有效图片,宽高均大于 0,不含空白或 URL 用户名密码 |
4.2 请求示例
{
"imageUrl": "https://example.com/images/api-01.jpg"
}示例图片地址和知识库标识(如有)为占位值,调用时替换为实际资源。
4.3 响应参数
通用字段:
字段路径 | 类型 | 说明 |
success | Boolean | 调用是否成功;有效业务结论不等于审核通过 |
errorCode | String | 成功为空字符串;失败为错误码 |
errorMessage | String | 成功为空字符串;失败为具体错误说明 |
result | Object | 业务结果;失败时为空对象 |
usageMap | Object | 成功为 {"ProcessingCount":1};失败为空对象 |
usageMap.ProcessingCount | Integer | 成功处理计数为 1;失败时该字段不返回 |
业务字段:
字段路径 | 类型 | 说明 |
result.type | String | 固定为 boxCode |
result.photoStatus | Integer | 0:非翻拍;1:翻拍;2:疑似翻拍 |
result.isFake | Boolean | 仅 photoStatus=1 时为 true |
result.isSuspect | Boolean | 仅 photoStatus=2 时为 true |
result.score | Number | 识别服务返回的有限数值;0 合法,不额外设置判断阈值;源文档未限定范围 |
补充定位字段:
字段路径 | 类型 | 说明 |
result.grounding | Object | 补充元素定位结果 |
result.grounding.coverage | String | complete:相关可见目标完整;partial:仅部分目标有效或可辨认 |
result.grounding.regions | Array | 目标数组,最多 12 项;没有相关目标时可为空 |
| result.grounding.regions[ ].label | String | 目标类别,枚举见下表 |
| result.grounding.regions[ ].bbox_2d | Integer[4] | [左上x,左上y,右下x,右下y];0–1000;左<右,上<下 |
| result.grounding.regions[ ].text | String | 最多 24 字的可确认短名称或文字;看不清时为空字符串 |
目标类别:
label | 含义 |
milk_powder | 奶粉商品 |
milk_powder_carton | 奶粉外箱 |
box_code | 箱码标签区域 |
barcode | 条码区域 |
qr_code | 二维码区域 |
坐标换算:横坐标像素值 = 横坐标 × 原图宽度 / 1000;纵坐标像素值 = 纵坐标 × 原图高度 / 1000。
定位仅有部分结果时可返回 success=true、coverage=partial。发生截断时,仅保留已完整解析的合法目标;删除无效框、去重、截短文字或超出目标数量限制也会标记 partial。合法空 regions 可成功,但不代表前置业务结果也允许为空。翻拍识别成功后,若补充定位服务失败、结果无法恢复或所有框均无效,仍返回翻拍业务结论,success=true,grounding 为 {"coverage":"partial","regions":[ ]},成功处理计数为 1。图片校验、翻拍识别等前置步骤失败时,仍返回整体失败。
4.4 响应示例
以下均为结构示例,非实测结果。
1)成功响应
{
"success": true,
"errorCode": "",
"errorMessage": "",
"result": {
"type": "boxCode",
"isFake": false,
"photoStatus": 0,
"score": 0.93,
"isSuspect": false,
"grounding": {
"coverage": "complete",
"regions": [
{
"label": "milk_powder",
"bbox_2d": [
100,
200,
300,
400
],
"text": "奶粉"
}
]
}
},
"usageMap": {
"ProcessingCount": 1
}
}2)补充定位仅返回部分结果
{
"success": true,
"errorCode": "",
"errorMessage": "",
"result": {
"type": "boxCode",
"isFake": false,
"photoStatus": 0,
"score": 0.93,
"isSuspect": false,
"grounding": {
"coverage": "partial",
"regions": [
{
"label": "milk_powder",
"bbox_2d": [
100,
200,
300,
400
],
"text": ""
}
]
}
},
"usageMap": {
"ProcessingCount": 1
}
}疑似翻拍响应
疑似翻拍为有效业务结论,success 仍为 true。
{
"success": true,
"errorCode": "",
"errorMessage": "",
"result": {
"type": "boxCode",
"isFake": false,
"photoStatus": 2,
"score": 0.62,
"isSuspect": true,
"grounding": {
"coverage": "complete",
"regions": [
{
"label": "milk_powder",
"bbox_2d": [
100,
200,
300,
400
],
"text": "奶粉"
}
]
}
},
"usageMap": {
"ProcessingCount": 1
}
}翻拍识别成功,但未获得有效定位结果
{
"success": true,
"errorCode": "",
"errorMessage": "",
"result": {
"type": "boxCode",
"isFake": false,
"photoStatus": 0,
"score": 0.93,
"isSuspect": false,
"grounding": {
"coverage": "partial",
"regions": [ ]
}
},
"usageMap": {
"ProcessingCount": 1
}
}参数错误响应
{
"success": false,
"errorCode": "InvalidParameter",
"errorMessage": "imageUrl 必须为有效的 HTTPS 图片地址",
"usageMap": {},
"result": {}
}处理失败响应
{
"success": false,
"errorCode": "DownstreamUnavailable",
"errorMessage": "未获得有效的翻拍识别结果",
"usageMap": {},
"result": {}
}4.5 错误码
错误码 | 含义 | 处理建议 |
InvalidParameter | 输入不合法或识别服务明确返回业务错误 | 根据 errorMessage 修正参数或业务输入后重新调用 |
DownstreamUnavailable | 鉴权、限流、超时、空响应、缺字段或解析等处理异常 | 根据 errorMessage 检查资源与服务状态;临时故障可稍后重试 |
应结合 success、errorCode、errorMessage 判断结果。源搭建文档未约定每类业务错误对应的 HTTP 状态码。平台公共错误码可参考错误码,本接口工作流错误码以上表为准。
5、计费方式
按成功处理次数计量:每次成功返回 usageMap={"ProcessingCount":1},失败返回 usageMap={}。具体单价待确认,以产品正式定价或合同约定为准;源搭建文档未提供单价。
有效业务结论(包括翻拍、疑似翻拍或非店面等适用结果)及可恢复的部分定位结果,均按成功处理计 1 次。