Two Dimensional Bar Codes

http://www.adams1.com/pub/russadam/barcode1.html

For years bar codes have been promoted as a machine readable licence plate. Each label contained a unique serial number coded in black and white bars that was a key into a database containing detailed information. That was the expert wisdom. Yet many end users wanted to code more information. They wanted the bar code to be a portable database rather than just a database key.

In 1984 the trend to portable databases began when the Automotive Industry Action Group (AIAG) published an application standard for shipping and parts identification labels which consisted of four "stacked" Code 39 bar codes. These contained part number, quantity, supplier, and serial number.

The first truly two-dimensional bar code was introduced by Intermec Corporation in 1988 when they announced Code 49. Since Code 49's introduction, six other coded have either been invented or have been redesigned to meet the need to place a portable database in as little space as possible.

There are several terms now being used to describe this new class of keyless data entry symbologies. Two-dimensional code or 2-D code really is generic to this entire class.

The terms stacked symbology or multi-row code are more accurately applied to those symbologies made up of a series of one-dimensional bar codes. The data is coded in a series of bars and spaces of varying width.

The term Matrix code applies to 2-D codes that code the data based on the position of black spots within a matrix. Each black element is the same dimension and it is the position of the element that codes the data.

Ordinary bar code is "vertically redundant", meaning that the same information is repeated vertically. It is in fact a one-dimensional code. The heights of the bars can be truncated without any lose of information. However, the vertical redundancy allows a symbol with printing defects, such as spots or voids, to still be read. The higher the bar heights, the more probability that at least one path along the bar code will be readable.

A two-dimensional code stores information along the height as well as the length of the symbol. In fact, all human alphabets are two-dimensional codes. Since both dimensions contain information, at least some of the vertical redundancy is gone. Other techniques must be used to prevent misreads and to produce an acceptable read rate. Misread prevention is relatively easy. Most two-dimensional codes use check words to insure accurate reading. Acceptable read rate is a different problem, and no research has been done to date to assess first read rates.

Two-dimensional code systems have become more feasible with the increased use of moving beam laser scanners, and Charge Coupled Device (CCD) scanners. The 2-D symbol can be read with hand held moving beam scanners by sweeping the horizontal beam down the symbol. However, this way of reading such a symbol brings us full circle back to the way 1D bar code was read -- by sweeping a contact wand across the symbol. The speed of sweep, resolution of the scanner, and symbol/reader distance take on the same criticality as with contact readers and one-dimensional bar code.

Initially, two-dimensional symbologies were developed for applications where only a small amount of space was available for an automatic ID symbol. The first application for such symbols was unit-dose packages in the healthcare industry. These packages were small and had little room to place a bar code. The electronics industry also showed an early interest in very high density bar codes, and two-dimensional symbologies since free space on electronics assemblies was scarce.

More recently, the ability to encode a portable database has made two-dimensional symbologies attractive in applications where space is not at a premium. One example is storing name, address, and demographic information on direct mail business reply cards. A good direct mail response is often less that two percent. If the return card is only coded with a "licence plate", the few replies much be checked against a very large database, perhaps millions of names. This can be quite expensive in computer time. If all the important information is printed in two-dimensional code at the time the mailing label is printed, there is very little additional cost, and a potential for great savings when the cards are returned. Similar savings can occur in field service applications where servicing data is stored in a 2-D symbol on equipment. The field engineer uses a portable reader to get the information rather than dialing up the home office's computer.

There are well over 20 different 2-D symbologies available today. The following is a list of a few of the more popular. If you would like to see others, please drop the Webmaster a note with the name of the code. Please see the specification sources page for the addresses and phone numbers of the sources for the specifications of these codes. You can find a list of industries and what types of 2-D symbologies they use by going here.

3D Barcode (Bumpy Barcode)

