条码与二维码基础术语
二维码(QR Code)
全称 Quick Response Code(快速响应码),是由日本 Denso Wave 公司的原昌宏(Masahiro Hara)于 1994 年发明的一种矩阵式二维条码。QR Code 通过在正方形区域内排列黑色和白色的模块(小方块)来编码数据,支持数字、字母数字、二进制和 Kanji(日文汉字)四种数据模式。其最显著的特点是具有三个角落的定位图案(Finder Pattern),使得扫描器可以从任意角度快速定位并读取码内容。QR Code 支持最多 7,089 个数字或 4,296 个字母数字字符的编码容量,并提供 L、M、Q、H 四个纠错等级,最高纠错等级下即使码体损毁 30% 仍可正确读取。
Data Matrix
Data Matrix 是一种矩阵式二维条码,由美国国际资料公司(International Data Matrix,简称 IDM)于 1989 年发明。它由交替的黑色和白色模块组成,具有两条相邻的实线边(称为"定位边")和两条交替的虚线边(称为"时钟边"),用于帮助扫描器定位和校正码的方向。Data Matrix 的特点是能够在极小的尺寸内编码大量数据(最多 2,335 个字母数字字符或 3,116 个数字),因此被广泛应用于电子元件、医疗器械、航空航天零件等小型物品的标识。ECC 200 是目前最常用的 Data Matrix 版本,使用 Reed-Solomon 纠错算法。
PDF417
PDF417 是一种堆叠式(或多行)二维条码,由 Symbol Technologies 公司的 Dr. Ynjiun P. Wang 于 1988 年发明。"PDF"是 Portable Data File(便携式数据文件)的缩写,"417"则表示每个符号由 4 个条和 4 个空组成,每个符号的宽度为 17 个模块。PDF417 可以编码大量的文本、数字和二进制数据(最多 1,850 个文本字符或 2,710 个数字),并支持用户自定义的纠错等级。它常用于登机牌、身份证件(如美国各州的驾照)、快递面单、税务发票等场景。
Aztec Code
Aztec Code 是由 Andrew Longacre 设计、Hand Held Products 公司于 1995 年发布的一种矩阵式二维条码。其独特之处在于中心位置有一个类似"金字塔"的定位图案(因此得名 Aztec),不需要像 QR Code 那样在四周留有空白区域(静区),因此可以在更紧凑的空间内使用。Aztec Code 支持最多 3,832 个数字或 3,067 个字母数字字符,纠错能力从 5% 到 95% 可调。它广泛应用于交通票务(如航空登机牌、火车票)、身份证件和需要紧凑标识的应用场景。
一维码术语
EAN-13 / EAN-8
EAN(European Article Number,欧洲商品编码,现称 International Article Number)是国际通用的商品条码标准,由 GS1 组织管理。EAN-13 由 13 位数字组成,前 3 位为国家/地区代码,接下来 4 位为厂商代码,再接下来 5 位为产品代码,最后 1 位为校验码。EAN-8 是 EAN-13 的缩短版本,仅包含 8 位数字,适用于包装面积较小、无法放置 EAN-13 条码的商品。EAN-13 条码在全世界超过 100 个国家和地区使用,是零售业中最常见的条码标准。
UPC-A / UPC-E
UPC(Universal Product Code,通用产品代码)是北美地区最早广泛使用的商品条码标准,由 IBM 的 George J. Laurer 于 1973 年设计。UPC-A 由 12 位数字组成,包括系统数字、厂商代码、产品代码和校验码。UPC-E 是 UPC-A 的零压缩版本,通过省略 UPC-A 中的前导零将 12 位压缩为 8 位,适用于小面积包装。UPC-A 和 EAN-13 在全球范围内可以互换使用——UPC-A 条码可以通过在前面加零转换为 EAN-13 格式。
Code 128
Code 128 是一种高密度一维条码,能够编码全部 128 个 ASCII 字符(包括大小写字母、数字、标点符号和控制字符)。它由 Computer Identics 公司于 1981 年推出,是目前物流、供应链和制造业中使用最广泛的条码标准之一。Code 128 有三个字符集(A、B、C),分别针对不同的数据类型进行了优化:字符集 A 包含大写字母和控制字符,字符集 B 包含大小写字母和常用标点,字符集 C 专门用于纯数字编码(每条可编码两位数字,数据密度最高)。
Code 39
Code 39 是最早期的字母数字混合编码条码标准之一,由 Intermec 公司的 Dr. David Allais 和 Lawrence Reimer 于 1975 年发明。Code 39 使用 9 个元素(5 个条和 4 个空)来表示每个字符,其中 3 个是宽元素(因此得名 Code 3 之 9)。它支持大写字母、数字、空格和 7 个特殊字符(- . $ / + % *)。Code 39 的特点是每个字符独立编码,无需额外的字符集切换机制,因此编码规则简单、通用性强。它广泛应用于国防、医疗和汽车行业。
Code 93
Code 93 是 Code 39 的改进版本,由 Intermec 公司于 1982 年推出。它同样使用 9 个元素来表示每个字符,但通过更高效的编码方案使数据密度比 Code 39 提高了约 25%。Code 93 支持全部大写字母、小写字母、数字和 7 个特殊字符,并内置两个校验字符(C 和 K 校验码),具有比 Code 39 更强的错误检测能力。
Codabar(NW-7)
Codabar 是一种早期开发的一维条码,最早由 Pitney Bowes 公司于 1972 年推出,曾被称为 NW-7、USD-4、Code 2 of 7 等名称。它使用 4 个条和 3 个空来编码每个字符,支持数字 0-9、6 个特殊字符(- $ : / . +)以及 4 个起始/终止字符(A、B、C、D)。Codabar 因其简单可靠的特性,曾广泛应用于图书馆管理系统、血库系统、FedEx 快递标签和摄影冲洗订单等场景。目前在新系统中已较少使用,但在一些旧系统中仍然存在。
ITF(Interleaved 2 of 5)
ITF(Interleaved 2 of 5,交叉二五码)是一种纯数字的一维条码格式,由 Rafael Tralli 于 1972 年设计。它采用"交叉"编码方式——第一个字符由 5 个条编码(其中 2 个为宽条),第二个字符由 5 个空编码(同样 2 个为宽空),条和空交替出现。由于采用交叉编码,ITF 的数据密度是标准 2 of 5 码的两倍,但它要求编码的数字位数必须为偶数。ITF 广泛应用于物流包装箱外的标识(如纸箱上的 14 位物流码 ITF-14)。
技术实现术语
WebAssembly(Wasm)
WebAssembly 是一种可移植的二进制指令格式,由 W3C(万维网联盟)标准化,旨在为 Web 应用提供接近原生代码的执行性能。它作为 C/C++/Rust 等系统级编程语言的编译目标,使得原本只能在桌面或嵌入式环境中运行的高性能算法(如条码识别库)可以在浏览器中高效执行。在离线扫码器中,WebAssembly 用于将 ZXing 等成熟的条码识别库编译为可在浏览器中运行的模块,从而实现客户端的高性能条码解码。
MediaDevices API
MediaDevices API 是 Web API 的一部分,提供了访问用户媒体输入设备(如摄像头、麦克风)的接口。核心方法 getUserMedia() 允许网页向用户请求摄像头或麦克风的访问权限。用户授权后,该方法返回一个 MediaStream 对象,网页可以将其绑定到 <video> 元素上实时显示视频流,也可以通过 Canvas 截取视频帧进行进一步处理。在离线扫码器中,MediaDevices API 被用于获取摄像头视频流并逐帧提取图像数据进行条码检测。
Canvas API
Canvas API 是 HTML5 提供的一套用于在网页上进行图形绘制的 API。它通过一个 <canvas> HTML 元素提供了一个像素级的绘图上下文(2D 或 WebGL),开发者可以在上面绘制图形、文本、图像以及进行像素操作。在离线扫码器中,Canvas API 有两个核心用途:一是将摄像头视频流的每一帧绘制到 Canvas 上以获取像素数据(通过 getImageData() 方法),二是将用户上传的图片绘制到 Canvas 上以提取用于条码解码的像素信息。
localStorage
localStorage 是 Web Storage API 提供的一种客户端键值对存储机制。它允许网页在用户的浏览器中存储字符串类型的键值对数据,数据容量通常为 5-10MB(因浏览器而异),且数据不会在浏览器标签页关闭后被清除(除非用户主动清除浏览器数据)。与 sessionStorage 不同的是,localStorage 的数据在同一域名下的所有标签页之间共享。在离线扫码器中,localStorage 被用于持久化存储扫描历史记录,使得用户关闭页面后重新打开时仍能查看之前的扫描记录。
Clipboard API
Clipboard API 是现代 Web API 的一部分,提供了对系统剪贴板的读写能力。它取代了早期的 document.execCommand('paste') 等旧式接口,提供了更安全、更简洁的异步操作方式。核心方法包括 navigator.clipboard.readText()(读取剪贴板文本)、navigator.clipboard.writeText()(写入剪贴板文本)以及 navigator.clipboard.read()(读取剪贴板中的多种数据类型,包括图片)。在离线扫码器中,Clipboard API 被用于两个场景:一是将扫描结果复制到剪贴板,二是读取用户粘贴的二维码图片进行识别。
Reed-Solomon 纠错
Reed-Solomon 纠错码是一种广泛应用于数据存储和通信领域的纠错编码方案,由 Irving S. Reed 和 Gustave Solomon 于 1960 年提出。在条码领域,Reed-Solomon 被用于 QR Code、Data Matrix、PDF417、Aztec Code 等多种二维码标准中。其原理是在编码数据中添加冗余校验信息,使得即使部分码体被污损或遮挡,扫描器仍能通过纠错算法恢复原始数据。纠错能力用"纠错等级"表示,例如 QR Code 的 H 级纠错可以在码体损毁不超过 30% 的情况下正确读取全部数据。
UD5工具箱