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
Ready to use this in production? Get 20 free API calls — no credit card needed.
Get 20 Free API Calls →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 20 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 20 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 auto auction windshield stickers and dealership inventory tags. High-accuracy OCR that ignores lot numbers and barcode noise.
Precise Data Extraction and Seamless
Integration with AI-powered OCR API.
Empower your solutions with automated data extraction by
integrating best-in class StructOCR via API seamlessly.
No credit card required • Full API access included