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

使用条形码简化工作流程

starIconstarIconemptyStarIconemptyStarIconemptyStarIcon

2.00/5 (1投票)

2010年2月26日

CPOL

12分钟阅读

viewsIcon

27386

借助快速、准确的条形码读写工具包,您可以轻松地将条形码集成到应用程序中,以可靠地传输信息。通过一些基本信息,您可以确定条形码如何简化您的文档处理工作流程。

借助快速、准确的条形码读写工具包,您可以非常轻松地将条形码集成到您的应用程序中,以可靠地传输信息。通过对条形码技术的一些基本了解,您可以确定如何使用它们来简化您的文档处理工作流程,哪种符号最适合您的特定需求,以及如何最大程度地提高其可靠性。您可以通过我们基于 Web 的演示或可下载的 SDK 来试用真实的条形码,并了解条形码可以多么轻松地应用于改进各种文档处理操作。

条形码为何存在

归根结底,条形码的存在有一个主要原因:机器难以读取文本。尽管光学字符识别 (OCR) 已经取得了长足的进步,但各种可能的字体、扫描和传真造成的损坏、观察角度的变化以及许多其他因素,始终使得字符串的可靠解码比条形码更加困难。条形码标准对线条宽度、尺寸、形状、编码、错误检测和纠正以及其他特性施加了严格的指导方针,所有这些都是为了降低读取错误。

机器快乐,工作流程也快乐

那么,如果使用条形码的主要原因是为了提高机器读取结果的准确性,这如何转化为更可靠的工作流程?条形码的许多特性使其非常适合通过传真、扫描和其他操作以图像形式传递信息。当数据可以通过自动处理可靠地获取时,手动干预的需求就会大大减少,从而极大地降低了导入该数据的成本。以下特性使条形码在自动数据采集方面优于纯文本:

  1. 条形码具有弹性——您可以对条形码造成很多损坏,例如多次传真或在上面书写,但仍然能够准确读取。

  2. 读取速度非常快——像 Barcode Xpress 这样的优质产品可以在几毫秒内找到页面上的所有条形码。处理同一页面上的 OCR 可能需要数百倍的时间……肯定需要几秒钟甚至更长。当您处理大量文档时,这种差异会迅速累积。
  3. 条形码可以自愈——大多数 2D 条形码不仅能承受一般性损坏。利用内置的冗余和错误纠正功能,即使某些元素完全丢失,许多条形码也能被读取。例如,右侧的 Data Matrix 码即使在被打孔的情况下也能以 100% 的置信度解码。

  4. 节省空间——一个典型的 2D 条形码可以在相同的空间内包含比其所包含的文本更多的信息,同时仍然高度可读。
  5. 易于查找——条形码读取软件可以定位和解码页面上任意位置、任意方向的多个条形码。

常见的条形码用途

条形码的通用用例是将数据从图像传递到数据库。当应用于文档时,条形码可以基于此概念服务于多种应用程序。以下是条形码用于改进工作流程的几种常见方式:

image003.png
低端的补丁码只能容纳六种不同的值之一。
  1. 批量扫描——所有条形码中最简单的是“补丁码”,它长期以来一直用作批量扫描应用程序中的文档分隔符。更复杂的条形码可以编码 ID 号、客户姓名、日期、文档名称和其他信息。操作员或自动化系统可以利用这些附加信息来识别或分类扫描的文档。通常,条形码会在扫描前打印出来,并附在每个新文档的第一页。解码后的数据可在扫描后用于准确索引。
  2. 打印表格——如果您正在设计一个新表格,并且希望在填写完毕的表格退回时,在任何文档集合中立即识别出它,只需包含一个标识表格的条形码即可。许多政府表格、业务回复卡、工时表和市场调查都为此目的使用了预打印的条形码。
  3. 基于 Web 的数据收集——每当最终用户在 Web 表单或 PDF 表单中输入字段数据,而该数据最终将被打印出来时,就有机会即时创建一个包含用户数据关键组件的条形码。在表单打印、传真、复制或邮寄后,该图像可以可靠地捕获用户输入的数据。
  4. 数据验证——条形码可以通过添加第二个检查来提高几乎任何过程的可靠性。例如,许多医院现在会在给药时扫描和交叉检查患者腕带、病历以及每剂药物,从而消除错误。

选择最佳条形码类型

显然,如果您没有机会在工作流程中创建条形码,您将不得不接受原始系统设计者的选择。例如,如果您正在读取产品代码,则需要识别标准的 UPC(在美国)或 EAN(在世界大部分地区)代码。许多现有的 2D 解决方案使用 PDF417 来满足其要求。但是,如果您可以选择最能满足您需求的条形码,则以下指南可以帮助您缩小选择范围。

选择线性解决方案

