If you’ve renewed your driver’s license any time in the last few years, you have likely noticed an increase in its visual complexity. Many governing bodies have made significant strides towards making forgery more difficult. The unfortunate side-effect from that positive change is that traditional recognition algorithms are more difficult with the many colors, backgrounds, holograms, and layouts.
Thankfully, new driver’s licenses also have PDF417 barcodes on them, and in North America, follow specifications laid out by the American Association of Motor Vehicle Administrators (AAMVA). These barcodes are small, error resistant, and can encode a lot of information.
This tutorial will introduce you to the classes and methods for both reading and writing AAMVA-compliant barcodes from Driver’s Licenses.
Reading AAMVA Barcodes
Since Driver’s Licenses are so broadly accepted as forms of identification, there are a wealth of opportunities for reading the information from them. We covered those concepts in an earlier white paper on Capturing Customer Information from Driver’s Licenses, so we won’t repeat them here. That paper also discussed using the PDF417 barcodes before they were regulated by AAMVA. Since then, LEADTOOLS has added a new AAMVAID
class which does all the field parsing for you.
Driver’s License Verification All driver’s license numbers will be circled in red for easier identification. There is an explanation as to how long and what types of characters are used for the license numbers for each state. Alabama: The number is 7 or 8 digits in length (all numbers, no spaces or symbols) for the current license, 7. Tennessee State Government - TN.gov. Shown alphabetically by state: Covering all valid formats of driver’s licenses, minor’s licenses, commercial driver’s licenses (CDL), and nondriver identification cards. Includes: Security features (holograms, UVs, microprints) with drivers license format information on placement of bar codes and mag stripes. Back of license data.
What’s the big deal? Take a look at the raw data for an AAMVA barcode:
Where’s the name? Or the birthdate? Do you need to calculate if this person is over 21 and legally allowed to make a purchase? With LEADTOOLS, you can get that kind of information in beautiful, strongly typed properties:
Writing AAMVA Barcodes
There may be fewer reasons for generating AAMVA barcodes, but every motor vehicle agency in every state or province in the United States, Canada, and Mexico needs the ability to print them on the licenses they issue. Naturally, you can’t just print any old barcode onto licenses and IDs. As with most specifications, they are hard to follow and can cause a significant development roadblock due to the R&D requirements. LEADTOOLS simplifies this in two ways: generating the AAMVA string and creating the PDF417 barcode.
First, you need to convert your customer data into a valid AAMVA string value. To aid in this process, LEADTOOLS provides the AAMVAIDBuilder
class. The builder will help organize the data and output it conforming to the 2016 AAMVA CDS. Here we initialize the AAMVAIDBuilder
, add some information and then use the Build function to generate the AAMVAID
object:
Now that our customer’s information is correctly encoded for AAMVA, we will create the PDF417 barcode. Thanks to LEAD’s nearly three decades of experience in with raster and document imaging technologies, this process is even simpler than writing the AAMVA string despite the barcode’s greater complexity. Here we generate the BarcodeEngine
, set a few options to help the proportions make AAMVA happy, and LEADTOOLS takes care of the rest. In this simple case, we simply created a blank image using the calculated bounds of the barcode:
As a check, we’ll load the image back into the Main Barcode demo like before and read the data.
Change the World! (or at least your DMV...)
credit: Giphy and Walt Disney Animation StudiosReading is actually the easy part. Most of you on this blog are pretty keen and might've picked up on how the raw data in that string worked and thought, 'I could parse that!' As mentioned previously, the biggest catch out there is adoption. It's one thing to figure out how to parse some values from a long text string, but writing them out correctly and following the AAMVA spec is what's really holding states and countries back. LEADTOOLS makes it incredibly easy to make sure your data follows the specifications, AND can write the barcode. So get out there and code something that's so easy, even a sloth can do it!
Conclusion
LEADTOOLS has a history of staying on the forefront of document imaging and recognition technologies like OCR, Forms, Barcode, and PDF. Driver’s licenses and IDs have become far more complex, yet better regulated with the adoption of AAMVA barcodes. LEADTOOLS will stay a viable option for developers wanting to quickly and easily create software to read and write identification data stored in AAMVA barcodes.
Drivers License Barcode By State Massachusetts
Download the Full AAMVA Barcode Example
Driver's License 2d Barcode Generator
You can download the fully functional demo which includes the features discussed above. To run this example you will need the following:
- LEADTOOLS free evaluation
- Visual Studio 2010 or later
- Browse to the LEADTOOLS Examples folder (e.g. C:∖LEADTOOLS 20∖Examples∖) where you can find example projects for this and many more technologies in LEADTOOLS.
Need help getting this sample up and going? Contact our support team for free technical support! For pricing or licensing questions, you can contact our sales team (sales@leadtools.com) or call us at 704-332-5532.
There’s a lot of information about you on the back of your state-issued driver’s license or non-driver ID card, but does scanning your license or making a copy of it give potential identity thieves key information about you? It’s not easy to find out what data is encoded in the barcodes on the back of your ID cards, and your state’s motor vehicles department may not want you to know.
We use driver’s licenses as photo ID for everything from buying cold medicine or booze to boarding a plane, in addition to using them as proof that we’re legally permitted to drive.
Yet people often wonder what information is embedded in those barcodes, and consumer problem-solving columnist Karin Price Mueller of the Star-Ledger decided to find out. Lots of extensive reporting got her…well, she found out what one of the barcodes means, but what the other one contains is a mystery that mere mortals are not allowed to understand.
What the MVC, New Jersey’s motor vehicle agency, could tell her was that some of the data embedded on the back of your license is the same information that’s on the front of your license. There’s your name, birthdate, address, height, and weight. That’s to prevent people from altering the front of their license–say, the year of their birth. The other barcodes, though? We can’t know what information is encoded there for security reasons.
Bamboozled: What the bar codes on your driver’s license reveal about you, and why it matters [Newark Star-Ledger]
Editor's Note: This article originally appeared on Consumerist.