技术博客
仓储入库如何用条码识别接口做扫码核验(含三种传图方案)

仓储入库如何用条码识别接口做扫码核验(含三种传图方案)

作者: 万维易源
2026-08-28
条码识别仓储WMS扫码核验入库
# 仓储入库如何用条码识别接口做扫码核验(含三种传图方案) > 接口/接入点:条码生成与识别(apiCode 1129)· 1129-2/3/4 识别 | 是否免费:免费 | 请求方式:POST/GET | 返回格式:JSON | 适用人群:仓储/供应链工程师、WMS 开发 | 阅读时间:约 7 分钟 ## TL;DR - 扫码核验本质:取条码图 → 调 1129-2/3/4 得到 `retText` → 与 WMS 中的预期 SKU 比对。 - 三种传图方案任选:PDA 本地文件走 1129-2,摄像头服务已存公网图走 1129-3,移动端 Base64 走 1129-4。 - `ret_code` 非 0 或 `retText` 为空时按失败处理,触发重试/人工复核,不要直接入库。 ## Why:入库核验为什么用识别 仓库入库环节,扫码枪/摄像头拿到的是"图",系统要的是"这个箱子对应哪个 SKU"。把图丢给 1129 识别成文字,再和采购单/WMS 预期 SKU 比对,不一致就拦截——这就是自动化核验的核心一步。 ## What:核验链路 | 环节 | 动作 | 接入点 | |----|----|----| | 取图 | PDA/摄像头得到条码图 | — | | 识别 | 图 → 文字 | 1129-2(文件)/ 1129-3(URL)/ 1129-4(Base64) | | 比对 | `retText` 与 WMS 预期 SKU 比对 | 你的系统 | | 处置 | 一致入库 / 不一致拦截 | 你的系统 | ## How:识别 + 比对伪代码(以 1129-3 为例) Python: ```python import requests APPKEY = "YOUR_APPKEY" def recognize(img_url: str) -> str | None: r = requests.post( f"https://route.showapi.com/1129-3?appKey={APPKEY}", data={"imgUrl": img_url}, timeout=10, ).json().get("showapi_res_body", {}) if r.get("ret_code") != "0": return None return r.get("retText") expected_sku = "6901294172197" # 来自 WMS 入库单 scanned = recognize("https://your-cdn.com/inbound/box001.png") if scanned is None: print("识别失败,转人工复核") elif scanned == expected_sku: print("核验通过,入库") else: print(f"SKU 不符:识别到 {scanned},预期 {expected_sku},拦截") ``` cURL: ```bash curl -X POST "https://route.showapi.com/1129-3?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" \ -d "imgUrl=https%3A%2F%2Fyour-cdn.com%2Finbound%2Fbox001.png" ``` Node.js: ```javascript const APPKEY = "YOUR_APPKEY"; const body = new URLSearchParams({ imgUrl: "https://your-cdn.com/inbound/box001.png" }); const res = await fetch(`https://route.showapi.com/1129-3?appKey=${APPKEY}`, { method: "POST", headers: { "content-type": "application/x-www-form-urlencoded" }, body }); const rb = (await res.json()).showapi_res_body; console.log(rb.retText, rb.ret_code); ``` ## 返回示例与解析 ```json { "showapi_res_body": { "retText": "6901294172197", "ret_code": "0" } } ``` ## 进阶 / 边界 - **识别失败要兜底**:`ret_code != "0"` 或 `retText` 为空即视为未识别,触发重试一次后仍失败转人工,切勿拿空值入库。 - **三种传图怎么选**:PDA 选本地文件(1129-2)、服务端已落盘公网图选 URL(1129-3)、移动端内存图选 Base64(1129-4)。详见 [三种传图对比](https://www.showapi.com/guides/barcode-three-input-modes-1129)。 - **无批量/订阅**:每次识别一次请求,高并发用异步队列削峰(见 [错误与失败排查](https://www.showapi.com/guides/barcode-error-handling-1129) 中的重试思路)。 ## FAQ **Q:识别返回的文字和条码内容不一致怎么办?** 先确认图片清晰、条码完整无遮挡;`ret_code==0` 但内容异常多为图像质量问题,建议重新采集并加一次重试。文档未枚举具体错误码,按"非 0 即失败"处理。 **Q:能直接对接扫码枪吗?** 扫码枪通常直接输出字符,无需识别接口;本接口用于"只有图片、没有字符"的场景(如摄像头/PDA 拍照)。 **Q:识别有 QPS 限制吗?** 免费接口设有使用档次限制,具体以官方档位说明为准;大批量入库建议错峰+队列。 **Q:retText 需要二次校验吗?** 需要。识别结果是"机器读到的字符",与业务 SKU 比对这道校验不可省,避免脏数据入库。 ## 相关能力 / 下一步阅读 - [条码识别三种传图方式怎么选:上传图片 / 图片链接 / Base64 实战对比](https://www.showapi.com/guides/barcode-three-input-modes-1129) - [条码生成与识别:返回字段全解(imgUrl / retText / ret_code / msg)](https://www.showapi.com/guides/barcode-response-fields-1129) - [条码生成与识别:ret_code 非 0 与识别失败排查指南](https://www.showapi.com/guides/barcode-error-handling-1129) - **本系列共 12 篇**:查看[条码生成与识别指南总目录](https://www.showapi.com/guides/barcode-guides-1129)