UDI / 条码生成
「医疗器械 UDI 生成工具」网页的码生成能力移植成了本地 CLI,支持三种码:
| 类型 | 说明 |
|---|---|
udi |
GS1 DataMatrix ECC200 二维码(NMPA UDI,默认 24×24 点阵,与网页一致) |
codabar |
库德巴码(一维,自动加起止符,默认 A…B) |
gs128 |
GS1-128 条码(一维,AI 分隔与 mod-103 校验自动处理) |
GTIN 自动校验/补全(13 位自动补校验位、14 位校验)、日期自动归一化(2026-09-30 / 2026/9/30 / 2026年9月30日 / Excel 序列号 → (11)(17) 的 YYMMDD)。
运行
> 路径说明:下文示例中的 skill 目录按 Claude Code 约定写作 ~/.claude/skills/udi-codegen。其他客户端请替换为实际的 skill 安装目录(如 WorkBuddy 为 ~/.workbuddy/skills/udi-codegen)。
依赖为 bwip-js / xlsx / jszip。本地开发时已随 skill 打包在 scripts/node_modules,可直接调用;若通过技能市场安装、包内不含 node_modules,先安装一次依赖:
cd <skill 目录>/scripts && npm install
统一入口(建议用绝对路径):
node ~/.claude/skills/udi-codegen/scripts/codegen.js <命令> [选项]
模式一:Excel/CSV → 追加码列
node ~/.claude/skills/udi-codegen/scripts/codegen.js excel "输入.xlsx" [--type udi|codabar|gs128|auto] [--out 输出.xlsx]
- 不修改原文件,生成新 Excel(默认:源文件名 +
-UDI/-库德巴/-GS1-128.xlsx,与源文件同目录)。 - 在原表所有列之后追加两列:码文本列(如「UDI 码」)+ 嵌入的码图片列(如「UDI 图片」);图片列加宽、对应行加高。
- 数据无效的行保留、码列留空,并在汇总里提示;常见原因:GTIN 校验失败、批号/序列号含中文或空格、日期无法识别。
- UDI 默认 24×24 点阵;个别行数据超出容量时自动改用自适应点阵并在汇总提示(显式
--size指定则不回退)。 --no-images只加文本列;--titles "文本列,图片列"自定义列名。
模式二:文字 → 码图片
node ~/.claude/skills/udi-codegen/scripts/codegen.js text "文本" --type udi|codabar|gs128 [--out a.png] [--format svg]
- udi:传完整 GS1 数据串
(01)0690…(17)290630(10)…;或 13/14 位 GTIN;或结构化字段:
--gtin 06901234567892 --prod 2026-09-30 --exp 2029-06-30 --lot LOT2026A --serial SN1 --addid XXX - codabar:数据仅限数字 0-9 与
- $ : / . +,自动拼 A…B 起止符(--start/--stop可改)。 - gs128:传
(AI)数据串,如(01)06901234567892(17)290630(10)LOT2026A。 - 脚本会打印编码内容(最终码里的数据串),回复时需把它和图片路径一起转述给用户。
模式三:表格截图 → Excel + 码列
- 用 Read 工具查看截图,识别表头和每行数据(留意合并单元格、多行表头、日期写法)。
- 把表格写成 UTF-8(带 BOM)CSV:列与截图一一对应;GTIN 保持原样(含前导 0,脚本会按文本处理);日期规范成
YYYY-MM-DD。 - 运行模式一处理该 CSV,
--out给出输出路径。 - 向用户报告:输出文件完整路径、识别出的码类型、成功/跳过行数;如有跳过行,说明原因。
自动识别规则(默认 --type auto)
按优先级:
- 多列表头含 GTIN(GTIN/商品条码/商品标识/全球贸易项目/01)→ udi
- 多列表头含其他 UDI 关键词(生产日期/失效日期/批号/序列号/附加产品标识)或数字 AI 码(01/11/17/10/21/240/30…)→ 无 GTIN 时 gs128
- 单列:值为完整 GS1 串
(01)…→ udi(DataMatrix);值是 13/14 位数字 → udi(按 GTIN 列);否则 → codabar
识别结果与用户意图不符时(如要一维条码却识别成 udi),显式加 --type 覆盖。单列 GS1 串文件也可 --type gs128 生成一维条码。
其他选项
| 选项 | 说明 | 默认 |
|---|---|---|
--sheet <名\|序号> |
选择工作表 | 第一个 |
--scale <n> |
缩放 | UDI 5,一维 2 |
--padding <n> |
边距 px | 5 |
--size <WxH\|auto> |
DataMatrix 点阵 | 24x24(auto 为自适应) |
--height <px> |
一维条码条高 | 60 |
--bar/--bg <hex> |
前景/背景色 | 000000 / ffffff |
输出约定
- 完成后向用户报告:完整输出路径、码类型、成功/跳过行数、新增列名。
- 有失败行时列出原因类别(GTIN 校验、字符集、日期格式),提醒核对源数据。
- 码内容遵循 GS1/NMPA 标准;正式申报前建议用专业扫码设备复核(与网页工具相同的合规提示)。