ToolAct工具行动

条形码解码器

在线识别和解码条形码图片,支持CODE128、EAN-13、CODE39等格式,拖拽上传、粘贴图片,纯浏览器端处理保护隐私

上传条形码图片

拖拽条形码图片到此处

支持 PNG、JPG、GIF、BMP、WebP 等常见图片格式

也可以使用 Ctrl+V 粘贴剪贴板中的图片

什么是条形码解码器?

条形码解码器是一种将条形码图片还原为原始内容的技术工具。通过上传包含条形码的图片,系统会自动识别并解码其中存储的数字或文本信息。支持 CODE128、EAN-13、EAN-8、CODE39、UPC-A、UPC-E、Codabar、ITF 等多种常见一维条形码格式,同时兼容 QR Code、Data Matrix、PDF417、Aztec 等二维码格式。本工具完全在浏览器端运行,图片不会上传到任何服务器,确保您的隐私安全。

使用方法

使用步骤

  1. 点击上传区域选择条形码图片,也可将图片直接拖放到该区域
  2. 您也可以使用 Ctrl+V(Mac 上为 Cmd+V)从剪贴板粘贴图片
  3. 工具会自动识别并解码条形码内容
  4. 解码结果会显示在下方,包含条形码格式与内容类型
  5. 点击「复制结果」按钮复制解码内容;如果是链接,可直接打开

解码提示

  • 请使用清晰、高对比度且条形码完整的图片;模糊、反光、裁剪以及明显的透视变形都会降低识别准确率。
  • 解码得到 URL 或产品代码时,请先核对目标地址或标识符,再用于正式记录。

使用场景

无需扫码枪即可读取条形码图片中的内容上传、拖入或粘贴图片,页面会在浏览器中调用 ZXing 解码常见的零售、物流和二维码格式,包括 EAN、UPC、Code 128、Code 39、ITF、Data Matrix、PDF417、Aztec 和 QR Code。ZXing 在 Worker 线程中运行,处理大图时界面依然流畅,库内部会应用 Reed-Solomon 纠错,因此轻微模糊或部分遮挡的码在冗余度耗尽之前仍有可能成功解码。
同时获取解码文本和识别的码制类型在盘点、包装或客服工作中不仅需要数字本身时,使用结果面板。页面会显示解码内容、字符数和条形码格式,方便将值连同来源类型一起复制到其他系统中。
打开可疑印刷码之前先检查内容如果解码内容是 URL,页面会将其标记为链接并提供明确的打开操作,让你有机会先阅读目标地址,而不是直接用手机摄像头扫一个未知标签。
在原始系统不再识别时恢复标签数据解码包装标签、运单标识或库存贴纸的存档照片,即使供应商系统已不再识别该 SKU。页面返回原始值和识别的码制类型,可以连同格式信息一起粘贴回 CSV、ERP 条目或审计日志。知道码制类型很重要:13 位的 EAN-13 和 12 位的 UPC-A 仅在 GS1 前缀的首位零上不同,因此 EAN-13 的 0123456789052 和 UPC-A 的 123456789052 是同一个实物产品,恢复记录时应保留这一区别。
验证多码包装或运单当一张图片中包含多个码(箱码加单品码、GS1 码加追踪码)时,检查解码器是否只识别了最突出的那个,必要时裁剪或重新上传以暴露其他码。一次只裁剪一个码是确认多标签表面的可靠方式。

技术原理