如果您需要编码的数据量相对较小,少于 20 或 30 个字符,您可以选择线性或一维条形码。这些条形码的明显优势在于每个人都将其识别为条形码。除此之外,在大多数情况下,2D 解决方案的可靠性更高,占用的空间也更小。对于大多数新应用程序,最佳的 1D 选择是 Code 128。它可以让您编码大写和小写字母、数字字符以及大多数 ASCII 控制字符。与大多数其他 1D 条形码相比,它相对紧凑且相当可靠。Code 128 包含一个校验字符,降低了误读的可能性。与某些 1D 条形码相比,可变条形宽度和起始/停止序列的相对复杂性也降低了页面上的其他数据或图像被误解为条形码的可能性。

作为指导,典型的 1D 条形码的所需高度应至少为其总宽度的 15%,或 0.25 英寸(0.64 厘米),以较高者为准。如果您控制着创建的条形码将如何处理(例如扫描或传真),您将需要确保至少有三个像素代表代码中的最小线宽。根据代表每个字符所需的垂直线,这将需要每个字符至少约 33 像素,加上起始、停止和校验和组,这会额外占用约 105 像素。根据这些指南,一个 10 个字符的 Code 128 应该至少宽 435 像素,高 65 像素。当然,这是您在所有处理之后所需的[分辨率],您应该始终向上取整以确保安全。有关最佳条形码生成的更多信息,请参阅我先前的论文《在文档中使用条形码——最佳实践》。

虽然 Code 128 条形码包含一个校验字符,但仍然有合理的可能性会错误地读取它。解码中的单个错误始终会被检测到,但如果有两个错误,则有大约百分之一的可能性不会被发现。这种“误报”结果可能会导致数据库中输入错误的数据而没有任何警告。此外,常见的 1D 条形码类型中没有一种包含任何错误纠正功能。除非您可以在高度可靠的数据源中交叉检查数据,否则您应该考虑使用 2D 条形码,它可以近乎消除误报并增加实际纠正错误的功能。

二维选项

2D 条形码格式的关键优势在于容量更大和错误纠正能力更强。虽然 1D 条形码应用程序很少包含超过 30 个字符,但对于某些 2D 条形码,编码多达 500 个或更多字符是可行的,并且可能存储的数量是其两倍以上。

例如,右侧的 Data Matrix 码包含 560 个字母数字字符,在以 200 dpi 扫描此页面后可以准确读取。这是用于以良好的视觉质量再现文本的合理扫描仪分辨率设置,但对于最佳 OCR 来说可能不足。大多数人不愿意在页面上使用比这更大的条形码,除非页面的主要目的是传递电子数据。一个包含 2,046 个字符、密度大致相同的 Data Matrix 条形码大约需要 3 英寸 x 3 英寸的空间,完全主导任何页面布局。

image004.png
一个包含 560 个字符的 Data Matrix,在 200 dpi 下扫描时可读。

Data Matrix 和其他 2D 格式远远超出了任何线性条形码的基本错误检测能力。利用 Reed-Solomon 编码,在创建代码时就内置了冗余。在解码过程中,这些额外的字符可用于重建所有数据,即使原始图像的某些部分完全丢失或被破坏。因此,与线性条形码(其中每个字符仅存在于图像的一个部分)不同,2D 条形码中的每个字符分布在整个图像中,如果某个区域丢失,通常可以使用剩余部分来恢复。一般而言,当原始图像的最多 20% 受影响时,可以检索所有数据。通过强制使用比必需的更多的行和列,从而在创建条形码时产生更多冗余,可以将该比例进一步提高。

虽然 Data Matrix 码通常以方形格式出现,但标准也允许几种矩形选项。例如,此处显示的条形码包含 65 个字母数字字符,排列成 16 行高 x 48 列宽的矩形。此格式仍然包含有价值的错误检测和纠正功能,但可能更容易插入到您的表单设计中。它也可以垂直放置在页面上。

通过比较使用 Code 128、PDF417 或 Data Matrix 条形码编码相同数据所需的空间(大约具有相同的可读性),可以看出 Data Matrix 条形码在设计新表单时更容易集成。

image006.png

Code 128、PDF417 和 Data Matrix 对“12345Abcde”的表示

由于 Data Matrix 码的最小正方形比 Code 128 条形码的最窄条形还要宽,因此在大多数情况下它会更可靠。一般而言,最小元素的最小尺寸越大,它能承受的损坏就越多。PDF417 和 Data Matrix 代码都包含冗余信息,可用于尝试纠正错误的字符。

条形码安全性

仅仅因为您和我无法仅凭外观就能解码条形码,切勿认为条形码可用于保护或隐藏敏感数据。正如我们的示例所示,几乎任何人都可以轻松提取任何标准条形码的内容。如果您在编码条形码之前提供了其他加密方法,那么只有加密才能提供任何保护……您可以像打印加密消息一样,将其以文本或十六进制数字字符串的形式打印出来。您绝不应将任何您不愿意直接打印在表单上的信息放入条形码中。

比较条形码

