前言
前段时间在做内部跨境业务系统,碰到一个很实在的需求。
我们手上有大量来自 Mercado‑Libre(美客多)的商品样本,只有图片和基础标题。业务希望通过这些商品,反向溯源找到国内 1688 的货源,拿到采购价、SKU、供应商信息,用来做内部成本评估、竞品供应链调研。
一开始团队有两个思路: 第一种,自己做图像检索。自己提取图片特征、建向量库。评估下来,训练、调参、维护图库成本太高,效果远不如成熟大厂接口,直接放弃。 第二种,直接调用 1688 开放平台图片搜索 API,复用平台已经训练好的图像识别能力。
于是就走上了调接口、排 bug 的日子,中间踩了不少之前文档没写的坑,整理记录下来。
整体业务流程
整个链路其实不复杂,但每一步都容易埋坑:
美客多商品公开图片 → 图片预处理(转格式、去干扰、压缩大小)
→ 请求1688图片搜索API,拿到一批相似商品与相似度分数
→ 根据相似度阈值过滤无效结果,拿到候选商品ID
→ 再调用商品详情接口获取真实SKU、价格、规格参数
→ B2B批发数据清洗转换 → 结构化入库,作为内部数据源
重点提醒:图片搜索接口返回的只是摘要信息,价格、库存不准。必须二次调用商品详情接口拿完整数据,不能直接用图搜返回结果。
一、图片预处理:决定匹配成功率最关键的一步
最让我意外的是,接口本身不难,图片处理才是影响匹配好坏的核心。
直接把美客多下载的原图丢进去,经常召回一堆毫不相干的商品。经过反复调试,定下几条处理规则:
格式统一转为 JPG/PNG。WebP 格式传入后匹配效果很差,尽量不要直接提交。
文件大小控制在 2MB 以内,过大图片直接报 413 请求超限。
尽量裁剪出商品主体,多余背景、装饰物、图中外文水印文字,尽量做去除,减少对图像特征的干扰。
调用支持两种传参:公网图片 URL、Base64。
踩坑记录:Base64 不要带上 data:image/jpg;base64,前缀,带前缀直接检索失败,官方文档没有着重强调,在这里耗了大半天。实测优先使用图片 URL 方式,稳定性高于 Base64。
二、数据入库,做一层 B2B 到业务模型转换
拿到完整数据,不能原样入库,需要做简单加工:
数据库保存原始图片地址、1688 商品 ID、相似度分数,方便后续排查匹配错误案例。
区分阶梯批发价和代发参考价,预留汇率、物流、成本计算字段,服务内部测算。
解析 SKU 规格字符串,把颜色、尺码转为结构化字段存储。
1688 图片链接只做数据源参考,业务使用必须下载转存自有对象存储,禁止直接引用外部 CDN。
增加缓存:图片检索结果缓存 24 小时,避免相同图片重复消耗接口额度;价格库存变化快,设置短缓存,定时任务刷新。
三、项目里遇到的真实问题复盘
权限显示已开通,但调用返回空数据 权限存在生效延迟;也有可能图片干扰元素太多,识别不到商品主体。
相似度很高,实际却不是同款 图像检索只比对视觉特征,外观近似不等于实物一致。算法只能做初筛,系统一定要保留复核逻辑,不能全自动化。
批量跑任务很快就 429 限流 禁止同步循环调用。改用 Redis 异步队列,限流报错做指数退避重试。一旦被限制,恢复周期比较长。
Base64 各种报错 去掉 data 协议头,做好转义;优先选择图片 URL 参数模式。
图搜价格和详情接口价格对不上 图搜返回为摘要展示字段,没有参考价值,务必二次请求商品详情接口。
四、客观看待这套方案的局限
这套方案解决的是货源溯源调研,不是拿来直接自动刊登上架。实际落地有不少短板:
存在误召回,视觉相似≠商品相同,算法不能完全信任。
接口有调用成本,大批量样本需要评估调用量。
只完成货源匹配,类目映射、翻译、图片处理、刊登都还需要单独开发。
五、后续迭代想法
结合文本相似度:把美客多标题翻译后的关键词,和 1688 商品标题做比对,图文双重校验,降低误匹配。
统计空检索、低相似度日志,持续优化图片预处理逻辑。
增加监控:鉴权失败、限流、大批量空结果时抛出告警。
结尾
这个需求跑通之后,确实提升了我们供应链调研的效率。 但整个项目最大感受是:图像 API 难点往往不在调用本身,而是图片预处理、结果校验、限流控制这些工程细节。希望这篇踩坑记录,能给做同类跨境后端开发的同学一点参考。本文仅作技术学习交流。