一维条形码(UPC、EAN、Code 39、Code 128、ITF、Codabar)是一系列平行的条和空,其宽度编码数字、字母或完整的 ASCII 范围。二维条形码(QR Code、Data Matrix、PDF417、Aztec)则是由模块(单元格)组成的二维图案,排列在静区内,通常在角落有三个定位检测图案用于确定方向。条形码解码是上述过程的逆操作:图像 → 预处理 → 定位符号 → 测量条/空宽度(或采样二维网格) → 查找编码表 → 应用校验和验证结果。 图像处理流程至关重要。源图像先经过灰度转换(亮度 = 0.299R + 0.587G + 0.114B,即 Rec. 601 权重),然后进行全局或自适应阈值处理(Otsu 方法选择使类间方差最大化的阈值,适用于大多数光照良好的扫描图;Sauvola 自适应阈值能更好地处理不均匀光照)。边缘检测(Sobel 核:3×3 的 Gx 和 Gy)找到条的垂直过渡;对这些线进行 Hough 变换可确定方向;连通域分析随后定位符号的边界矩形。在符号被接受为有效候选之前,需要验证静区(符号周围强制性的空白边距,QR Code 为 10 倍 X 尺寸,Code 128 为 9 倍条宽)。 对于一维码,解码器测量 X 尺寸(最窄条的宽度,即单位长度),并以 X 的倍数读取条空宽度。Code 39 的一个字符由 9 条 + 9 空组成(其中一个为字符间间隔);9 个元素中有 3 个是宽的(表示 1),6 个是窄的(表示 0)。Code 128 的一个字符为 11 个模块:起始模式、6 个编码条/空和终止模式。每个字符因此占 11 个模块;11 × 字符数 + 13(起始 + 终止 + 校验 + 静区)即为符号宽度。Code 128 有三种编码集:A(大写 + 控制字符)、B(大写 + 小写)、C(成对数字 00-99)—— 集切换码允许编码器为每个子串选择最高效的编码集。 对于二维码,算法有所不同。QR Code 使用 Reed-Solomon 纠错(EC 等级 L/M/Q/H 分别增加 7%、15%、25%、30% 的冗余)和可配置的掩码模式(8 种之一;编码器选择惩罚分数最低的那个)。掩码处理后,比特流被放置在 21×21(版本 1)到 177×177(版本 40)模块的正方形网格上;角落的三个 7×7 寻找图案和内部角落的 5×5 对齐图案提供方向和比例信息。Data Matrix 使用类似的布局,两侧为 L 形实心边框,另外两侧为交替的明暗图案。PDF417 是一种堆叠线性码(17 个模块宽,最多 90 行),用于美国驾照和航空公司登机牌。 本页面使用 ZXing("Zebra Crossing")库,这是一个开源的 Apache-2.0 多格式解码器,最初来自 Google ZXing 项目。ZXing 运行完整的处理流程(定位 → 预处理 → 解码),并依次尝试每种已知的条码格式。它支持 UPC-A、UPC-E、EAN-8、EAN-13、Code 39、Code 93、Code 128、ITF、Codabar、QR Code、Data Matrix、PDF417 和 Aztec。对于二维码,在良好光照条件下使用 1080p 照片的成功率约为 99%;对于一维码则较低(约 85-95%),因为透视、模糊和反光会扭曲条的宽度。本工具仅支持图片文件输入(上传、拖拽或剪贴板粘贴),不提供摄像头实时扫码功能。 校验和很重要。UPC/EAN 使用单个模 10 校验位(奇数位数字之和 × 3 + 偶数位数字之和,模 10,从 10 中减去)。Code 128 使用模 103 校验字符。Code 39 不要求校验位,但物流领域建议使用模 43 校验。QR Code 使用 Reed-Solomon 纠错;如果纠错解码器发现的错误超出可纠正范围,解码就会失败。当库暴露相关信息时,本页面会在解码失败时显示原因(校验和不匹配、静区太小、掩码冲突等)。

  • 一维条形码(UPC、EAN、Code 39、Code 128、ITF)通过条/空宽度编码数据;二维码(QR Code、Data Matrix、PDF417、Aztec)通过二维模块网格编码。两者都需要约 10 倍单位宽度的静区才能有效识别。
  • 图像处理流程:Rec. 601 灰度转换(0.299R + 0.587G + 0.114B)→ Otsu 或 Sauvola 阈值处理 → Sobel 边缘检测 → Hough 变换确定方向 → 连通域分析定位符号边界框。
  • Code 128 有 3 种编码集:A(大写 + 控制字符)、B(大写 + 小写)、C(成对数字 00-99)。集切换码允许编码器为每个子串选择最紧凑的编码集,将 UPC-A "123456789012" 比 Code 39 更紧凑地编码。
  • Code 39:每个字符 9 条 + 9 空,其中 3 个宽(1)、6 个窄(0);起止字符为 "*"。可选模 43 校验位。广泛用于汽车、国防和美国政府领域(MIL-STD-1189)。
  • Code 93 是 Code 128 的前身,每个字符 9 个模块(6 个数据 + 起止),共 47 个唯一字符;在大多数应用中已被 Code 128 取代,但在部分加拿大药房和 USPS 应用中仍然可见。
  • QR Code:L/M/Q/H 等级的 Reed-Solomon 纠错(7%/15%/25%/30% 冗余),8 种掩码模式,21×21 到 177×177 模块(版本 1 到 40)。角落的三个 7×7 寻找图案提供方向信息;较大版本的 5×5 对齐图案校正透视畸变。
  • Data Matrix:两侧为 L 形实心边框,另外两侧为交替明暗图案;用于电子和制药行业的小型物品标记(ISO/IEC 16022)。
  • ZXing("Zebra Crossing",Apache-2.0,Google):本页面使用的开源多格式解码器。支持 UPC-A/E、EAN-8/13、Code 39/93/128、ITF、Codabar、QR Code、Data Matrix、PDF417 和 Aztec。本工具仅支持从图片文件解码(上传、拖拽或剪贴板粘贴),不提供摄像头实时扫码。
  • 校验和:UPC/EAN 使用模 10,Code 128 使用模 103,Code 39 使用可选的模 43,QR Code 使用 Reed-Solomon 纠错。校验和不匹配说明图像已损坏,而非数据本身有误。

