技术博客
图书与档案管理:ISBN 条码生成与扫码借还方案

图书与档案管理:ISBN 条码生成与扫码借还方案

作者: 万维易源
2026-08-28
图书管理ISBN书标扫码借还档案
# 图书与档案管理:ISBN 条码生成与扫码借还方案 > 接口/接入点:条码生成与识别(apiCode 1129)· 1129-1 生成、1129-2/3/4 识别 | 是否免费:免费 | 请求方式:POST/GET | 返回格式:JSON | 适用人群:图书馆/档案管理员、信息化工程师 | 阅读时间:约 6 分钟 ## TL;DR - 图书 ISBN 多为 13 位,用 `formatType=2`(EAN_13)生成书标条码。 - 借还时由读者证/图书条码经 1129-2/3/4 识别成文字,与系统记录比对。 - 生成图片 12h 过期,书标须落盘打印,不要直接用 `imgUrl`。 ## Why:图书与档案的刚需 图书馆借还、档案流转都依赖条码:每本书一个 ISBN 书标、每个读者一张证条码。过去要专门条码软件出标、扫码枪采集;用 1129 接口,书标可在后台按 ISBN 批量生成,借还时把"图"识别成"号",和馆藏系统联动。 ## What:方案构成 | 环节 | 动作 | 接入点 | |----|----|----| | 出书标 | ISBN → EAN_13 条码图 → 落盘打印 | 1129-1(formatType=2) | | 借还识别 | 图书/读者条码图 → 文字 | 1129-2/3/4 | | 业务比对 | 识别文字与馆藏/读者库比对 | 你的系统 | ## How:按 ISBN 批量生成书标(Python) ```python import requests, os APPKEY = "YOUR_APPKEY" os.makedirs("booklabels", exist_ok=True) isbns = ["9787111111111", "9787123456789"] # 13 位 ISBN for isbn in isbns: r = requests.post( f"https://route.showapi.com/1129-1?appKey={APPKEY}", data={"content": isbn, "formatType": "2", "width": "160", "height": "60"}, timeout=10, ).json().get("showapi_res_body", {}) if r.get("ret_code") != "0" or not r.get("imgUrl"): print("生成失败:", isbn, r); continue img = requests.get(r["imgUrl"], timeout=10).content with open(f"booklabels/{isbn}.jpg", "wb") as f: f.write(img) # 落盘打印,规避 12h 过期 print("书标已生成:", isbn) ``` 识别(以读者证图片链接为例): ```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%2Freader%2Fcard001.png" ``` Node.js(识别): ```javascript const APPKEY = "YOUR_APPKEY"; const body = new URLSearchParams({ imgUrl: "https://your-cdn.com/reader/card001.png" }); const res = await fetch(`https://route.showapi.com/1129-3?appKey=${APPKEY}`, { method: "POST", headers: { "content-type": "application/x-www-form-urlencoded" }, body }); console.log((await res.json()).showapi_res_body.retText); ``` ## 返回示例与解析 生成: ```json { "showapi_res_body": { "imgUrl": "http://app2.showapi.com/img/barCodeImg/20160930/xxxx.jpg", "ret_code": "0" } } ``` 识别: ```json { "showapi_res_body": { "retText": "9787111111111", "ret_code": "0" } } ``` ## 进阶 / 边界 - **ISBN 与 EAN_13**:13 位 ISBN 直接作为 `content` 用 `formatType=2` 即可;确保位数正确,否则生成失败。 - **落盘打印**:书标是长期实体介质,必须用落盘图印刷,原 `imgUrl` 12h 后失效。 - **读者证格式**:证上条码类型需与识别能力匹配(13 种格式之一),详见 [13 种格式对照](https://www.showapi.com/guides/barcode-format-types-1129)。 ## FAQ **Q:10 位老 ISBN 能直接生成吗?** EAN_13 通常对应 13 位 ISBN;10 位需先转换为 13 位再生成,避免位数不匹配导致失败。 **Q:一张图里同时有书标和索书号,能一次识别吗?** 文档未说明支持单图多条码返回;建议书标与索书号分区或分两次识别,以实际返回为准。 **Q:识别结果要校验吗?** 要。识别到的文字需与馆藏/读者库比对,一致才执行借还,避免脏数据。 **Q:书标打印模糊扫不出怎么办?** 提高 `width/height` 取值(在 95–500 / 20–120 范围内)、保证打印分辨率;识别失败处理见 [错误排查指南](https://www.showapi.com/guides/barcode-error-handling-1129)。 ## 相关能力 / 下一步阅读 - [条码生成图片 12 小时过期:缓存与本地落盘保存策略](https://www.showapi.com/guides/barcode-image-expiry-1129) - [条码生成与识别:13 种条码格式(formatType)对照与选型指南](https://www.showapi.com/guides/barcode-format-types-1129) - [条码识别三种传图方式怎么选:上传图片 / 图片链接 / Base64 实战对比](https://www.showapi.com/guides/barcode-three-input-modes-1129) - **本系列共 12 篇**:查看[条码生成与识别指南总目录](https://www.showapi.com/guides/barcode-guides-1129)