65.9K
CodeProject 正在变化。 阅读更多。
Home

为您的应用程序选择合适的条形码

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013年12月2日

CPOL

8分钟阅读

viewsIcon

37884

为您的应用程序选择合适的条形码。

引言

对我们许多人来说,一天很少有不看到条形码的时候。对于软件开发人员来说,这创造了巨大的机会来创建同时处理条形码编码和解码的软件。它们被广泛应用于零售、政府、商业、智能手机、Web 应用程序等领域。几乎没有哪个市场或行业不日常使用条形码。

同时,所有这些多样性和市场饱和度也可能带来挑战。开发人员或项目经理如何开始他们的成功之路?归根结底,您应该问两个主要问题:我应该使用哪些条形码?我将如何使用它们?本白皮书将通过详细介绍几种最流行的条形码以及程序员如何使用屡获殊荣的 LEADTOOLS 成像 SDK 技术来快速轻松地开发他们的应用程序,帮助您理清这两个问题的模糊之处。

选择正确的条形码

市面上有如此多种类的条形码,选择正确的条形码对于成功的软件应用程序至关重要。从最高层来看,条形码有两种类型:一维(也称为线性)和二维。一维条形码是最简单、最广泛使用的,但只能存储少量信息。二维条形码因其可以在更小的区域内打包更多信息而越来越受欢迎。然而,决定比在一维和二维之间做出选择更复杂。以下是一些最流行的条形码及其典型用法。

Code 128

 

这个一维条形码之所以得名,是因为它可以编码整个 ASCII 128 字符集。令人惊讶的是,它仍然能够媲美其他编码字符少得多的条形码的紧凑性。这种密度和多样性的结合使其成为工业领域最广泛使用的条形码之一,例如在运输、包装、物流等领域。

 

Code 39 (Code 3 of 9)

 

类似地,Code 39 的名称也来源于它可以编码的字符数,但后来已扩展到可以编码 43 个字符,而不是 39 个字符(0-9,A-Z,以及一些特殊字符)。它的密度低于 Code 128,并且最著名的是它被用作美国国防部、健康行业条形码委员会和其他汽车行业等使用的标准条形码。

 

UPC / EAN

 

可以说是所有条形码中最常用的,通用产品代码(UPC)和欧洲商品编号(EAN)广泛用于零售销售点应用程序以识别消费品。UPC 和 EAN 的主要区别在于 EAN 使用两位数字(00-99),而 UPC 使用一位数字(0-9)。为了确保零售商品的唯一标识,UPC 和 EAN 条形码的值由国际委员会设定。这给软件开发人员的创造力带来了一些限制,但由于庞大的市场需求和广泛的应用,机会仍然是无穷的。

 

QR 码

 

在二维条形码中,最容易识别且对消费者友好的就是 QR 码。QR 码可以在很小的空间内打包大量信息:最多 2,953 字节,4,296 个字母数字字符,或 7,089 个数字。除了巨大的存储潜力外,它还是有史以来最强大、最抗错误的编码之一。因此,它在图像质量通常不佳的应用中非常受欢迎,例如晃动的手机和手持扫描仪。

 

PDF417

 

PDF417 是最常见的二维条形码,广泛用于身份证、运输和库存管理系统。它在这些市场的普及归功于其高达 1,850 个 ASCII 字符的大数据容量和强大的纠错能力。这些特性使其能够在恶劣环境中编码个人信息和完整地址,同时保持准确性。

 

Data Matrix

 

Data Matrix 条形码允许最紧凑的信息存储,并且根据所需的文本或二进制数据量成比例地调整大小(最多 2,218 个 ASCII 字符)。最小的 Data Matrix 条形码可以在几毫米内编码五十个字符。它在消费者中的受欢迎程度较低,但许多公司和企业利用其紧凑性来进行内部物流或识别小型物品。

 

使用 LEADTOOLS 进行条形码处理……以及其他所有内容!

现在您已经选择了要使用的条形码,如何将其添加到您的应用程序中?当然,您可以自己编写。这对于某些类型的一维条形码可能是可行的,但如果您计划支持二维条形码或多种一维符号,可能会导致严重的延误或增加人员需求。您的另一个选择是利用其他程序员的专业知识并使用 SDK。

在寻找最适合您需求的 SDK 时,有很多因素需要考虑。大多数条形码都有明确的规范和标准,所以只要您为应用程序选择的 SDK 能够按照规则读取和写入,您就处于有利地位。然而,这假设一个完美的世界,即所有图像都干净,所有照片都在良好的光线下拍摄,所有文档都扫描笔直。这样的世界根本不存在,所以您应该寻找一个工具包,它不仅能处理条形码,还能提供您所需的一切:扫描、清理、预处理,并处理文档成像过程中固有的所有不完美之处。

图 1:一个严重损坏的 PDF417 条形码,仍能被 LEADTOOLS 成功读取

这正是 LEADTOOLS 表现出色之处!凭借二十多年的数字成像软件开发工具包创建经验,我们阅历丰富。开发人员在购买和测试各种条形码工具包时,最大的决定因素之一是它在图像上的表现如何。这实际上会成为一个两难困境,因为他们正在开发一个尚未投入生产的应用程序,并且没有足够多的图像和场景样本。

