What is AAMVA? The (AAMVA), founded in 1933, is a nonprofit, educational organization striving to develop model programs in motor vehicle administration, police traffic services, and highway safety. In the area of motor vehicle administration, one of AAMVA’s key initiatives has been the standardization of driver’s licenses and official personal identification cards. Initially AAMVA’s role was to aid in the identification of individuals that were granted “the privilege to drive”; that is, the driver’s license. Over the decades though, higher demands were placed on the simple driver’s license that required better security and more consistent information content. Today, through AAMVA’s efforts and standards, driver’s licenses and personal ID cards can be used across jurisdictions ubiquitously for a number of key applications:.
Evidence of the privilege to drive;. Personal identification;. Age verification;. Address/residence verification;. Automated administrative processing. Over the past years, security and restrictions regarding various forms of government-issued personal identification documents have become increasingly tighter. In an effort to regulate the process in the United States, create more accurate data entry results, encourage greater uniformity across jurisdictions, and cut down on overall operating costs, the AAMVA implemented the inclusion of machine-readable technologies including magenetic stripes and barcodes on driver’s licenses and state-issued identification cards.
The AAMVA (CDS) provides a standard for the design of driver licenses (DL) and identification (ID) cards issued by AAMVA member jurisdictions. This comprehensive standard addresses everything from dimensions, layout, security mechanisms, machine readable technologies, and precise requirements for information content and its representation. A crucial component of the CDS defines how a PDF417 barcode is used to represent a wealth of driver information. However, the data in the barcode is compacted and encoded using data identifiers, variable lengths, optional fields, and binary separators.
The process of reading one of these barcodes, then deciphering its contents can be onerous and error prone. How is AAMVA used? Supporting the latest CDS specification from the AAMVA, the makes it simple for developers to parse barcode data into a structured format (JSON, Key-Value).
Far more convenient than custom parsing methods which compel a developer to search through a multitude of bytes for pertinent data, the AAMVA parser plugin delivers effortlessly names, numbers and age verification, among others, as specified in the CDS. Manatee Works is invested in providing developers with the tools they need to expedite projects and more effectively manage overall workflow. “Long hand,” coding practices, such as data parsing, consumes an inordinate amount of a developer's time and can introduce defects into an application. Integrating the Parser Plugin automates sorting, validating, and parsing the type of information necessary to allow the rest of application operations to flow smoothly and efficiently. Easily decode and parse information from the barcode now utilized by nearly all 50 states. Barcode Scanner SDK Features and Capabilities.
Developing practical applications is challenging. That’s why we've developed a straight-forward barcode scanner software development kit (SDK) that boasts the most powerful scanning experience available for integration.
It offers developers a simple, flexible, dynamic decoding experience, while still allowing for maximum control and flexibility over the user experience (UX). The Cognex Mobile was built BY developers FOR developers.
With the goal of making all your applications practical. As a tool developed with the retail, manufacturing, government, healthcare, commercial services, and transportation industries in mind, our scanning solutions are built around efficiency for the end-user, as well as simplicity for the application developer. We understand that the enterprise is continually looking for opportunities to increase efficiency. Therefore, we have developed the ultimate single-handed scanning solution aimed at maximizing every promise of a return on investment.
Keys for obtaining US Driver's license data Standard for US Driver's Licenses defines 9 different barcode standards (AAMVA versions) with over 80 different fields encoded inside a barcode. Some fields exist on all barcode standards, other exist only on some. To standardize the API, we have structured the fields in the following sections:.
Determining AAMVA version. kPPAamvaVersionNumber (string value 'kPPAamvaVersionNumber') - Mandatory on all AAMVA driver's license versions. Specifies the version level of the PDF417 bar code format. Possible values are '0', '1', '2', '3', '4', '5', '6', '7', '8', and 'Compact'.
Keys existing on all standard barcode versions Mandatory values Personal data. kPPCustomerFamilyName (string value 'kPPCustomerFamilyName') - Family name of the cardholder. Mandatory on all barcode versions, including compact encoding. kPPCustomerFirstName (string value 'kPPCustomerFirstName') - First name of the cardholder. Mandatory on all barcode versions, including compact encoding. kPPDateOfBirth (string value 'kPPDateOfBirth') - Date on which the cardholder was born. (MMDDCCYY format).
Mandatory on all barcode versions, including compact encoding. kPPSex (string value 'kPPSex') - Gender of the cardholder.
Mandatory on all barcode versions, including compact encoding. 1 = male,. 2 = female. kPPEyeColor (string value 'kPPEyeColor') - Color of cardholder's eyes.
Mandatory on all barcode versions, including compact encoding. (ANSI D-20 codes). BLK = Black. BLU = Blue. BRO = Brown. GRY = Gray.
DIC = Dichromatic. UNK = Unknown. kPPHeight (string value 'kPPHeight') - Height of cardholder.
Possible values are either in inches or in centimeters. Mandatory on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact encoding. Optional on 01. See also kPPHeightIn, kPPHeightCm. Inches (in): number of inches followed by ' in' or ' IN'.
6'1' = '073 in'. Centimeters (cm): number of centimeters followed by ' cm' or ' CM'. 181 centimeters = '181 cm'. kPPAddressStreet (string value 'kPPAddressStreet') - Street portion of the cardholder address. The place where the registered driver of a vehicle (individual or corporation) may be contacted such as a house number, street address etc. Mandatory on all standard barcode versions.
Not defined on Compact encoding, where you must use kPPFullAddress. kPPAddressCity (string value 'kPPAddressCity') - City portion of the cardholder address. Mandatory on all standard barcode versions. Not defined on Compact encoding, where you must use kPPFullAddress.
kPPAddressJurisdictionCode (string value 'kPPAddressJurisdictionCode') - State portion of the cardholder address. Mandatory on all standard barcode versions. Not defined on Compact encoding, where you must use kPPFullAddress.
kPPAddressPostalCode (string value 'kPPAddressPostalCode') - Postal code portion of the cardholder address in the U.S. If the trailing portion of the postal code in the U.S. Is not known, zeros will be used to fill the trailing set of numbers up to nine (9) digits. Mandatory on all standard barcode versions. Not defined on Compact encoding, where you must use kPPFullAddress.
License data. kPPDocumentIssueDate (string value 'kPPDocumentIssueDate') - Date on which the document was issued. (MMDDCCYY format). Mandatory on all barcode versions, including compact encoding.
kPPDocumentExpirationDate (string value 'kPPDocumentExpirationDate') - Date on which the driving and identification privileges granted by the document are no longer valid. (MMDDCCYY format). Mandatory on all barcode versions, including compact encoding.
kPPIssuerIdentificationNumber (string value 'kPPIssuerIdentificationNumber') - This number uniquely identifies the issuing jurisdiction and can be obtained by contacting the ISO Issuing Authority (AAMVA). Mandatory on all standard barcode formats, optional on compact encoding.
kPPJurisdictionVersionNumber (string value 'kPPJurisdictionVersionNumber') - Jurisdiction Version Number: This is a number value between '0' and '99' that specifies the jurisdiction version level of the PDF417 bar code format. Mandatory on all barcode versions, including compact encoding. kPPJurisdictionVehicleClass (string value 'kPPJurisdictionVehicleClass') - Jurisdiction-specific vehicle class / group code, designating the type of vehicle the cardholder has privilege to drive.
Mandatory on all standard barcode versions. Not defined on Compact encoding, which has no compatible field. kPPJurisdictionRestrictionCodes (string value 'kPPJurisdictionRestrictionCodes') - Jurisdiction-specific codes that represent restrictions to driving privileges (such as airbrakes, automatic transmission, daylight only, etc.).
Mandatory on all standard barcode versions. Not defined on Compact encoding, which has no compatible field.
kPPJurisdictionEndorsementCodes (string value 'kPPJurisdictionEndorsementCodes') - Jurisdiction-specific codes that represent additional privileges granted to the cardholder beyond the vehicle class (such as transportation of passengers, hazardous materials, operation of motorcycles, etc.). Mandatory on all standard barcode versions. Not defined on Compact encoding, which has no compatible field.
kPPCustomerIdNumber (string value 'kPPCustomerIdNumber') - The number assigned or calculated by the issuing authority. Mandatory on all barcode versions, including compact encoding. Optional values Personal data. kPPHairColor (string value 'kPPHairColor') - Bald, black, blonde, brown, gray, red/auburn, sandy, white, unknown. If the issuing jurisdiction wishes to abbreviate colors, the three-character codes provided in ANSI D20 must be used. Optional on all barcode versions, including compact encoding.
BAL = Bald. BLK = Black. BLN = Blond. BRO = Brown. GRY = Grey.
RED = Red/Auburn. SDY = Sandy. WHI = White. UNK = Unknown. kPPNameSuffix (string value 'kPPNameSuffix') - Name Suffix (If jurisdiction participates in systems requiring name suffix (PDPS, CDLIS, etc.), the suffix must be collected and displayed on the DL/ID).
Optional on all barcode versions, including compact encoding. JR (Junior). SR (Senior). 1ST or I (First). 2ND or II (Second). 3RD or III (Third). 4TH or IV (Fourth).
5TH or V (Fifth). 6TH or VI (Sixth). 7TH or VII (Seventh). 8TH or VIII (Eighth).
9TH or IX (Ninth). kPPAddressStreet2 (string value 'kPPAddressStreet2') - Second line of street portion of the cardholder address.
Indiana Driver's License Barcode Information
Optional on all standard barcode versions. Not defined on Compact encoding, where you must use kPPFullAddress. License data. kPPIssuingJurisdiction (string value 'kPPIssuingJurisdiction') - Jurisdictions may define a subfile to contain jurisdiction-specific information. Amar chitra katha india. These subfiles are designated with the first character of “Z” and the second character is the first letter of the jurisdiction's name. For example, 'ZC' would be the designator for a California or Colorado jurisdiction-defined subfile; 'ZQ' would be the designator for a Quebec jurisdiction-defined subfile. In the case of a jurisdiction-defined subfile that has a first letter that could be more than one jurisdiction (e.g.
California, Colorado, Connecticut) then other data, like the kPPIssuerIdentificationNumber, kPPAddressJurisdictionCode or kPPFullAddress must be examined to determine the jurisdiction. Optional on all barcode versions, mandatory on Compact Encoding. kPPStandardVehicleClassification (string value 'kPPStandardVehicleClassification') - Standard vehicle classification code(s) for cardholder. This data element is a placeholder for future efforts to standardize vehicle classifications.
Optional on all barcode versions, including compact encoding. kPPStandardEndorsementCode (string value 'kPPStandardEndorsementCode') - Standard endorsement code(s) for cardholder. This data element is a placeholder for future efforts to standardize endorsement codes. Optional on all barcode versions, including compact encoding. H = Hazardous Material - This endorsement is required for the operation of any vehicle transporting hazardous materials requiring placarding, as defined by U.S.
Department of Transportation regulations. L = Motorcycles – Including Mopeds/Motorized Bicycles. N = Tank - This endorsement is required for the operation of any vehicle transporting, as its primary cargo, any liquid or gaseous material within a tank attached to the vehicle. O = Other Jurisdiction Specific Endorsement(s) - This code indicates one or more additional jurisdiction assigned endorsements. P = Passenger - This endorsement is required for the operation of any vehicle used for transportation of sixteen or more occupants, including the driver.
S = School Bus - This endorsement is required for the operation of a school bus. School bus means a CMV used to transport pre-primary, primary, or secondary school students from home to school, from school to home, or to and from school sponsored events.
Aamva License Standards
School bus does not include a bus used as common carrier (49 CRF 383.5). T = Doubles/Triples - This endorsement is required for the operation of any vehicle that would be referred to as a double or triple. X = Combined Tank/HAZ-MAT - This endorsement may be issued to any driver who qualifies for both the N and H endorsements. kPPStandardRestrictionCode (string value 'kPPStandardRestrictionCode') - Standard restriction code(s) for cardholder. This data element is a placeholder for future efforts to standardize restriction codes. Optional on all standard barcode versions.
Not defined on Compact encoding, which has no compatible field.
Overview The Scandit parsing library supports all versions of the AAMVA Driver License/Identification specification (2000, 2003, 2005, 2009, 2010, 2011, 2012, 2013, 2016) used in the USA and in Canada. Pre-specification codes (before 2000) are currently not supported. Encrypted codes issued in Georgia before 2012 are also currently not supported.
The encoding of card holder information has changed significantly between revisions of the DL/ID specification (most notably between 2000 codes and later codes) and the same piece of information is encoded differently, depending on the version. We provide a subset of the information as part of the:ref:unified-label, which exposes the fields in a version-agnostic way. In addition, the implementations of the specification vary strongly between jurisdictions, as many of them don’t implement the specifications correctly. If you are experiencing trouble when scanning certain DL/ID cards, we suggest to contact the Scandit team to resolve the issues.
Exposed Fields The data in DL/ID codes is encoded into data elements. A data element is uniquely identified by its data element ID. Some data elements are mandatory (present on every code) while others are optional. Fields, including mandatory ones, vary between specification versions.
It is thus required to handle these versions differently. Further information about the data elements can be found in the DL/ID specifications on the. The first field is the header field. Its raw content is empty. Its parsed content is a dictionary with following key/value pairs:. “AAMVAVersion”: integer (0-99).
“jurisdictionVersion”: integer (0-99). “IIN”: 6 digit numeric string AAMVAVersion corresponds to the version of the specifications that is implemented in the code: 0=pre-specification, 1=2000, 2=2003, 3=2005, 4=2009, 5=2010, 6=2011, 7=2012, 8=2013, 9=2016. JurisdictionVersion is a jurisdiction specific version number of the implementation. IIN is the Issuer Identification Number which uniquely identifies the issuing jursidiction. If the AAMVAVersion is. “unified” field The “unified” field is always present.
The idea behind the unified field is to facilitate the access to data that might be encoded differently depending on the version of the standard by mapping the data in a standardized way. Mandatory Fields for spec version 1 (2000) Following data fields are always present in a version 1 code: Data Element ID Meaning Parsed Content DAA Driver License Name DAG Driver Mailing Street Address 1 DAI Driver Mailing City DAJ Driver Mailing Jurisdiction Code DAK Driver Mailing Postal Code A ZIP code is parsed as a dictionary with following key/value pairs:. ‘5digit’: 5-digit postal address (ZIP). ‘9digit’: 9-digit postal address (ZIP+4) Note that only certain jurisdictions encode the full 9-digit ZIP codes. Therefore the ‘9digit’ field is often empty or contains the padded 5-digit codes. Generally you will want to use the 5-digit code as it is reliably present. Both fields may be empty.
DAQ Driver License/ID Number DAR Driver License Classification Code DAS Driver License Restriction Code DAT Driver License Endorsements Code DBA Driver License Expiration Date A date is parsed as a dictionary with following key/value pairs:. ‘day’: DD. ‘month’: MM. ‘year’: YY where DD, MM and YYYY are two-digit, respectively four-digit integers.
Driver License Check
DBB Date of Birth the same as ‘DBA’ DBC Driver Sex (‘F’ or ‘M’) DBD Driver License or ID Document Issue Date the same as ‘DBA’. Optional Fields for spec version 1 (2000) Following data fields are sometimes present in a version 1 code: Data Element ID Meaning Parsed Content DAU Height (in feet and inches) A dictionary with following key/value pairs:. ‘in’: X. ‘cm’: Y where X is the heigth in inches and Y is the height in cm. Optional Fields for spec version 2 and later (2003+) Following data fields are sometimes present in a version =2 code: Data Element ID Meaning Parsed Content DAH Second line of street portion of the cardholder address. DAZ Hair color.
Keys for obtaining US Driver's license data Standard for US Driver's Licenses defines several different barcode standards with over 80 different fields encoded inside a barcode. Some fields exist on all barcode standards, other exist only on some. To standardize the API, we have structured the fields in the following sections:. Determining Barcode version USDLScanResult.kDocumentType Mandatory on all driver's licenses. All barcodes which are using 3-track magnetic stripe encoding used in the interest of smoothing a transition from legacy documents shall be designated as Magnetic.
All barcodes which are using compact encoding compliant with ISO/IEC 18013-2 shall be designated as Compact. All barcodes (majority) compliant with Mandatory PDF417 Bar Code of the American Association of Motor Vehicle Administrators (AAMVA) Card Design Standard from AAMVA DL/ID-2000 standard to DL/ID-2013 shall be designated as AAMVA. USDLScanResult.kStandardVersionNumber Mandatory on all driver's licenses. AAMVA Version Number This is a decimal value between 00 and 99 that specifies the version level of the PDF417 bar code format. Version '0' and '00' is reserved for bar codes printed to the specification of the American Association of Motor Vehicle Administrators (AAMVA) prior to the adoption of the AAMVA DL/ID-2000 standard. All bar codes compliant with the AAMVA DL/ID-2000 standard are designated Version 01.
All barcodes compliant with AAMVA Card Design Specification version 1.0, dated 09-2003 shall be designated Version 02.