AAMVA PDF417 Element IDs Reference (DAQ, DCS, DBB)
What the three-letter AAMVA data element IDs on US and Canadian license barcodes mean, from DAQ and DCS to DBB, DBA, and DCF.
Identity elements
DAQ is the customer ID number (license or ID number), DCS the family name, DAC the first name, DAD middle names, DBB the date of birth, and DBC sex.
Extracting It Automatically
When you read this data from photos, the Driver License PDF417 OCR API returns it as structured JSON, and you can apply the rules on this page as validation. Try it with the free scanner.
Where This Fits
- Document elements: DBA is the expiry date, DBD the issue date, DCF the document discriminator, DCG the country, DCA the vehicle class, DCB restrictions, and DCD endorsements.
- Address and description: DAG is the street address, DAI the city, DAJ the jurisdiction code, DAK the postal code, DAU height, and DAY eye color.
- Version differences: Version 1 records use DAA or DAB for names and DAR, DAS, DAT for class, restrictions, and endorsements; later versions use the codes above.
Extract It with the API
Read the document from a photo and validate the returned fields.
Prerequisite: Python 3.9+, `pip install requests`, and a STRUCTOCR_API_KEY
import base64
import os
import requests
with open("license-back.jpg", "rb") as image_file:
image = base64.b64encode(image_file.read()).decode("ascii")
response = requests.post(
"https://api.structocr.com/v1/driver-license-pdf417",
headers={"x-api-key": os.environ["STRUCTOCR_API_KEY"]},
json={"img": image},
timeout=30,
)
response.raise_for_status()
data = response.json()["data"]
print("document_kind:", data.get("document_kind"))
print("document_number:", data.get("document_number"))
print("date_of_birth:", data.get("date_of_birth"))
print("region:", data.get("region"))Technical Specs
- •Endpoint: POST https://api.structocr.com/v1/driver-license-pdf417
- •Authentication: x-api-key request header
- •Inputs: JPG, PNG, or WebP as Base64 JSON; maximum 4.5MB
- •Price: 2 credits per successful request; failed requests are not billed
- •Free trial: 200 free credits on sign-up, no credit card required
Key Features
- •Document elements: DBA is the expiry date, DBD the issue date, DCF the document discriminator, DCG the country, DCA the vehicle class, DCB restrictions, and DCD endorsements.
- •Address and description: DAG is the street address, DAI the city, DAJ the jurisdiction code, DAK the postal code, DAU height, and DAY eye color.
- •Version differences: Version 1 records use DAA or DAB for names and DAR, DAS, DAT for class, restrictions, and endorsements; later versions use the codes above.
- •Validate after OCR: Apply these rules to API output before storing it.
Reference Summary
Key facts from this page in structured form, for quick lookup.
{
"Identity elements": "DAQ is the customer ID number (license or ID number), DCS the family name, DAC the first name, DAD middle names, DBB the date of birth, and DBC sex..",
"Document elements": "DBA is the expiry date, DBD the issue date, DCF the document discriminator, DCG the country, DCA the vehicle class, DCB restrictions, and DCD endorsements..",
"Address and description": "DAG is the street address, DAI the city, DAJ the jurisdiction code, DAK the postal code, DAU height, and DAY eye color..",
"Version differences": "Version 1 records use DAA or DAB for names and DAR, DAS, DAT for class, restrictions, and endorsements; later versions use the codes above.."
}Frequently Asked Questions
Do I need to parse element IDs myself?
Not with StructOCR. The PDF417 API returns normalized JSON fields such as document_number and date_of_birth.
Are dates always MMDDYYYY?
US records typically use MMDDCCYY and Canadian records CCYYMMDD; the API normalizes both to YYYY-MM-DD.
You May Also Like
Related tutorials, platform guides, and comparisons
Kentucky Driver License OCR: Extract Fields with Python
Extract visible fields from Kentucky driver license images into JSON. Map identifiers, names and dates, with a review workflow for incomplete results.
Driver License OCR API Pricing and Cost per Scan
What driver license OCR costs with StructOCR: 2 credits per successful scan, prepaid credits that never expire, and no charge for failed requests.
Connecticut Driver License & ID Card PDF417 API
Decode the PDF417 barcode on Connecticut driver licenses and state ID cards into AAMVA JSON, with document_kind to tell licenses from ID cards.
C# / .NET US Driver License PDF417 API Tutorial
Decode US driver license PDF417 barcodes with C# / .NET. Send a license-back image, parse AAMVA fields, and handle unreadable barcode errors safely.
Kansas Driver License & ID Card PDF417 API
Decode the PDF417 barcode on Kansas driver licenses and state ID cards into AAMVA JSON, with document_kind to tell licenses from ID cards.
AAMVA DL/ID Barcode Versions 1–10 Explained
How AAMVA card barcode versions differ, how to read the version from the ANSI header, and why parsers must handle old and new cards.
Australia Driver License OCR with Python SDK
Extract structured fields from a Australia state or territory driver licence with the StructOCR Python SDK and FastAPI.
Australia Driver License OCR with Node.js SDK
Extract structured fields from a Australia state or territory driver licence with the StructOCR Node.js SDK and TypeScript + Express.
Brazil Driver License OCR with Node.js SDK
Extract structured fields from a Brazil Carteira Nacional de Habilitação (CNH) with the StructOCR Node.js SDK and TypeScript + Express.
Brazil Driver License OCR with Python SDK
Extract structured fields from a Brazil Carteira Nacional de Habilitação (CNH) with the StructOCR Python SDK and FastAPI.
Scandit ID Scanning Alternative: PDF417 Barcode OCR API
Scandit ID Scanning compared with the StructOCR REST API for driver license pdf417 extraction: deployment, pricing model, and when each fits.
Technical Comparisons & Integrations
Explore platform integrations and competitive analysis
Add Driver's License OCR to Your Bolt.new App in 5 Minutes
Step-by-step guide to integrating the StructOCR Driver's License scanner API into a Bolt.new app. Build car rental and mobility onboarding flows right in your browser.
Add Driver's License OCR using Cursor in 5 Minutes
Step-by-step guide to integrating the StructOCR Driver's License scanner API using the Cursor AI code editor. Build car rental and mobility onboarding flows rapidly.
Add Driver's License OCR to Your Lovable.dev App in 5 Minutes
Step-by-step guide to integrating the StructOCR Driver's License scanner API into a Lovable.dev app. Build car rental and mobility onboarding flows with zero backend.
Add Driver's License OCR to Your Replit App in 5 Minutes
Step-by-step guide to integrating the StructOCR Driver's License scanner API into a Replit application. Build car rental and mobility onboarding flows using Replit Agent and Secrets.
Add Driver's License OCR to Your v0 App in 5 Minutes
Step-by-step guide to integrating the StructOCR Driver's License scanner API into a v0 by Vercel app. Build car rental and mobility onboarding flows with zero backend.
Apple Vision Framework / ML Kit vs. StructOCR VIN API
Why generic on-device text recognition frameworks fail at decoding VINs, and when to switch to a specialized automotive API.
From tutorial to production in 5 minutes.
You've seen the code. Now get your API key, grab your 200 free credits, and see it work with your own images. No credit card required.