LEADTOOLS 被应用于数十万个桌面、服务器和移动应用程序,遍布众多不同的行业,因此使用 LEADTOOLS 的开发人员可以获得巨大的安心,因为他们知道 LEADTOOLS 已经过数百万张图像的验证和市场考验。因此,LEADTOOLS 能够适应快速变化的市场,定期添加新的图像处理例程,从而提高其条形码引擎的可靠性和准确性。例如,图像中发现的大多数条形码都是通过扫描仪捕获的。这些扫描仪遇到的绝大多数问题都可以通过对图像进行倾斜校正或重采样来轻松解决,以提高线条的清晰度。移动图像采集给条形码引擎带来了巨大的挑战,因为图像经常出现光照不良、三维倾斜和对焦不清等问题。LEADTOOLS 拥有可以在实时摄像机流上运行的图像预处理例程,可以持续快速地修复图像,而用户甚至不会察觉,从而实现许多其他库难以达到的快速条形码检测和解码。

除了 LEADTOOLS 能够从最广泛的图像中准确读取和写入大多数条形码之外,其本身库也非常易于使用。读取和写入条形码只需要几行代码。

// Create a Barcode engine
BarcodeEngine engine = new BarcodeEngine();

// Write a barcode to the image (UPC in this example)
BarcodeData data = new BarcodeData(BarcodeSymbology.UPCA, "01234567890");
data.Bounds = new LogicalRectangle(0, 0, 400, 200, LogicalUnit.Pixel);
engine.Writer.WriteBarcode(myImage, data, null);

// Read all barcodes with default options.
BarcodeData[] barcodes = engine.Reader.ReadBarcodes(myImage, LogicalRectangle.Empty, 0, null);

如上所示,LEADTOOLS 提供了高级功能,可实现快速轻松的条形码读取,同时也提供了许多选项,可根据您的环境和图像精细调整识别过程。当已知条形码的类型时,您可以将搜索范围限制为您的应用程序将使用的符号,从而进一步提高性能。

// Create a Barcode engine
BarcodeEngine engine = new BarcodeEngine();

// Read only PDF417 and Data Matrix barcodes
PDF417BarcodeReadOptions pdf417Options = new PDF417BarcodeReadOptions();
pdf417Options.BackColor = RasterColor.White;
pdf417Options.ForeColor = RasterColor.Black;
pdf417Options.SearchDirection = BarcodeSearchDirection.Vertical;

DatamatrixBarcodeReadOptions dataMatrixOptions = new DatamatrixBarcodeReadOptions();
dataMatrixOptions.BackColor = RasterColor.White;
dataMatrixOptions.ForeColor = RasterColor.Black;
dataMatrixOptions.EnableSmallSymbols = true;

BarcodeData[] barcodes = engine.Reader.ReadBarcodes(
   myImage, LogicalRectangle.Empty, 0, 
   new BarcodeSymbology[] { 
      BarcodeSymbology.PDF417, BarcodeSymbology.Datamatrix}, 
   new BarcodeReadOptions[] { pdf417Options, dataMatrixOptions });

图 2:从窄读选项中读取的条形码。请注意,存在一个 PDF417 条形码,但由于引擎被告知只搜索垂直方向,因此未返回。

最后,由于 LEADTOOLS 可以为您的条形码应用程序提供全面的解决方案,因此您无需处理混合使用多个 SDK 的麻烦。这是一个不应被忽视的好处,因为试图弄清楚多个工具包之间传递信息和图像数据的过程,对开发人员来说不仅仅是不方便。它对最终用户也有实际影响,因为应用程序无法以最高效率运行。由于 LEADTOOLS 中的一切都无缝协同工作,因此无需额外的 CPU 周期和 RAM,最终产品的整体质量也大大提高。

结论

LEADTOOLS 可以改进您的整个软件开发生命周期:规划您将支持的条形码,轻松编写实际代码,处理真实世界的图像,并提供一流的应用程序。一旦您开始在应用程序中使用 LEADTOOLS,您很快就会意识到为什么它是*成像 SDK 领域的全球领导者*。

下载完整的表单识别示例

您可以下载包含上述功能的完整功能演示。要运行此示例,您需要以下条件:

  • LEADTOOLS 免费 60 天试用版
  • Visual Studio 2008 或更高版本
  • 浏览至 LEADTOOLS 示例文件夹(例如,C:\LEADTOOLS 19\Examples\),您可以在其中找到此示例以及 LEADTOOLS 中许多其他技术的示例项目。

支持

需要帮助来启动并运行此示例吗?联系我们的支持团队免费获得技术支持!有关定价或许可问题,您可以联系我们的销售团队(sales@leadtools.com)或致电 704-332-5532。

关于 LEADTOOLS

LEAD Technologies 自 1990 年以来一直是数字成像工具的领先提供商。其屡获殊荣的 LEADTOOLS 工具包系列帮助开发人员快速轻松地将光栅、文档、医疗、多媒体、矢量和 Internet 成像集成到他们的应用程序中。将 LEADTOOLS 用于您的成像需求,可以让您将更多时间用于用户界面和应用程序特定的代码,从而加快您的开发周期并提高您的投资回报率。

© . All rights reserved.