Skip to content

License Plate Recognition

Meridian VMS includes built-in License Plate Recognition (LPR), also known as Automatic Number Plate Recognition (ANPR). The system reads license plates from camera feeds, logs every read with a thumbnail and confidence score, and can trigger alarms or automations based on whitelist/blacklist rules.

LPR operates from two distinct camera sources, which can be used independently or together:

Purpose-built LPR cameras positioned at vehicle entry/exit points with optimal angle, lighting, and resolution for plate capture. These cameras are flagged as LPR-enabled in camera settings, and the system applies plate-specific preprocessing (contrast enhancement, region cropping) before OCR.

SettingDescription
LPR RegionCrop region within the frame where plates are expected (reduces processing)
Plate FormatExpected plate format regex for validation (e.g., [A-Z]{2,3}\s?\d{3}\s?[A-Z]{0,2})
Min ConfidenceMinimum OCR confidence to accept a plate read (default: 70%)

Any camera running AI detection can also contribute plate reads. When the detection engine identifies a vehicle (car, truck, bus, motorcycle), the vehicle crop is passed through the LPR pipeline as a secondary analysis step. This provides opportunistic plate reads from existing cameras without dedicated hardware.

Detection-sourced reads typically have lower confidence than dedicated LPR cameras but provide broader coverage.

Camera Frame
--> Vehicle Detection (AI model)
--> Plate Region Detection (plate localizer)
--> OCR (character recognition)
--> Format Validation
--> Whitelist/Blacklist Check
--> Event Creation + Notification

Each plate read produces an LPR event containing:

FieldDescription
plateRecognized plate text (normalized)
confidenceOCR confidence (0-100%)
det_confidenceVehicle detection confidence
vehicle_classDetected vehicle type (car, truck, bus, motorcycle)
camera_idSource camera
thumbnailCropped image of the plate region
full_frameFull frame at time of detection
timestampTime of the read
directionEntry or exit (if camera is configured with a direction)

Plate lists provide automated responses to known vehicles.

Plates on the whitelist are flagged as authorized. Whitelist matches can trigger automations such as gate opening, barrier lifting, or silent logging without alarm. Each whitelist entry includes:

  • Plate number (exact match or pattern)
  • Label (e.g., owner name, department, vehicle description)
  • Expiry date (optional, for temporary access)
  • Active hours (optional, restrict to specific time windows)

Plates on the blacklist trigger immediate alarm creation. Use cases include stolen vehicles, banned individuals, or vehicles of interest. Blacklist matches:

  • Create a high-priority alarm automatically
  • Send notifications via all configured channels
  • Highlight the event in the LPR dashboard with a red indicator

Lists are managed from Settings > LPR > Plate Lists. Plates can be:

  • Added individually through the UI
  • Imported in bulk via CSV upload (columns: plate, label, list, expiry)
  • Exported for backup or transfer between sites
  • Synced from an external system via the REST API

The plate search interface at Operations > LPR > Search allows querying all historical plate reads:

FilterDescription
PlateFull or partial plate number (wildcard search)
CameraFilter by specific camera or location
Date rangeStart and end timestamps
List matchShow only whitelist hits, blacklist hits, or unknown plates
Vehicle classFilter by vehicle type
Min confidenceOnly show reads above a confidence threshold

Results display in a sortable table with thumbnail, plate text, camera, timestamp, confidence, and list status. Click any result to view the full frame and jump to recorded playback at that timestamp.

LPR events integrate with the standard notification system:

TriggerNotification Content
Any plate readPlate number, camera, timestamp, thumbnail
Whitelist matchPlate + label + “Authorized” status
Blacklist matchPlate + label + “ALERT” status + full frame
Unknown platePlate number flagged for review

Notification channels (Telegram, Discord, email, webhook) are configured per alarm definition. Create an LPR alarm definition with the Detection trigger type and class filter set to license_plate.

LPR events are exposed in Home Assistant as dedicated event entities:

  • Entity: event.{camera_name}_license_plate
  • Event type: plate_detected
  • Event data: plate, confidence, vehicle_class, camera, timestamp

See Home Assistant Integration for automation examples including automatic gate control based on plate whitelist matching.

MethodEndpointDescription
GET/api/lpr/eventsQuery plate read events with filters
GET/api/lpr/events/{id}Get a single LPR event with full details
GET/api/lpr/search?plate={query}Search plates by partial match
GET/api/lpr/listsGet all whitelist/blacklist entries
POST/api/lpr/listsAdd a plate to a list
DELETE/api/lpr/lists/{id}Remove a plate from a list
POST/api/lpr/lists/importBulk import plates from CSV
GET/api/lpr/lists/exportExport all plate lists as CSV
GET/api/lpr/statsLPR statistics (reads today, unique plates, list hit rates)

Enable LPR from Settings > AI Detection > LPR:

SettingDefaultDescription
Enable LPROffMaster toggle for LPR processing
OCR EngineBuilt-inOCR backend (built-in or custom endpoint)
Min Plate Confidence70%Minimum OCR confidence to record a plate read
Deduplicate Window60sSuppress duplicate reads of the same plate within this window
Store Full FramesOnSave full-resolution frames for plate reads (uses more storage)
Direction DetectionOffAttempt to determine vehicle entry/exit direction