parkpow/deep-license-plate-recognition
Automatic License Plate Recognition (ALPR) or Automatic Number Plate Recognition (ANPR) software that works with any camera.
What it does
This repo bundles ready‑to‑run Python scripts and small helper projects that talk to Plate Recognizer – a cloud or on‑premise service that runs a deep‑learning model for license‑plate detection and OCR. The code does not contain the neural‑network itself; it only wraps the service’s REST API (or the self‑hosted Snapshot SDK) and provides convenient command‑line tools for common workflows:
| Task | Tool | Typical use‑case |
|---|---|---|
| Single‑image recognition | plate_recognition.py |
Quickly get the plate text, confidence and bounding box from a local photo. |
| Plate redaction (blur) | number_plate_redaction.py |
Produce a copy of an image with the plate masked, optionally splitting large images for better accuracy. |
| Bulk pull from FTP/SFTP | ftp_and_sftp_processor.py |
Pull images from a remote server, run recognition, and optionally delete the originals. |
| Watch‑folder auto‑process | transfer.py |
Continuously monitor a folder, recognize new pictures and move them to an archive; can forward results to ParkPow’s gate‑control system. |
| Video/stream handling | stream/ |
Helpers for processing live video streams or image feeds. |
| Camera‑gate integration | gate-controller/ |
Example code to open/close a barrier based on a successful plate read. |
| Multi‑language examples | cpp/, csharp/, java/ |
Minimal snippets showing how to call the same API from other languages. |
| Docker / on‑prem SDK | docker/ |
Scripts to spin up the self‑hosted Snapshot SDK container. |
| Benchmarks | benchmark/ |
Simple performance tests against the API or local SDK. |
All tools share a tiny set of dependencies (requests, pillow, plus optional paramiko, watchdog, etc.) and are driven by command‑line flags that let you switch between the cloud API (using an API token) and a self‑hosted Snapshot SDK (via --sdk‑url).
Who it’s for
- Developers building parking‑lot, gate, or toll‑gate systems who need a plug‑and‑play way to add license‑plate reading.
- Ops teams that already run Plate Recognizer on‑prem and want scripts for bulk ingestion, FTP pulls, or automated redaction.
- Anyone prototyping a computer‑vision pipeline and looking for a quick Python front‑end without training their own model.
How to get started
- Create a Plate Recognizer account and obtain an API token (or deploy the Snapshot SDK locally).
- Clone the repo and set up the virtual environment as shown in the README.
- Run the simplest example:
The script prints a JSON array with the detected plate, confidence scores, and the image’s bounding box.python plate_recognition.py --api-key YOUR_TOKEN path/to/car.jpg - Explore other utilities (
--helpon each script) and pick the one that matches your workflow.
What’s not included
- The actual deep‑learning model – you rely on Plate Recognizer’s service.
- A full‑blown UI; these are command‑line tools meant to be integrated into larger systems.
License & support
The code is released under the repository’s LICENSE (MIT‑style) and is maintained by ParkPow, the company behind Plate Recognizer. For product‑level questions you should contact Plate Recognizer directly via their support page.