Windshield VIN OCR API
Reliably scan VINs through car windshields. Our API cuts through severe glass glare, mirrored reflections, and steep angles to extract the 17-character VIN with 99% accuracy.

The Challenge of Through-Glass OCR
Scanning a VIN through a vehicle's windshield is one of the toughest computer vision tasks in the automotive industry. The physical environment introduces severe optical noise: heavy sun glare, mirror-like reflections of the person taking the photo, dashboard shadows, and physical dirt on the glass. Traditional template-based OCR engines simply cannot differentiate the engraved alphanumeric characters from these high-contrast reflections, resulting in failed scans or garbage data. For an overview of how we solve complex physical environments, see our core OCR product capabilities.
StructOCR: Engineered for Real-World Glare
StructOCR is purpose-built to conquer physical optical interference. Powered by our flagship Automotive VIN OCR engine, it applies advanced deep learning pre-processing to neutralize hotspots and filter out foreground reflections. The system utilizes strict ISO 3779 validation to ensure the extracted string is a perfect 17-character VIN, auto-correcting ambiguous characters (e.g., distinguishing an '8' from a 'B' despite dust or scratches).
Live Demo: VIN Barcode 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
Core Industry Applications
Dealership Service Drives
Service advisors can instantly check-in vehicles by snapping a photo of the windshield with a tablet, avoiding manual typing errors. Get 200 free credits to test your own live captures.To streamline your vehicle intake process without any integration, try capturing data effortlessly with our free VIN barcode scanner directly from your browser.
Mobile Insurance Adjusters
Accelerate field claims by reliably scanning the VIN directly from the damaged vehicle's dashboard, regardless of challenging outdoor lighting conditions.
Fleet & Yard Management
Automate inventory audits by allowing logistics workers to quickly scan windshield VINs as vehicles enter or exit the holding yard.
Tow Truck & Recovery Operators
Quickly identify and log impounded or transported vehicles safely from the outside of the locked car without needing the physical keys.
Technical Specs
- Glare Handling: Purpose-trained neural networks for reflection and shadow mitigation
- Validation: Built-in ISO 3779 logic & Length constraint (strictly 17 chars)
- Latency: < 1.2s per document
- Data Privacy: Zero data retention (SOC2 Compliant)
Key Features
- Reflection Filtering: Accurately separates the underlying engraved text from glass surface reflections.
- Auto-Deskew: Corrects severe perspective distortion caused by the steep angle of the windshield glass.
- Format Support: Accepts raw Base64 or Data URIs (JPG, PNG, WebP up to 4.5MB).
Integration & AI Prompts
Call the endpoint directly, or copy the prompt below into Cursor, Lovable, or v0 to instantly generate your frontend application.
import requests
import base64
# 💰 Save 30%+ vs competitors. Get 200 free credits instantly:
# 👉 https://structocr.com/register
# 1. Prepare Base64 Image
with open("windshield_vin.jpg", "rb") as image_file:
base64_image = base64.b64encode(image_file.read()).decode('utf-8')
url = "https://api.structocr.com/v1/vin"
headers = {
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json"
}
payload = {
"img": base64_image
}
try:
print("Scanning Windshield VIN...")
response = requests.post(url, headers=headers, json=payload)
result = response.json()
if result.get('success'):
data = result['data']
print("✅ Extraction Successful!")
print(f"VIN: {data.get('vin')}")
print(f"Confidence: {data.get('confidence')}")
print(f"Carrier Type: {data.get('carrier_type')}")
else:
print(f"❌ Extraction Failed: {result.get('error')} - {result.get('message')}")
except Exception as e:
print(f"An error occurred: {e}")Standardized JSON Output
The API returns a clean, structured payload containing the validated 17-character VIN and successfully identifies the carrier as a windshield.
{
"success": true,
"data": {
"vin": "5UXWX7C51BA123456",
"confidence": "High",
"carrier_type": "windshield"
}
}Frequently Asked Questions
What happens if sun glare completely covers part of the VIN?
While our API is highly resilient to glare, if the physical text is 100% obliterated (overexposed to pure white), no optical system can read it. However, if even faint pixel data exists, our ISO 3779 auto-correction logic can often reconstruct the missing character based on the checksum.
Does the API work at night or in low-light conditions?
Yes, provided the camera flash illuminates the VIN. Our model is specifically trained to handle the concentrated 'hotspot' glare caused by smartphone flashes bouncing off the windshield glass.
What image formats and sizes are supported?
The API accepts JPG, PNG, and WebP formats. Images can be sent as direct URLs or Base64 encoded strings, with a maximum payload size of 4.5MB.
Explore More Automotive VIN OCR Solutions
Universal VIN OCR API Solution
Our flagship API for automated vehicle identification. Works across windshields, documents, and physical plates with 99% accuracy.
Arabic Vehicle Registration VIN OCR
Extract 17-character VINs (Chassis Numbers) from Arabic registration cards. High-accuracy OCR featuring ISO 3779 validation and auto-correction.
Window-Mounted Auction Sticker VIN OCR
Extract 17-character VINs from inventory tags placed behind vehicle windshields. High-accuracy OCR that ignores massive lot numbers and filters out glass reflections.
Auto Auction Sticker VIN OCR
Extract 17-character VINs from barcode-bearing auto auction windshield stickers and dealership inventory tags, despite lot numbers, glare, and faded thermal print.
Auto Insurance Policy VIN Extraction
Extract 17-character VINs from highly variable auto insurance policies and ID cards. Template-free OCR that handles unstructured layouts and scanned faxes.
Auto Repair Invoice (RO) VIN Extraction
Extract 17-character VINs from auto repair orders and shop invoices. High-accuracy OCR that handles thermal paper, grease stains, and unstructured layouts.
Auto Transport Bill of Lading (BoL) OCR
Extract multiple 17-character VINs simultaneously from vehicle transport Bills of Lading (BoL). High-accuracy OCR that parses dense logistics tables.
Cyrillic Vehicle Registration (STS) VIN OCR
Extract 17-character VINs from Cyrillic vehicle documents (like Russian STS). Advanced OCR eliminates visual homoglyph confusion between Cyrillic and Latin alphabets.
Digital Screen VIN OCR
Extract 17-character VINs from photos of computer screens and digital monitors. High-accuracy OCR that eliminates Moiré patterns, pixelation, and screen glare.
Door Jamb Certification Label VIN OCR
Extract 17-character VINs from barcode-bearing door jamb certification labels. High-accuracy OCR handles tire pressure, weight specs, grime, and dense vehicle data.
Door Jamb Compliance Label VIN OCR
Extract 17-character VINs from door jamb safety certification labels. High-accuracy OCR that handles sideways images, complex compliance boilerplate, and varied lighting conditions.
Technical Comparisons & Integrations
Explore platform integrations and competitive analysis
Add VIN OCR to Your Lovable.dev App in 5 Minutes
Step-by-step guide to integrating the StructOCR VIN scanner API into a Lovable.dev app. Build automotive and fleet tools with zero backend required.
OpenALPR vs. StructOCR API for VIN Decoding
Why traditional License Plate Recognition (ALPR) engines are not suitable for scanning Vehicle Identification Numbers (VINs).
Add VIN OCR to Your Replit App in 5 Minutes
Step-by-step guide to integrating the StructOCR VIN scanner API into a Replit application. Build automotive and fleet tools using Replit Agent and Secrets.
Add VIN OCR to Your v0 App in 5 Minutes
Step-by-step guide to integrating the StructOCR VIN scanner API into a v0 by Vercel app. Build automotive and fleet tools with zero backend.
VIN Barcode Scanner vs. VIN OCR API: Which is Better for Mobile Apps?
Deciding between local VIN barcode scanners and cloud-based VIN OCR API for your mobile app? Learn why OCR is the required fallback for damaged or chassis-stamped VINs.
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.