I've been running Blue Iris on Linux with a CodeProject.AI backend on an NVIDIA GPU, and ALPR has been the weak spot. MikeLud's YOLO11 ALPR modules are the good ones (his thread), but they're Windows-only — on a Linux/Docker CPAI they won't run, which leaves just the PaddleOCR reader, and that struggles on real CCTV plates (small, angled, distant, night). So I packaged a modern YOLO-based reader that runs on Linux/CUDA. Sharing it here in case anyone else is fighting the same thing. (On Windows? Use MikeLud's modules — this is for the Linux/GPU case they don't cover.)
Repo: (MIT)
What it is — wraps ankandrew's fast-alpr (YOLOv9 plate detector + a CCT OCR model, pure ONNX/onnxruntime-gpu, CUDA 12) as a drop-in CPAI module on the standard /v1/vision/alpr route — Blue Iris talks to it with zero client changes.
The value over vanilla fast-alpr is a CCTV accuracy stack: crop-first (on a miss, crop the vehicle out of the 4K and re-run plate detect — a 40px plate becomes a few hundred), Lanczos upscale (not neural SR — that hallucinates), US/CA format + per-char-confidence gating, and multi-frame voting (9RDL852/9ROL852/9RQL852 → one plate). Optional/off: a capture harness and a night low-light branch.
Gotcha: onnxruntime-gpu ≥1.19 ships CUDA/cuDNN as pip extras the Linux loader won't find — call ort.preload_dlls() or it silently runs on CPU.
Real-world: live on a vGPU feeding BI off a wide 4K ColorVu carport/street cam, ~250–350ms/read warm.
Honest limits: an overview cam isn't an LPR cam — sub-100px/briefly-angled plates get missed; the failure is geometry, not the reader; a dedicated choke-point LPR cam still wins. BI only forwards ~3 "best" frames/pass, which bounds the voting.
I'm not going to call it the best anything. On the right camera it reads plates the stock PaddleOCR reader on Linux couldn't. To be clear: this is not a competitor to MikeLud's YOLO11 modules — his are the ones to run on Windows, and this only exists for the Linux/GPU case they don't cover.
Looking for testers on Linux/CUDA with different cameras. Full credit to ankandrew for fast-alpr; the module claims none of MikeLud's code, just points Linux users at an option his (excellent) Windows modules can't serve.
Repo: (MIT)
What it is — wraps ankandrew's fast-alpr (YOLOv9 plate detector + a CCT OCR model, pure ONNX/onnxruntime-gpu, CUDA 12) as a drop-in CPAI module on the standard /v1/vision/alpr route — Blue Iris talks to it with zero client changes.
The value over vanilla fast-alpr is a CCTV accuracy stack: crop-first (on a miss, crop the vehicle out of the 4K and re-run plate detect — a 40px plate becomes a few hundred), Lanczos upscale (not neural SR — that hallucinates), US/CA format + per-char-confidence gating, and multi-frame voting (9RDL852/9ROL852/9RQL852 → one plate). Optional/off: a capture harness and a night low-light branch.
Gotcha: onnxruntime-gpu ≥1.19 ships CUDA/cuDNN as pip extras the Linux loader won't find — call ort.preload_dlls() or it silently runs on CPU.
Real-world: live on a vGPU feeding BI off a wide 4K ColorVu carport/street cam, ~250–350ms/read warm.
Honest limits: an overview cam isn't an LPR cam — sub-100px/briefly-angled plates get missed; the failure is geometry, not the reader; a dedicated choke-point LPR cam still wins. BI only forwards ~3 "best" frames/pass, which bounds the voting.
I'm not going to call it the best anything. On the right camera it reads plates the stock PaddleOCR reader on Linux couldn't. To be clear: this is not a competitor to MikeLud's YOLO11 modules — his are the ones to run on Windows, and this only exists for the Linux/GPU case they don't cover.
Looking for testers on Linux/CUDA with different cameras. Full credit to ankandrew for fast-alpr; the module claims none of MikeLud's code, just points Linux users at an option his (excellent) Windows modules can't serve.