3D barcode really is any linear (1D) barcode (like Code 39 or Code 128) that is embossed on a surface. The code is read by using differences in height, rather than contrast, to distinguish between bars and spaces using a special reader. The code can be used where printed labels will not adhere, or will be otherwise destroyed by a hostile or abrasive environment. They can be painted or coated and still be read. They can be made a permanent feature of a part, making mislabeling impossible. For more information see the Mecco site or the TraceAbility Systems site.

3-DI

3-DI was developed by Lynn Ltd and is a proprietary code. 3-DI uses small circular symbols. It is most suited for identification marks on shiny, curved metal surfaces such as surgical instruments. Lynn Ltd., 912 North Main Street, Ann Arbor, MI 48104 313-996-1777(v),663-7937(fax)

ArrayTag

ArrayTag was invented by Dr. Warren D. Little of the University of Victoria and is a proprietary code. The symbol is made up of elemental hexagonal symbols with a patented complementing border which are printed either alone or in sequenced groups. ArrayTags can encode hundreds of characters and can be read at distances up to 50 meters and is optimized for reading at a distance or in variable lighting situations. The principle application of the code is to track logs and lumber. ArrayTech Systems, 3115 Wessex Close, Victoria, BC, Canada V8P 5N2, 604-592-9525 (voice and fax)

Aztec Code

Aztec Code was invented by Andy Longacre of Welch Allyn Inc. in 1995 and is in the public domain. Aztec Code was designed for ease-of-printing and ease-of-decoding. The symbols are square overall on a square grid with a square central bullseye finder. The smallest Aztec Code symbol is 15x15 modules square, and the largest is 151x151. The smallest Aztec Code symbol encodes 13 numeric or 12 alphabetic characters, while the largest Aztec Code symbol encodes 3832 numeric or 3067 alphabetic characters or 1914 bytes of data. No quiet zone is required outside the bounds of the symbol . There are 32 sizes in all with user-selected amounts of Reed-Solomon error encoding from 5% to 95% of data region. Recommended level is 23% of symbol capacity plus 3 codewords

All 8-bit values can be encoded. Values 0 - 127 are interpreted as the ASCII character set while values 128 - 255 are interpreted as ISO 8859-1, Latin Alphabet No. 1. Two non-data characters can be encoded, FNC1 for compatibility with some existing applications and ECI escape sequences for the standardized encoding of message interpretation information.

More information at TKB-4.com

Small Aztec Code

Small Aztec Code is a special space-saving version of Aztec Code for encoding shorter messages (up to 95 characters). Space is saved by removing one set of rings from the finder pattern, eliminating the reference grid, and using a shorter mode message which limits the symbols to four data layers; otherwise, the encoding rules are generally the same as for standard Aztec Code. Small Aztec symbols are completely decoder compatible with standard Aztec symbols so the two types can be intermixed in applications.

There are four possible sizes of Small Aztec symbol. As with standard Aztec Code, the one and two layer symbols employ 6-bit codewords for error correction while the three and four layer symbols employ 8-bit codewords. Although the 4-layer symbol holds 76 codewords, at most 64 of those can be data words, thus Small Aztec symbols are limited to encoding 512 bits of data (typically about 95 characters or 120 digits).

Codablock

Codablock is a stacked symbology from ICS Identcode-Systeme. It was invented by Heinrich Oehlmann and was originally a stack of Code 39 symbols.

Each Codablock symbol contains from 1 to 22 rows. The number of characters per row is a function of the x-dimension of the symbol. In other words, each row can contain a variable amount of characters. Each symbol has a start and stop bar group that extends the height of the symbol. Each row has a two character row indicator, and the last row of the symbol has an optional check digit. The symbol printing program must calculate not only the number of rows needed as in the other stack symbologies, but also calculate the number of characters per row and the print density necessary to best fit the data into the Codablock symbol.

The code is a continuous, variable-length symbology that can encode the Code 39 character set (10 digits, 26 letters, space, and 6 symbols) and is no more dense than a Code 39 symbol at a given print density. For example, the maximum data density is 56 alphanumeric characters per square inch with a symbol using an x-dimension of about 7.5 mils and a bar ratio of 2 to 1.

