Adding License Plate OCR to Blue Iris & ZoneMinder (2026 Guide)
Transform your standard IP cameras into intelligent gate-keepers. Configure your existing VMS to trigger lightweight Webhooks for instant, highly accurate vehicle recognition.

The Missing Link in Your VMS: Intelligent Camera ALPR
Open-source and commercial Video Management Systems (VMS) are exceptional at recording and basic motion detection, but adding native, highly accurate license plate recognition has traditionally required expensive proprietary plugins. Whether you are setting up driveway monitoring, HOA gate access, or commercial logistics tracking, you need reliable camera alpr capabilities. Buying dedicated, multi-thousand-dollar LPR cameras is often overkill. Instead of overhauling your hardware, you can test your existing security camera feeds against our API for free to see how standard IP cameras can perform enterprise-grade OCR.
The Webhook Approach for Blue Iris & ZoneMinder ALPR
The most efficient way to achieve blue iris alpr or zoneminder alpr is through a decoupled architecture. You simply configure your VMS to capture a high-resolution JPEG when motion is detected in a specific zone (like a gate entrance). Then, an alert action or Webhook pushes that frame to the StructOCR License Plate API deployed on Cloudflare. Our engine handles the messy realities of security footage—low pixel density, harsh nighttime glare, and off-angle shots—returning structured vehicle data instantly without bogging down your local NVR CPU.
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
VMS Integration Use Cases
Automated HOA & Community Gates
Cross-reference the API's JSON response against an allowlist database to automatically trigger relays that open gates for registered residents.
Driveway & Perimeter Alerting
Send a push notification to your phone containing the extracted plate number and vehicle color whenever an unknown car pulls into your driveway.
Parking Lot Management
Log entry and exit times automatically. For commercial deployments scaling across multiple lots, view our flexible pricing featuring pay-as-you-go tiers and international payment options like Paddle and crypto.
Nighttime Security Auditing
Index every vehicle that passes your cameras overnight, making it easy to search your VMS database by plate number rather than scrubbing through hours of footage.
Technical Specs
- High Environmental Tolerance: Security cameras often suffer from IR washout at night or motion blur. Our engine applies advanced visual filters to mitigate harsh lighting and off-axis angles common in mounted NVR setups.
- Cost-Effective Scalability: Avoid flat-rate licensing fees per camera. With our API, you only pay for the frames you actually process during motion events, making it highly economical.
- Input Versatility: Fully supports raw Base64 strings, direct file uploads, and public URLs—allowing seamless integration whether your VMS is completely offline locally or cloud-connected.
- Edge Optimization: Infrastructure is deployed on Cloudflare, ensuring ultra-low latency processing so your gates open quickly without frustrating delays.
Key Features
- Native Script Retention: Accurately extracts local scripts globally (e.g., Arabic, Thai, Cyrillic) exactly as printed on the plate.
- Multi-Dimensional Data: Unlike raw text OCR, our API categorizes outputs into structured enums for vehicle `plate_type` and `plate_color`, adding valuable context to your security logs.
- Zero Hardware Lock-In: Upgrade your ALPR capabilities without changing your physical cameras. Our API works with any camera that can output a clear image to your VMS.
VMS Integration: Triggering the API via Script
In Blue Iris, you can configure an 'Alert' to run a script, passing the path of the saved high-res image. This Python script takes that image, converts it to Base64, and retrieves the plate data. Check the API documentation for full payload parameters and schema details.
import requests
import base64
import sys
# Blue Iris can pass the image path as a command line argument
# Example: python run_alpr.py "C:\BlueIris\Alerts\cam1_snapshot.jpg"
def process_vms_alert(image_path):
try:
with open(image_path, "rb") as image_file:
base64_image = base64.b64encode(image_file.read()).decode('utf-8')
url = "https://api.structocr.com/v1/license-plate"
headers = {
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json"
}
payload = {
"img": base64_image
}
print(f"Analyzing motion frame: {image_path}")
response = requests.post(url, headers=headers, json=payload)
result = response.json()
if result.get('success'):
plates = result['data'].get('plates', [])
if plates:
plate = plates[0]
print(f"✅ Vehicle Detected: {plate.get('plate_number')} (Normalized: {plate.get('plate_number_normalized')}) | Color: {plate.get('plate_color')}")
print(f"Region: {result['data'].get('region_text')} | Country Guess: {result['data'].get('country_guess')} | Confidence: {result['data'].get('confidence_score')}")
# Insert logic here to check database or send MQTT message
else:
print("No readable plates found in this frame.")
else:
print(f"❌ API Error: {result.get('error') or result.get('message')}")
except Exception as e:
print(f"System error: {e}")
if __name__ == "__main__":
if len(sys.argv) > 1:
process_vms_alert(sys.argv[1])
else:
print("Please provide an image path.")Standardized JSON Output
A single API call returns a structured response that gracefully handles complex layouts, making it trivial to parse within your VMS alert scripts.
{
"success": true,
"data": {
"plates": [
{
"plate_number": "7 SAM 123",
"plate_number_normalized": "7SAM123",
"plate_color": "white",
"plate_type": "private"
}
],
"region_text": "California",
"country_guess": "United States",
"confidence_score": 0.99
}
}Frequently Asked Questions
Will this API work with my specific brand of IP camera?
Yes. As long as your camera can connect to Blue Iris or ZoneMinder and produce a JPEG snapshot during a motion event, our API can process it. The software is completely hardware agnostic.
How do I prevent my VMS from sending hundreds of empty frames to the API?
We recommend configuring strict motion zones (e.g., masking out trees and only highlighting the driveway) and setting a 'make time' in Blue Iris to only trigger alerts for sustained motion. This keeps your API calls efficient and highly relevant.
Can I use this ALPR API for international projects outside of the US and Europe?
Absolutely. The engine is globally optimized to process international plate formats out of the box without requiring manual regional configuration. It accurately captures complex multi-plate layouts and native scripts across Asia, the Middle East, and the Americas, ensuring reliable recognition in diverse logistics environments.
Explore More License-plate Solutions
Automated License Plate Readers (ALPR) for Law Enforcement
Discover how license plate readers for law enforcement power patrol cars and checkpoints. Integrate our high-speed ALPR API into your security systems today.
Legacy ALPR Systems vs. Modern API Solutions
Comparing ALPR system costs? Ditch expensive hardware bundles from Genetec, 3M, and Leonardo Elsag. Discover our hardware-agnostic ALPR cloud API for modern SaaS.
OpenALPR Pricing Guide & The Best Scalable Alternatives
Navigating OpenALPR pricing? Compare Rekor OpenALPR costs and discover our scalable, cost-effective cloud API alternative. Supports crypto and global payments.
How to Build a Python License Plate Recognition System: OpenCV vs. Cloud API
Building an OpenCV number plate recognition system? Compare traditional Python models with our ALPR Cloud API. Upload your car plate images for a free OCR test.
Raspberry Pi ALPR: Heavy Docker Images vs. Lightweight API Calls
Struggling with slow ALPR Docker images on your Raspberry Pi? Switch to our lightweight cloud OCR API for instant recognition. Free image testing available.
Stationary vs. Mobile ALPR Cameras: Which OCR Tech Do You Need?
Comparing mobile ALPR cameras and stationary license plate readers? Discover how our hardware-agnostic OCR API powers any ALPR camera system with ease.
Thai License Plate OCR API: Overcoming Non-Latin Character Challenges
Struggling with an OpenALPR Thai setup? Our global OCR number plate recognition API perfectly extracts native Thai scripts, province names, and color codes.
Vietnam ALPR & Motorcycle Plate Recognition API
Need reliable Vietnam ALPR for high-density motorcycle traffic? Our OCR API instantly extracts two-line square plates, plate colors, and vehicle types despite severe glare.
Arabic License Plate OCR API: Overcoming Non-Latin Character Challenges
Struggling with an OpenALPR Arabic setup? Our global OCR number plate recognition API perfectly extracts native Middle Eastern scripts, dual-layouts, and numerals.
Technical Comparisons & Integrations
Explore platform integrations and competitive analysis
Add Receipt OCR to Your v0 App in 5 Minutes
Step-by-step guide to integrating the StructOCR receipt API into a v0 by Vercel app. Build expense tracking and receipt scanning tools right in your browser.
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.
AWS Textract vs. StructOCR API for Indian Passport Back Page Extraction
Why generic OCR fails at parsing the back page of Indian passports, and how a dedicated KYC API instantly extracts structured addresses, PIN codes, and family details.
AWS Textract & Google Vision vs. StructOCR Passport API
Why generic cloud OCR APIs fail at structured KYC automation, and why developers choose specialized Passport APIs instead.
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.