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.

Security camera feeding motion-triggered frames from Blue Iris to the StructOCR API for instant license plate 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.

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
Need more testing? Create a free account to get 200 free credits (equals 200 License Plate scans).

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

SOLUTION

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.

License-plate
SOLUTION

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.

License-plate
SOLUTION

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.

License-plate
SOLUTION

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.

License-plate
SOLUTION

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.

License-plate
SOLUTION

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.

License-plate
SOLUTION

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.

License-plate
SOLUTION

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.

License-plate
SOLUTION

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.

License-plate

Technical Comparisons & Integrations

Explore platform integrations and competitive analysis

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.

Instant Access Cancel Anytime 99.9% Uptime