The current version is Codablock F which is basically a stack of Code 128 symbols. A Codablock F symbol consists of between 2 and 44 rows, each up to a maximum of 62 symbol characters wide. Each row can be read by a standard code 128 reader and contains additional overhead information relating to row numbering and symbol size to enable the decoded output from each row to be re-assembled to reproduce the complete message in the right sequence.

The advantage of this code is that it can be read by moving beam laser scanners with very little modification. Codablock was adopted by German blood banks for the identification of blood. The original patent for Codablock can be found here (USP 5,235,172).

Code 1

Code 1 was invented by Ted Williams in 1992 and is the earliest public domain matrix symbology. It uses a finder pattern of horizontal and vertical bars crossing the middle of the symbol. The symbol can encode ASCII data, error correction data, function characters, and binary encoded data. There are 8 sizes ranging from code 1A to code 1H. Code 1A can hold 13 alphanumeric characters or 22 digits while code 1H can hold 2218 alphanumeric characters or 3550 digits. The largest symbol version measures 134x wide by 148x high. The code itself can be made into many shapes such as an L, U, or T form.

Code 1 is currently used in the health care industry for medicine labels and the recycling industry to encode container content for sorting.

You can purchase complete, official specifications from the following organizations:

X5-8, , Uniform Symbol Specification - Code One
AIM, Inc

Code 16K

Code 16K was developed by Ted Williams in 1989 to provide a simple to print and decode multiple row symbology. Williams also developed Code 128, and the structure of 16K is based on Code 128. Not coincidentally, 128 squared happened to equal 16,000 or 16K for short. Code 16K resolved an inherent problem with Code 49. Code 49's structure requires a large amount of memory for encoding and decoding tables and algorithms. 16K is a stacked symbology.

Each Code 16K symbol contains from 2 to 16 rows, with 5 ASCII characters per row. Additionally, up to 107 16-row symbols can be concatenated together to allow encoding of up to 8,025 ASCII characters, or 16,050 numeric digits. In the extended mode, the first three characters in each 16 row symbol defines the mode character, the order of the 16 row symbol in the block, and the total number of symbols in the block.

The code is a continuous, variable-length symbology that can encode the complete ASCII 128-character set. The minimum value of the x-dimension is 7.5 mils for a symbol to be read by an unknown reader. Minimum bar height is 8 times the x-dimension The maximum data density is 208 alphanumeric characters per square inch or 417 numeric digits per square inch when the symbol is printed at 7.5 mils. In the health care industry for example, a Code 16K symbol printed with a 7.5 mil x-dimension including a flag character, a 10 digit NCD number, a 5 digit expiration date, and a 10 alphanumeric lot code, would fit in a symbol measuring only .35 inches by .61 inches.

Code 16K symbols can be read by modified moving beam laser or CCD scanners. Rows can be scanned in any order. After the last row has been scanned, the bar code reader automatically puts the information in proper sequence. Labels can be printed by standard printing technologies.

There is a description of the specification here.

There is a complete pdf specification here.

You can purchase complete, official specifications from the following organizations:

AIM, Inc X5-5, Uniform Symbol Specification - Code 16K

Laserlight Systems, Inc., 900R Providence Hwy., Dedham, MA 02026
(617) 329-3090; Fax: (617) 329-8706

Code 49

Code 49 was developed by David Allais in 1987 at the Intermec Corporation to fill a need to pack a lot of information into a very small symbol. Code 49 accomplishes this by using a series of bar code symbols stacked one on top of another. Each symbol can have between two and eight rows. Each row consists of a leading quiet zone; a starting pattern; four data words encoding eight characters, with the last character a row check character; a stop pattern; and a trailing quiet zone. Every row encodes the data in exactly 18 bars and 17 spaces, and each row is separated by a one-module high separator bar.