You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解析带有应用标识符的2D条码扫描返回数据?

解析GS1 2D条码字段的方案

核心逻辑:基于应用标识符(AI)的规则解析

你遇到的是GS1标准的2D条码(如DataMatrix、GS1 QR Code),这类条码的结构是应用标识符(AI)+对应数据的串联,可变长度字段会用FNC1字符(ASCII值29,通常显示为GS)作为分隔符。针对你给出的示例0112345678901234112207281012345,拆解步骤如下:

1. 明确目标AI的长度规则

先梳理你用到的几个AI的固定/可变长度规则:

  • 01:对应GTIN(产品编码),固定14位数据,AI+数据总长度为16位
  • 11:对应生产日期,固定6位(格式为YYMMDD),AI+数据总长度为8位
  • 10:对应批号,可变长度(最多20位),若为条码最后一个字段则无需FNC1;若后续还有字段,会用FNC1分隔

2. 分步解析示例字符串

以你的示例条码字符串为例,逐段拆解:

  • 第一步:从开头截取01,其后14位12345678901234即为产品编码
  • 第二步:剩余字符串为112207281012345,截取开头11,其后6位220728即为生产日期(对应2022年7月28日)
  • 第三步:剩余字符串为1012345,截取开头10,其后所有内容12345即为批号

3. 处理带FNC1的多字段场景

如果条码包含更多字段,可变长度AI(如10批号)后会跟随FNC1分隔下一个AI。例如字符串011234567890123410ABCDEGS11220728(GS代表FNC1):

  • 解析完01对应的产品编码后,剩余字符串为10ABCDEGS11220728
  • 读取10后,遇到GS停止,得到批号ABCDE
  • 跳过GS,继续解析11对应的生产日期220728

4. 代码实现思路(伪代码)

def parse_gs1_barcode(barcode_str):
    parsed_result = {}
    current_index = 0
    total_length = len(barcode_str)
    
    while current_index < total_length:
        # 读取2位AI(你用到的AI均为2位,若涉及其他AI需调整长度判断)
        ai = barcode_str[current_index:current_index+2]
        current_index += 2
        
        if ai == '01':
            # GTIN固定14位
            data = barcode_str[current_index:current_index+14]
            parsed_result['产品编码(GTIN)'] = data
            current_index += 14
        elif ai == '11':
            # 生产日期固定6位
            data = barcode_str[current_index:current_index+6]
            parsed_result['生产日期'] = data
            current_index += 6
        elif ai == '10':
            # 批号:读到字符串结尾或FNC1(ASCII 29)为止
            fnc1_pos = barcode_str.find(chr(29), current_index)
            if fnc1_pos == -1:
                fnc1_pos = total_length
            data = barcode_str[current_index:fnc1_pos]
            parsed_result['批号'] = data
            current_index = fnc1_pos + (1 if fnc1_pos != total_length else 0)
    
    return parsed_result

# 测试示例条码
test_barcode = "0112345678901234112207281012345"
print(parse_gs1_barcode(test_barcode))

额外建议

优先检查你的扫描器配置:部分专业条码扫描器支持直接配置AI解析规则,扫描后自动输出带分隔符(如逗号)的字段内容,无需自行开发解析逻辑,这是最高效的方案,可查看扫描器说明书或配置工具确认。

内容的提问来源于stack exchange,提问作者Schlem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 12:33:19