如果您选择 1D 条形码,选择 Code 128(如上所述)相比其他选项的好处很少。对于 2D 选项,可能需要考虑更多内容,因为每种都有略微不同的优势。如果您正在创建条形码,您应该知道 Barcode Xpress 包含 1D、PDF417 和 Data Matrix 的条形码写入功能。请注意,2D 条形码的实际数据限制大约为 500-800 个字符。

条形码功能摘要
条形码类型 样式 容纳 最大数据 错误纠正 注释
Code 128 Linear 所有 ASCII < 30 个典型字符 仅检测 1 个字符校验和
           
Aztec 二维 数字
字母数字
二进制
3832
3067
1914
可调,
增加尺寸
5% 到 95% 的数据区域可用于错误纠正。主要用于运输行业。
Data
矩阵
二维 数字
字母数字
二进制
3116
2335
1556
默认为约 30%;可通过放大来增加。 有弹性。紧凑。
矩形选项。
PDF417 二维 数字
字母数字
二进制
2710
1850
1108
可调;增加 2 到 512
个代码字
比其他 2D 大;条形宽度小,但条形码定位器大。
QR Code® 二维 数字
字母数字
二进制
日文
7089
4296
2953
1817
四个级别,从约 7% 到 30% 名称“QR Code”需要获得 Denso Wave, Inc. 的商标许可,但可免费使用。

试用 Barcode Xpress

要查看您特定的图像是否可以使用 Barcode Xpress 解码,您可以访问以下网址的 Web 演示:demos.accusoft.com/barcodexpressdemo。虽然这会给您快速的结果,但您可以通过对图像进行各种预处理来进一步提高困难图像的结果。要进行更高级的测试,可以试用条形码写入功能,并了解如何将条形码处理集成到您自己的应用程序中,请下载Barcode Xpress SDK 的免费试用版。SDK 版本支持 .NET 和 ActiveX /COM 开发,用于 32 位和 64 位部署,以及 Java 和 Java Mobile Edition 工具包。

.NET 和 ActiveX SDK 包含 ImagXpress 组件的副本,提供了丰富的功能来处理图像。Barcode Xpress 组件也可以轻松地与 ImageGear 成像 SDK 集成,并且还有一个示例项目(独立于 SDK)可供下载,还有一个简短视频,演示了如何构建一个简单的 ImageGear 条形码读取程序。

尽管您的应用程序可能包含图像采集、预处理、查看、数据库存储以及许多其他功能,但实际的条形码读取部分非常简单。声明、图像采集和结果的显示或存储未显示,因为这些都包含在示例代码中,并且会根据您的具体应用程序而有所不同。

// An array holds the barcode formats to be recognized
BarcodeTypes = SetBarcodeType(); 

// The Result class will hold details of the returned barcode(s)  
Accusoft.BarcodeXpressSdk.Result[] results; 

// Set the barcode types for the component 
barcodeXpress1.reader.BarcodeTypes = BarcodeTypes;

/* This default searches the entire image. Replace the 
   zeroes to select a pre-defined area for barcode search  */
System.Drawing.Rectangle currentArea 
             = new System.Drawing.Rectangle(0, 0, 0, 0);
barcodeXpress1.reader.Area = currentArea;

// Set up a bitmap to pass a viewed image to Barcode Xpress 
DIB = (IntPtr)imageXView1.Image.ToHdib(false).ToInt32(); 

// The Analyze method searches the page and returns the Results 
results = barcodeXpress1.reader.Analyze(DIB);

结论

条形码可以应用于几乎任何可能从图像中获取数据并从中受益的工作流程。在使用条形码时,了解每种类型的特性以优化可靠性非常重要。像 Barcode Xpress 这样的第三方 SDK 可以非常轻松地将条形码读取和写入集成到新应用程序中。考虑到它们的易用性和潜在好处,令人惊讶的是,仍然有这么多表格没有条形码。

您可以在 www.accusoft.com 找到 Accusoft Pegasus 的产品下载和功能。请联系 info@accusoft.com 获取更多信息。

image007.png

好奇吗?以 200 dpi 或更高分辨率扫描此图像,然后将图像发送到我们的 Web 演示(演示矩阵)。

关于 Accusoft Pegasus

Accusoft Pegasus 于 1991 年以 Pegasus Imaging 的公司名称成立,总部位于佛罗里达州坦帕市,是最大的成像软件开发工具包 (SDK) 和图像查看器供应商。成像技术解决方案包括条形码、压缩、DICOM、编辑、表单处理、OCR、PDF、扫描、视频和查看。技术交付环境包括 Microsoft .NET、ActiveX、Silverlight、AJAX、ASP.NET、Windows Workflow 和 Java。支持多种 32 位和 64 位平台,包括 Windows、Windows Mobile、Linux、Sun Solaris、Mac OSX 和 IBM AIX。请访问 www.accusoft.com 获取更多信息。

© . All rights reserved.