gpt4 book ai didi

android - 从扫描的GS1型条形码中提取信息

转载 作者:行者123 更新时间:2023-11-29 14:24:21 24 4
gpt4 key购买 nike

我正在Android Studio上开发一个应用程序,以在扫描条形码时获取商品的到期日期。

我不希望用户单独安装ZXing条形码应用程序,因此我将ZXing代码嵌入到我的项目中。这样做,我已经可以获得产品标识符。

我还想使用扫描的条形码数据获取产品信息,例如描述,制造商和有效期。我怎样才能做到这一点?

最佳答案

获取由以GS1应用程序标识符标准格式存储数据的GS1型条形码表示的信息涉及两个过程。


提取通过扫描符号获得的GS1结构化数据中包含的数据字段(称为应用程序标识符)。它始终包含称为GTIN-14的商品的唯一标识符,并且可能包含补充信息,例如有效期,批号等。
此过程可以由独立的应用程序执行。
在应用程序本地或通过某些公共API在数据库中查找提取的GTIN,以提供原产国,制造商以及可能的物料说明的文本表示。
为了全面执行此过程,应用程序需要访问外部资源。


背景:GS1应用程序标识符标准格式组成

GS1格式的数据由一系列的应用程序标识符(AI)和值组成,以AI(01)开头,代表GTIN。

例如,数据“(01)95012345678903(10)000123(17)150801”表示以下信息:

GTIN:             95012345678903
BATCH/LOT: 000123
USE BY OR EXPIRY: 1st August 2015


第3节:GS1应用程序标识符 GS1 General Specifications的定义提供了每个应用程序标识符的含义,重要的是还声明了AI值是按定义的可变长度还是固定长度,在这种情况下,提供了强制长度。

GS1条形码使用特殊的非数据字符(FNC1)既表明数据符合GS1 Application Identifier标准格式,又从下一个AI划定了可变长度数据字段的结尾。例如,以上数据可以用Code 128符号编码为 {FNC1}019501234567890310000123{FNC1}17150801,以产生以下GS1-128符号:

GS1-128: (01)95012345678903(10)000123(17)150801

当条形码扫描仪读取该符号时,其解码方式如下[†]:

019501234567890310000123{GS}17150801


请注意,最初的FNC1非数据字符已被丢弃,可变长度AI分隔符角色中使用的FNC1已由GS字符(ASCII值29)表示。

提取(以及可选的验证)

您可以直接通过应用程序提取GTIN和任何补充信息。

要从条形码扫描仪的解码GS1符号数据中提取原始应用程序标识符数据,需要您的应用程序包含一个数据结构,我们将其称为 AI-TABLE,将AI模式映射到其值的长度,这些模式是从提供的数据中得出的上面链接到的GS1一般规格部分:

AI     | N (value length)
-------------------------
(00) | 18
(01) | 14
(10) | variable
(17) | 6
(240) | variable
(310n) | 6
(37) | variable
...


有了这个功能,您可以按照以下步骤从扫描的条形码数据中提取AI值:

while more data:
AI,N = Entry from AI-TABLE matching a prefix of the data, otherwise FAIL.

if N is fixed-length:
VALUE = next N characters
else N is variable length:
VALUE = characters until "GS" or end of data

emit: (AI) VALUE


实际上,您可以选择在 AI-TABLE中包含来自“通用规范”的更多数据,以允许您的应用程序对每个 VALUE的类型和长度执行增强的验证。但是,以上内容足以提取给定的数据,例如代表您正在寻找的到期日期的AI(17)。

抬头

要获取您感兴趣的剩余数据(未直接编码在条形码中)(例如商品名称和制造商详细信息),需要您使用外部资源(例如本地产品数据库或公共数据库)查找提取的GTIN可用的UPC数据库API。

GTIN本身包含一个原产国(实际上,它代表制造商在其注册的国家GS1成员组织,因此不是原产国),制造商标识符-一起被称为GS1前缀,长度可变且由GS1分配–其余的数字代表由制造商自由分配的产品代码。

给定GTIN,某些UPC数据库将仅提供与GS1前缀有关的详细信息,例如GS1成员组织和制造商的文本表示形式。其他人则尝试维护对常见项目的单个GTIN分配的记录,但是由于没有强制性的实时GTIN分配注册表,因此该数据总是有些不完整且过时。

this question的答案提供了免费产品信息平台的一些示例。

[†]实际上,您可能会看到 ]C1019501234567890310000123{GS}17150801,在这种情况下,可以丢弃GS1-128 ]C1的前导符号标识符。

关于android - 从扫描的GS1型条形码中提取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31738539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com