We're excited to announce the first major release of Open LPR - a powerful, open-source License Plate Recognition system powered by AI!
Open LPR is a Django-based web application that uses the Qwen3-VL AI model to detect and recognize license plates in images with advanced OCR capabilities. The system provides both a user-friendly web interface and a comprehensive REST API for integration into other applications.
- 🤖 AI-Powered Detection: Uses qwen3-vl-4b-instruct vision-language model for accurate license plate recognition
- 🔍 Advanced OCR Integration: Extracts text from detected license plates with confidence scores
- 🎯 Bounding Box Visualization: Draws colored boxes around detected plates and OCR text
- 📤 Drag & Drop Upload: Modern, user-friendly file upload interface
- 💾 Permanent Storage: All uploaded and processed images are saved permanently
- 🔄 Side-by-Side Comparison: View original and processed images together
- 🔎 Search & Filter: Browse and search through processing history
- 📱 Responsive Design: Works on desktop, tablet, and mobile devices
- 🐳 Docker Support: Easy deployment with Docker and Docker Compose
- 🔌 REST API: Full API for programmatic access
This release provides multiple deployment options:
- Standard Docker Deployment: Traditional deployment with cloud-based AI services
- LlamaCpp CPU Deployment: Local inference using CPU resources
- LlamaCpp GPU Deployment: Local inference with AMD GPU acceleration using Vulkan
- Complete Django web application with license plate recognition capabilities
- RESTful API with comprehensive endpoints for image processing
- User-friendly web interface with drag-and-drop upload functionality
- Image processing pipeline with bounding box visualization
- Search and filter functionality for processed images
- Responsive design that works across all devices
- Multi-stage optimized Dockerfile for production use
- Automated CI/CD pipeline with GitHub Actions
- Multi-architecture support (linux/amd64, linux/arm64)
- Automatic publishing to GitHub Container Registry
- Software Bill of Materials (SBOM) generation for security scanning
- Local inference support with LlamaCpp server
- CPU and GPU deployment options
- Comprehensive documentation for local deployment
- Environment configuration templates
- Model download automation
- Comprehensive README with visual showcase
- Detailed API documentation
- Docker deployment guide
- LlamaCpp and ROCm resources collection
- Troubleshooting guides and best practices
- Optimized Docker image for production use
- Gunicorn WSGI server with 3 workers
- Efficient image processing pipeline
- Configurable batch processing
- Non-root Docker user for security
- Environment-based configuration
- Secure file upload handling
- Input validation and sanitization
- Well-structured codebase following Django best practices
- Comprehensive documentation
- Environment configuration templates
- Management commands for project setup
GET /- Home page with upload formPOST /upload/- Upload and process imageGET /result/<int:image_id>/- View processing resultsGET /images/- Browse image history with search and filteringGET /image/<int:image_id>/- View detailed image informationPOST /progress/- Check processing status (AJAX endpoint)GET /download/<int:image_id>/<str:image_type>/- Download imagesGET /health/- API health check endpoint
POST /api/v1/ocr/- Upload an image and receive OCR results
The v1.0.0 release includes Docker images published to GitHub Container Registry:
ghcr.io/faisalthaheem/open-lpr:latest- Latest stable versionghcr.io/faisalthaheem/open-lpr:v1.0.0- Version 1.0.0ghcr.io/faisalthaheem/open-lpr:v1.0- Version 1.0.x seriesghcr.io/faisalthaheem/open-lpr:v1- Version 1.x series
Images are available for both linux/amd64 and linux/arm64 architectures.
- Main README - Project overview and quick start guide
- Docker Deployment Guide - Comprehensive Docker deployment instructions
- LlamaCpp Deployment Guide - Local inference with LlamaCpp server
- API Documentation - Complete REST API reference
- LlamaCpp Resources - Important URLs and documentation links
This is the initial release, so there are no migration requirements. Future releases will include migration guides as needed.
- Large images (>10MB) may require increased memory allocation
- GPU acceleration is currently limited to AMD GPUs with Vulkan support
- Concurrent processing is limited by Django's development server (use Gunicorn in production)
Future releases will include:
- Support for additional GPU types (NVIDIA CUDA)
- Batch processing capabilities
- Real-time video stream processing
- Additional language support for license plates
- Performance optimizations
- Mobile application
We welcome contributions! Please see our contributing guidelines for details.
This project is licensed under the MIT License - see the LICENSE file for details.
- Qwen3-VL for the powerful vision-language model
- Django for the robust web framework
- Bootstrap for the responsive UI components
- LlamaCpp for local inference capabilities
- All contributors who help improve this project
# Clone the repository
git clone https://github.com/faisalthaheem/open-lpr.git
cd open-lpr
# Copy environment file
cp .env.example .env
# Edit the environment file with your configuration
nano .env
# Run with Docker Compose
docker-compose up -d# Clone the repository
git clone https://github.com/faisalthaheem/open-lpr.git
cd open-lpr
# Copy LlamaCpp environment file
cp .env.llamacpp.example .env.llamacpp
# Edit the environment file with your HuggingFace token
nano .env.llamacpp
# Run with Docker Compose
docker-compose -f docker-compose-llamacpp-cpu.yml up -dFor more detailed installation instructions, see the README.
Thank you for using Open LPR! 🎉
If you encounter any issues or have questions, please file an issue on GitHub.