Pharmacy Prescription Pickup ID Scanning with PDF417
Scan the license or state ID at pickup, attach the parsed name and ID number to the pickup record, and keep clinical checks separate. Barcode data is captured for confirmation and is not treated as proof of identity or authenticity.
200 free credits = 100 Driver License scans, no credit card. Then from $5 for 500 credits, pay as you go. See pricing

The Identity Data Problem for pharmacy pickup
Pharmacies record who picked up controlled prescriptions, and handwritten or typed logs are slow and inconsistent. Teams also need to keep a readable barcode separate from a verified person or authentic card; mixing the two creates compliance and product risk.
Deterministic Barcode Parsing with Human Confirmation
Scan the license or state ID at pickup, attach the parsed name and ID number to the pickup record, and keep clinical checks separate. StructOCR’s PDF417 API decodes the barcode on the back of US driver licenses and state ID cards and parses the AAMVA record without asking a generative model to reconstruct unreadable values. Both licenses and non-driver state ID cards are accepted; document_kind records which one was presented. Prescription and controlled-substance rules are enforced by the pharmacy system and pharmacist.
Live Demo: US Driver License PDF417 Scanner
No registration required. Upload a file to test the extraction.
Drop files here or click to browse
JPG · PNG · WebP · up to 500 files · max 4.5 MB each
Photograph the barcode on the back, not the whole card. Let it fill the frame and tap on it to focus.
No document handy?
Workflow Applications
Controlled prescription pickup
Pre-fill given_names, surname, document_number and require confirmation before committing the record.
Caregiver pickup logs
Return explicit retake instructions when the barcode is cropped, blurred, or affected by glare.
Drive-through windows
Keep the data-capture result separate from approval, eligibility, fraud, and compliance decisions.
Technical Specs
- Endpoint: POST https://api.structocr.com/v1/driver-license-pdf417
- Inputs: JPG, PNG, or WebP; Base64 JSON or multipart upload; maximum 4.5 MB
- Documents: US driver licenses and state ID cards with an AAMVA PDF417 barcode; document_kind identifies which
- Errors: Explicit PDF417_NOT_DECODED and AAMVA_NOT_VALID responses, with an optional capture_issue hint, support retake and review flows
- Cost: 2 credits for a successful decode; processing failures are refunded
- Decision boundary: The API extracts data and does not make identity, authenticity, eligibility, or legal-compliance decisions
Key Features
- Server-side credentials: Keep the StructOCR API key out of browsers, kiosks, and mobile application bundles.
- Data minimization: Persist only the fields the documented workflow actually requires.
- User confirmation: Present extracted fields for correction before they enter a system of record.
- Recoverable capture: Ask for a clearer image instead of guessing from a failed barcode.
- Independent decisioning: Prescription and controlled-substance rules are enforced by the pharmacy system and pharmacist.
Server-Side PDF417 Integration
Send the complete card-back image from a protected backend. This example selects fields relevant to pharmacy pickup and treats HTTP 422 as a retake or review state.
import base64
import os
import requests
with open("card-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,
)
if response.status_code == 422:
body = response.json()
print("Retake or review:", body.get("error"), body.get("capture_issue"))
else:
response.raise_for_status()
data = response.json()["data"]
print("given_names:", data.get("given_names"))
print("surname:", data.get("surname"))
print("document_number:", data.get("document_number"))Illustrative AAMVA Data
This wholly fictional response demonstrates the API shape for product design and testing. It is not a real person’s credential data.
{
"success": true,
"data": {
"type": "drivers_license",
"document_kind": "id_card",
"source": "pdf417",
"country_code": "USA",
"region": "CA",
"document_number": "SAMPLE1234",
"surname": "SAMPLE",
"given_names": "ALEX MORGAN",
"first_name": "ALEX",
"middle_name": "MORGAN",
"sex": "X",
"date_of_birth": "1990-01-15",
"date_of_issue": "2025-01-15",
"date_of_expiry": "2030-01-15",
"address": "100 EXAMPLE AVE",
"city": "SAMPLE CITY",
"postal_code": "00000",
"vehicle_class": null,
"restrictions": null,
"endorsements": null,
"document_discriminator": "SAMPLE-DISCRIMINATOR",
"issuer_identification_number": null,
"aamva_version": 10,
"jurisdiction_version": 0
}
}Frequently Asked Questions
Which fields are useful for pharmacy pickup?
Common fields include given_names, surname, document_number. Optional values can be null when they are not encoded in the submitted record.
Can customers use a state ID card instead of a driver license?
Yes. State ID cards carry the same AAMVA PDF417 barcode, and the response sets document_kind to id_card.
Does a successful PDF417 response verify identity or document authenticity?
No. Prescription and controlled-substance rules are enforced by the pharmacy system and pharmacist.
Explore More Driver License OCR Solutions
Plasma Donation Center Donor ID Check-In with PDF417
Scan US driver licenses and state ID cards for plasma donation centers. Pre-fill AAMVA fields from the PDF417 barcode and route unreadable cards to a retake.
Ride-Share Driver License Barcode Onboarding API
Use PDF417 and AAMVA parsing for ride-share onboarding. Pre-fill document_number, date_of_expiry, region, handle unreadable barcodes, and keep API credentials server-side.
School Visitor Management with License and ID Barcodes
Scan US driver licenses and state ID cards for school front offices. Pre-fill AAMVA fields from the PDF417 barcode and route unreadable cards to a retake.
Self-Storage Rental Intake with a Driver License Barcode
Use PDF417 and AAMVA parsing for self-storage leasing. Pre-fill given_names, surname, address, handle unreadable barcodes, and keep API credentials server-side.
Senior Living Visitor Check-In with ID Barcode Scanning
Scan US driver licenses and state ID cards for senior living communities. Pre-fill AAMVA fields from the PDF417 barcode and route unreadable cards to a retake.
Indonesian SIM OCR API
Extract NIK, identity, and category data from Indonesian driver's licenses (Surat Izin Mengemudi). Test our low-latency, edge-routed API with a free image upload.
Retail Sportsbook ID Scanning with a PDF417 API
Scan US driver licenses and state ID cards for retail sportsbooks. Pre-fill AAMVA fields from the PDF417 barcode and route unreadable cards to a retake.
Staffing Agency Worker Onboarding with ID Barcodes
Scan US driver licenses and state ID cards for staffing agencies. Pre-fill AAMVA fields from the PDF417 barcode and route unreadable cards to a retake.
Tattoo and Piercing Studio ID Checks with PDF417
Scan US driver licenses and state ID cards for tattoo and piercing studios. Pre-fill AAMVA fields from the PDF417 barcode and route unreadable cards to a retake.
Telecom Customer Onboarding with Driver License PDF417
Use PDF417 and AAMVA parsing for telecom account opening. Pre-fill given_names, surname, date_of_birth, handle unreadable barcodes, and keep API credentials server-side.
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.
Add Container OCR to Your Replit App in 5 Minutes
Step-by-step guide to integrating the StructOCR shipping container API into a Replit application. Build logistics and yard management tools using Replit Agent and Secrets.
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.