示例

商品条形码识别

上传超市商品照片,解码 EAN-13 条形码得到 6901234567890,再去查询商品名称、生产厂家、价格等信息

快递单号识别

拍下快递面单上的条形码,解码得到运单号(如 SF1234567890),再去快递公司官网查询物流状态

图书 ISBN 解码

扫描图书封底的条形码,解码出 ISBN(如 9787111234567),到图书数据库查询详细信息

常见问题

支持识别哪些条码格式?

支持常见的一维码:CODE 128、EAN-13、EAN-8、UPC-A、UPC-E、CODE 39、CODE 93、ITF(交叉 25 码)、Codabar;也支持二维码:QR Code、Data Matrix、Aztec、PDF417。本页面在浏览器中调用 ZXing 库,对上传的同一张图片自动尝试以上各种格式。

图片会被上传到服务器解码吗?

不会。识别完全在浏览器中通过 WebAssembly 或纯 JavaScript 完成。拖入图片后,字节数据只在本地读取,不会发到任何服务器。可以在浏览器的 Network 面板自行验证。

为什么我的条码识别不出来?

常见原因:图片模糊、条码倾斜超出识别器允许范围、对比度不足、有反光等。可尝试裁剪到更靠近条码的区域、提高亮度和对比度,并保证完整条码至少 200-300 像素宽。在直射光下拍摄的光面印刷条码经常失败。

支持哪些图片格式?

支持 PNG、JPEG、GIF、WebP 和 BMP。可以选择文件、拖拽上传,或从剪贴板粘贴。图片会被读入隐藏的 canvas 进行识别,不会发送到服务器。

结果会显示哪些信息?

包括解码出的文本内容和检测到的条码格式。如果文本是 URL,还会显示一个按钮,可在新标签页打开。同时会显示字符数和格式名称。

EAN-13 的校验位会被验证吗?

ZXing 只有在条码通过其内部所有校验(包括格式自带的校验位)时才会返回结果。识别失败时页面会统一显示 "未检测到条码",不会区分是图片不可读还是校验位错误。

能从一张图里识别多个条码吗?

本页面只识别图中最清晰的那一个。如果图里有多个条码,请把它们分别裁剪出来再单独上传,准确率最高。