US DMV Title VIN Extraction API

Automate vehicle title transfers and loan origination. Accurately extract the 17-character VIN from highly variable US DMV Titles, effortlessly bypassing state-specific security backgrounds and faded dot-matrix prints.

Extracting a 17-digit VIN from a scanned US DMV Certificate of Title.

The Variability of 50 State Titles

Digitizing US Certificates of Title (often called 'pink slips') presents a massive standardization problem. Each of the 50 states uses a completely different document layout. More critically, these official documents are printed on colored security paper with complex guilloche watermarks to prevent forgery. To make matters worse, many state DMVs still utilize legacy dot-matrix printers, resulting in broken, faded, or misaligned characters. Traditional template-based OCR engines break constantly due to layout changes and background noise. For a deeper dive into how our API handles unstructured official forms, see our core OCR product capabilities.

StructOCR: Template-Free & Security Paper Ready

StructOCR completely eliminates the need to map templates for 50 different states. Powered by our flagship Automotive VIN OCR API, it semantically searches the entire document for the core vehicle identifier. The neural network applies advanced frequency filtering to neutralize the colored anti-counterfeit backgrounds. It intelligently reconstructs the disjointed dots of legacy printers, applying strict ISO 3779 validation to ensure the extracted string is a perfect, 17-character VIN ready for compliance checks.

Live Demo: VIN Barcode Scanner

No registration required. Upload a file to test the extraction.

1
Upload
2
Results

Drop files here or click to browse

JPG · PNG · WebP  ·  up to 500 files · max 4.5 MB each

No files selected

Ready to use this in production? Get 20 free API calls — no credit card needed.

Get 20 Free API Calls →

Core Industry Applications

Auto Lending & Title Loans

Accelerate loan origination by allowing borrowers to upload a photo of their title, instantly verifying the asset against NMVTIS databases. Get 20 free credits to test your own documents.To streamline your vehicle intake process without any integration, try capturing data effortlessly with our free VIN barcode scanner directly from your browser.

Dealership F&I Offices

Finance and Insurance managers can instantly digitize trade-in titles, eliminating manual data entry errors that delay state registration transfers.

Insurance Total Loss Processing

Automate the intake of branded or salvage titles when processing total loss claims, ensuring the correct vehicle is retired.

Wholesale Auction Intake

Auction houses can rapidly process incoming inventory by scanning titles in bulk, mapping the extracted VIN to the physical vehicle.

Technical Specs

  • Dot-Matrix Reconstruction: Specifically trained to connect faded, broken characters typical of legacy DMV printers
  • Validation: Built-in ISO 3779 rules & Length constraint (strictly 17 chars)
  • Latency: < 1.2s per document via API
  • Data Privacy: Zero data retention (SOC2 Compliant)

Key Features

  • Template-Free Architecture: Works universally across all 50 US state title layouts without manual mapping.
  • Security Paper Neutralization: Filters out complex colored backgrounds and anti-forgery watermarks.
  • Format Support: Accepts raw Base64 or Data URIs (JPG, PNG, WebP up to 4.5MB).

Integration & AI Prompts

Call the endpoint directly via our REST API, 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("us_dmv_title.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 US DMV Title...")
    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, structural confidence, and identifies the carrier as a document.

{
  "success": true,
  "data": {
    "vin": "1G1RC6E45BU123456",
    "confidence": "High",
    "carrier_type": "document"
  }
}

Frequently Asked Questions

Do I need to tell the API which state the title is from?

No. StructOCR is completely template-agnostic. It semantically searches the document for the ISO 3779 structural signature, regardless of whether it's a California, Texas, or Florida title.

Can it read the VIN if the title was printed on an old dot-matrix printer?

Yes. Our deep learning models are trained to recognize and reconstruct 'broken' or disjointed characters commonly produced by legacy DMV impact printers.

Does the API extract the owner's name or address?

This specific endpoint is highly optimized for extracting the 17-character VIN. It intentionally ignores PII (Personally Identifiable Information) like names and addresses to maintain high speed and SOC2 compliance.

Explore More Automotive VIN OCR Solutions

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