Aztec Code was developed in 1995 by Andrew Longacre and Rob Hussey at Welch Allyn, which later became a division of Honeywell known as Hand Held Products. Since that time, Aztec has been placed in the public domain and standardized according to ISO/IEC 24778.
Aztec Code is a two-dimensional (2D) symbology that stores data in both rows and columns. Each row in an Aztec Code symbol contains a fixed number of black or white square modules, typically with black representing a bit value of 1 and white representing a bit value of 0. This design differs from linear barcode symbologies, such as Code 39 and UPC, that encode data using sets of black-and-white patterns of varying widths.
An Aztec Code symbol is square and features a square bull’s-eye pattern in the center that enables scanning equipment to identify and locate the symbol. It comes in two flavors: a compact format with a square two-ring bull’s-eye and a full-range format with a square three-ring bull’s-eye.
Each corner of the center bull’s-eye uses a different, fixed orientation pattern for determining symbol orientation. The mode bits between these orientation patterns comprise the mode message, which indicates the number of data layers and the number of codewords stored in the symbol. A compact code has 1 to 4 data layers, and a full-range code has 4 to 32 data layers. Figure 2 shows the orientation patterns and mode bits comprising the mode message in the compact example from Figure 1.
Figure 3 shows a mode message of one data layer for the compact code example from Figure 1:
An Aztec Code does not require a quiet zone of white space at its perimeter because the Aztec code is scanned and decoded from the inside out. Decoding algorithms know the exact size of the symbol by reading special bits at its center rather than interpreting a quiet zone. An Aztec Code symbol is still readable when mirrored or inverted to print white on black.
Aztec Code can encode numeric, alphanumeric, and binary data. It relies on sophisticated data-compaction techniques to store a large amount of data in a smaller area than linear barcodes. An Aztec Code symbol can range in size from 15x15 modules with one layer having a data capacity of 13 digits, 12 letters, or 6 bytes, to 151x151 modules with 32 layers having a data capacity of 3832 digits, 3067 letters, or 1914 bytes. In practice, these limits are somewhat lower
Full-range Aztec Code symbols also include a fixed reference grid along every 16th row and column to help map the data layers in larger symbols. Figure 4 shows the full-range example from Figure 1 with the reference grid indicated:
Aztec Code uses Reed-Solomon error-correction, which can detect and correct multiple errors or data omissions from unreadable data. This capability enables severely damaged barcodes to still be successfully scanned. Depending on the level of Reed-Solomon error correction used, error-correction data can occupy as little as 5% of the symbol or as much as 95%.
Aztec Code is ideal for applications that require high data capacity and density without sacrificing data integrity. Because Aztec Code offers high levels of error correction, it can be used to store large messages reliably.
Several US, Canadian, and New Zealand airlines now use Aztec barcodes for electronic boarding passes. European passenger rails have also been using Aztec codes for years for tickets purchased online and printed by the customer.
Aztec Code symbols are also found on automobile registrations and utilities bills in some areas of the world. Patient-safety applications in the medical industry include patient-identification wristbands and labels for medicines, specimens, IV mixtures, and blood products.
The Cognex Mobile Barcode Scanner SDK natively supports both compact and full-range Aztec Codes. You can download the SDK for free by registering on the Cognex Mobile Barcode Developer Network. In addition, the Barcode Scanner SDK supports a broad range of symbologies to meet your growing development needs.