ANPR/LPR
for Industry
Straight facts
This page explains how to deploy Automatic Number Plate Recognition (ANPR/LPR) that actually works in the field—no hype, no unrealistic claims.
🚗 What ANPR/LPR is
Detect a vehicle → locate the plate → read characters → validate against rules → emit events (open gate, log entry, alert). Robust systems separate detection (find plate) from recognition (read text) and add post-validation (formats/whitelists/blacklists).
📍 Where it fits — Use cases
🚪 Access Control & Parking
Gates, barriers, campuses
💰 Tolling & Road Usage
Multi-lane free-flow with lane assignment
👮 Law Enforcement & Watchlists
Stolen/overstay alerts
📦 Logistics & Yards
Dock scheduling, dwell time
🏭 Industrial Sites
Safety, contractor tracking, shift analytics
🇹🇭 Thailand specifics that matter
Thai Plate Formats
Thai plates vary: private cars often 2 Thai letters + 1–4 digits + province line; motorcycles and commercial fleets differ; there are temporary red plates, special backgrounds, colored series, and certain numeric-only prefixes for bus/truck classes (per Land Transport Act).
⚠️ Character Challenges
Thai letters that resemble numerals (e.g., 0/O, B/8)
🔧 Physical Issues
Plate frames/covers, reflective glare, dirt, and mixed fonts
🏛️ Local & Special Plates (Thailand/ASEAN)
We support localized and non-standard plate types with a combined approach: custom detection, extended OCR charsets, and rule-based validators.
🏛️ Diplomatic / Embassy (CD/CC)
Prefix/format validators + Latin/Arabic OCR; color/texture cues help disambiguate series.
🏢 Government plates with Thai numerals (๐–๙)
OCR includes the Thai digit set; events deliver both plate_raw (Thai digits) and plate_norm (Arabic digits).
🏭 Internal / non-standard plates
Template-aware validators (regex + dictionaries) and fine-tune detector/OCR on your samples.
🔴 Temporary / special backgrounds
Multi-frame voting + plate ROI enhancement improves read-rate in glare/reflective conditions.
🏗️ System architecture (practical)
1. Trigger/Track
Motion, loop, radar, or vision tracker
2. Plate Detection
Model finds plate ROI (multi-frame tracking)
3. Enhancement
De-skew, denoise, super-res (optional)
4. OCR/Recognition
Thai+Latin charset with CTC/attention models
5. Post-validation
Country/region rules, regex formats, majority-vote
6. Eventing & API
JSON/REST/MQTT to VMS/Access/ERP
📷 Camera & optics that actually work
📐 Placement (single lane)
- • Distance 5–15 m, mount 3–5 m high
- • Horizontal & vertical angles ≤ 30°
- • Roll ≤ 5°
🎯 Pixel Density
- • Plate width ≥ 150–200 px
- • More for motorcycles/small fonts
⚡ Shutter Speed
- • 1/1000–1/4000 s for 40–120 km/h
- • Lock shutter, let gain/IR handle exposure
🎬 Frame Rate
- • 25–60 fps
- • Multi-frame voting improves read rate
💡 Illumination
- • 850 nm IR, narrow beam aimed at lane
- • Consider strobe synced to shutter
- • Kill headlight glare
🔧 Hardware
- • Prefer global shutter for high speed
- • Strong WDR helps at night and back-light
- • Motorized varifocal (12–50 mm)
- • Add polarizer if glare is severe
💡 Tip
Separate "plate camera" (narrow FOV) from "overview camera" (wide FOV); don't try to do everything with one camera
📊 Performance metrics you should demand
📸 Capture Rate
% of vehicles with a visible, usable plate in the frames
👁️ Read Rate
% of visible plates that are correctly read
🎯 Precision/Recall/F1
Character-level and plate-level accuracy metrics
📈 Confidence & Threshold Curves
ROC/PR curves to tune FP vs FN
⚡ Throughput & Latency
Per lane; CPU/GPU utilization; dropped frames
⚠️ Common failure modes (and fixes)
🌀 Motion blur at junctions
Fix: Faster shutter; add pre-trigger (loop/radar); track across frames and majority-vote
💡 Headlight/retro-reflective washout
Fix: Strobe IR, shorter exposure, polarizer, narrower IR beam
📐 Oblique angles / two plates in FOV
Fix: Constrain to one lane, correct placement
🖼️ Frames/covers/dirty plates
Fix: Enhance plate ROI, raise pixel density, add "unreadable" state
🔤 Similar characters (0/O, B/8)
Fix: Post-validator with Thai formats + province dictionary + hotlist cross-check
🚀 Deployment patterns
📱 On-camera LPR
Simple wiring; limited by camera CPU and vendor model; fine for parking gates
📦 Edge box (GPU/ASIC)
Best balance for 1–8 lanes/site; integrates with VMS/Access; resilient offline
☁️ Server/Cloud
Many lanes/locations; ensure privacy, bandwidth, and failover
🔒 Data, privacy, and PDPA
📋 Personal Data Treatment
Treat plates as personal data: signage, purpose limitation, retention policy (e.g., 30–90 days), access logs
💾 Storage Strategy
Store plate text + hash, ROI crops, and unredacted original only where authorized
🔍 Hash-lookup Workflows
Offer workflows for audits without exposing full identities
🔐 Security Measures
Encrypt in transit/at rest; role-based access; time-stamped evidence
❓ What to ask vendors
📊 Performance Evidence
Per-lane read rate at your distance/angle/speed, day & night (with test video)
📷 Technical Plan
Shutter/IR plan and pixel-density plan; global vs rolling shutter
🇹🇭 Thai Support
Thai formats supported? Post-validation rules and dictionaries?
🔗 Integration
REST/MQTT, VMS (e.g., NX), Access/ERP; on-prem vs cloud
📋 Evidence Pack
Images, crops, confidence, latency, and full audit trail
🔗 GaugeSnap integration
🧠 Edge AI Vision
Tuned for Thai plates (detector + OCR + Thai format validator + province dictionary)
🗳️ Multi-frame Voting
Boost read rate at junction speeds
🔌 APIs to Your Stack
REST/MQTT webhooks to VMS (NX), Access Control, Parking, ERP
🔒 Privacy-first Storage
Hashed plates, configurable retention, role-based access, PDPA-ready audit logs
📊 Dashboards
Capture/read rates, confidence histograms, latency, per-lane health
🚀 How to start (low-risk)
Send a 30–60 s test video per lane (day & night), with distance/angles and target speed. We'll return:
1. Camera/IR/shutter plan
Pixel-density check
2. Baseline read-rate estimate
With multi-frame voting
3. Integration outline
Events, APIs, retention/PDPA