The Best Python API for Global License Plate OCR (Free Image Testing)
Deploy automated license plate recognition (ALPR) built for global scale. Upload a vehicle image for a free test today and extract native scripts and multi-plate layouts seamlessly using Python and our official SDK.

The Problem with Global ALPR Parsers in Python
Enterprise Python applications, especially those built on frameworks like Django, FastAPI, or Flask, often struggle with legacy ALPR libraries that are optimized only for standard Latin alphabets. These traditional tools fail when encountering complex layouts from the Middle East or Asia, and struggle to accurately extract native scripts (Arabic, Cyrillic, Thai, Chinese). Furthermore, generic models often lack the ability to process multi-plate setups, like tractor-trailer configurations, or identify secondary data such as plate colors and vehicle types.
The StructOCR Solution
StructOCR allows your Python backend to offload complex vehicle image processing to our specialized deep learning models. Our API transcends generic models by accurately extracting native scripts worldwide exactly as printed. By returning validated JSON directly to your Python application via our official PyPI SDK, you can easily integrate multi-dimensional attributes—including plate numbers, vehicle types, and country inferences—into your global logistics and tolling workflows. Explore our flexible pricing to scale your production environment seamlessly.
Common Use Cases
- Toll Collection & Parking: Automate entry and exit gates globally by capturing primary plate numbers and vehicle classifications instantly.
- Global Logistics & Border Control: Track multi-plate configurations (e.g., stacked trailer and prime mover plates) simultaneously across international borders.
- Law Enforcement: Cross-reference vehicle types and plate colors to detect unregistered or commercial vehicles dynamically.
Live Demo: License Plate OCR 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
Implementation: SDK Request
Complete, runnable Python code to extract license plate data using the official structocr Python package. For other language examples and deep parameter explanations, visit the full License Plate OCR API Reference.
Prerequisite: Python 3.7+ and the structocr SDK (pip install structocr)
from structocr import StructOCR
from structocr.exceptions import APIError, InvalidAPIKeyError
import json
# 💰 Save 30%+ vs competitors. Get 200 free credits instantly:
# 👉 https://structocr.com/register
# Initialize with your API Key
client = StructOCR("YOUR_API_KEY_HERE")
def scan_vehicle_plate():
# Note: Supports JPG, PNG, WebP (Max 4.5MB)
image_path = "vehicle_image.jpg"
try:
print(f"Scanning {image_path}...")
# The SDK handles file upload and API communication
result = client.scan_license_plate(image_path)
if result and result.get('success'):
data = result['data']
print("✅ Extraction Successful!\n")
plates = data.get('plates', [])
print(f"Plates Detected: {len(plates)}")
country_guess = data.get('country_guess') or "N/A"
print(f"Country Guess: {country_guess}")
print(f"Confidence: {data.get('confidence')}")
print("\n--- Raw Data ---")
print(json.dumps(data, indent=2, ensure_ascii=False))
else:
print(f"❌ Extraction Failed: {result.get('error') or result.get('message')}")
except InvalidAPIKeyError as e:
print(f"Error: Invalid API Key. {e}")
except APIError as e:
print(f"Error communicating with the API: {e}")
except Exception as e:
print(f"An unexpected error occurred: {e}")
if __name__ == "__main__":
scan_vehicle_plate()Technical Specs
- •Input format: Handled natively by the SDK (File Path)
- •File Constraints: Max 4.5MB (decoded), compress to < 300KB for best speed
- •Supported Formats: JPG, PNG, WebP
- •Language Support: Global scripts (Arabic, Chinese, Thai, Cyrillic, etc.)
- •Output: JSON (Multi-dimensional attributes)
Key Features
- •Global Coverage: Optimized for worldwide plates spanning the Middle East, Asia, Europe, and the Americas.
- •Native Script Retention: Extracts local scripts exactly as printed without translation or transliteration.
- •Multi-Plate Parsing: Natively handles extracting multiple plates from a single vehicle (e.g., stacked trailer plates).
Sample JSON Response
The API returns a clean JSON array with details on all detected plates, preserving native characters and strict enums.
{
"success": true,
"data": {
"plates": [
{
"plate_number": "TRE 1631M",
"plate_color": "yellow",
"plate_type": "trailer"
},
{
"plate_number": "XB 98X",
"plate_color": "yellow",
"plate_type": "commercial"
}
],
"region_text": null,
"country_guess": "Singapore",
"confidence": "High"
}
}Frequently Asked Questions
How should I encode the image?
When using the Python SDK, simply pass the local file path. The SDK automatically handles file reading and encoding for you.
What is the maximum file size?
The maximum decoded payload restriction is 4.5MB. Exceeding this will trigger a 413 FILE_TOO_LARGE error.
Can it read non-English characters?
Yes. Our engine natively retains and extracts local scripts like Arabic, Thai, and Cyrillic exactly as printed.
You May Also Like
Related tutorials, platform guides, and comparisons
Java License Plate OCR API
Java License Plate OCR tutorial. Upload an image for a free test! Accurately extract global license plates, native scripts, colors, and vehicle types.
Node.js License Plate OCR API
Node.js License Plate OCR SDK tutorial. Upload an image for a free test! Accurately extract global license plates, native scripts, colors, and vehicle types.
C# License Plate OCR API
C# License Plate OCR tutorial. Upload an image for a free test! Accurately extract global license plates, native scripts, colors, and vehicle types.
Go License Plate OCR API
Golang License Plate OCR tutorial. Upload an image for a free test! Accurately extract global license plates, native scripts, colors, and vehicle types.
PHP License Plate OCR API
PHP License Plate OCR tutorial. Upload an image for a free test! Accurately extract global license plates, native scripts, colors, and vehicle types.
Kazakhstan Passport OCR with Python SDK
Use the official StructOCR Python SDK and FastAPI to extract structured MRZ and VIZ data from Kazakhstan passports with a server-side integration.
UAE Passport OCR with Python SDK
Use the official StructOCR Python SDK and FastAPI to extract structured MRZ and VIZ data from UAE passports with a server-side integration.
UAE Emirates ID OCR Python SDK
Python Tutorial: Automate KYC in the UAE. Extract data from Emirates ID using the StructOCR Python SDK. Supports bilingual (Arabic/English) text, front/back sides, and 3-line MRZ extraction.
Uganda National ID Card OCR Python SDK
Python Tutorial: Automate KYC in Uganda. Extract data from National ID Card using StructOCR Python SDK. Supports native text and MRZ extraction.
UAE Passport OCR with Node.js SDK
Use the official StructOCR Node.js SDK with TypeScript and Express to extract structured MRZ and VIZ data from UAE passports.
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 HIN OCR to Your Bolt.new App in 5 Minutes
Step-by-step guide to integrating the StructOCR HIN (Hull Identification Number) scanner API into a Bolt.new app. Build marine and boat management tools right in your browser.
Invoice OCR API Integration for Bolt.new
Learn how to integrate our Invoice OCR API into a Bolt.new app in under 5 minutes. Extract structured JSON effortlessly. Try our free live test now.
Add National ID OCR to Your Bolt.new App in 5 Minutes
Step-by-step guide to integrating the StructOCR National ID scanner API into a Bolt.new app. Build KYC and identity verification flows right in your browser.
Add Passport OCR to Your Bolt.new App in 5 Minutes
Step-by-step guide to integrating the StructOCR Passport scanner API into a Bolt.new app. Build travel, hospitality, and global KYC flows right in your browser.
Add Receipt OCR to Your Bolt.new App in 5 Minutes
Step-by-step guide to integrating the StructOCR receipt API into a Bolt.new app. Build expense tracking and receipt scanning tools right in your browser.
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.