Name | marearts-anpr JSON |
Version |
3.2.2
JSON |
| download |
home_page | https://www.marearts.com |
Summary | MareArts ANPR (Automatic Number Plate Recognition) library |
upload_time | 2025-08-10 12:30:57 |
maintainer | None |
docs_url | None |
author | MareArts |
requires_python | <3.13,>=3.9 |
license | None |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# MareArts ANPR SDK
[](https://badge.fury.io/py/marearts-anpr)
[](https://pypi.org/project/marearts-anpr/)
[](https://pepy.tech/project/marearts-anpr)
[](https://study.marearts.com/p/anpr-lpr-solution.html)
[](https://github.com/marearts/marearts-anpr/stargazers)
[](http://live.marearts.com)
**Enterprise-grade** Automatic Number Plate Recognition (ANPR) SDK supporting **European Union**, **Korea**, **China**, and **Universal** license plates with **99%+ accuracy** and **GPU acceleration**.
## โจ Key Features
- ๐ **Multi-Region Support**: EU, Korea, China, and Universal license plates
- โก **High Performance**: Optimized C++ core with Python bindings + GPU acceleration
- ๐ฏ **High Accuracy**: Up to 99.4% accuracy with latest models
- ๐ก๏ธ **Enterprise Security**: Military-grade protection with license validation
- ๐ **GPU Acceleration**: Significantly faster processing with CUDA/DirectML support
- ๐ง **Easy Integration**: Simple Python API with comprehensive examples
- ๐ณ **Docker Ready**: Complete Docker deployment examples
- ๐ **API Server**: REST API examples for production deployment
- ๐ฑ **Multiple Formats**: Support for CV2, PIL, and file inputs
- ๐ **Multi-Platform**: Linux, Windows, macOS with smart provider detection
## ๐ Repository Structure
This repository contains customer examples, documentation, and usage guides for the MareArts ANPR SDK.
### Directory Structure
```
marearts-anpr/
โโโ API_docker_example/ # Docker API server example
โโโ example_code/ # Basic and advanced usage examples
โโโ sample_images/ # Test images for different regions
โโโ md_images/ # Documentation screenshots
โโโ etc/ # Additional resources (fonts, utilities)
โโโ README.md # This documentation
```
## ๐ Table of Contents
- [๐ Regional Support](#-regional-support)
- [๐ฉ Installation](#-installation)
- [๐ชช License Key](#-license-key)
- [๐ค Live Test](#-live-test)
- [๐บ ANPR Result Videos](#-anpr-result-videos)
- [๐ Model Version](#-model-version)
- [๐ Using SDK](#-using-sdk)
- [๐งช API for testing](#-api-for-testing)
- [โ๏ธ Create MareArts ANPR API Docker](#๏ธ-create-marearts-anpr-api-docker)
- [โ๏ธ example_code](#๏ธ-example_code)
- [๐ Software Licensing FAQ](#-software-licensing-faq)
- [๐ More Detail](#-more-detail)
## ๐ Regional Support
MareArts ANPR provides comprehensive license plate recognition across multiple regions with specialized models optimized for each area.
### ๐ช๐บ European Union & Plus Countries
**Supported Countries:**
| A-F | G-P | R-Z | Plus |
|-----|-----|-----|------|
| ๐ฆ๐ฑ Albania | ๐ฉ๐ช Germany | ๐ท๐ด Romania | ๐ฎ๐ฉ Indonesia |
| ๐ฆ๐ฉ Andorra | ๐ฌ๐ท Greece | ๐ธ๐ฒ San Marino | |
| ๐ฆ๐น Austria | ๐ญ๐บ Hungary | ๐ท๐ธ Serbia | |
| ๐ง๐ช Belgium | ๐ฎ๐ช Ireland | ๐ธ๐ฐ Slovakia | |
| ๐ง๐ฆ Bosnia and Herzegovina | ๐ฎ๐น Italy | ๐ธ๐ฎ Slovenia | |
| ๐ง๐ฌ Bulgaria | ๐ฑ๐ฎ Liechtenstein | ๐ช๐ธ Spain | |
| ๐ญ๐ท Croatia | ๐ฑ๐บ Luxembourg | ๐ธ๐ช Sweden | |
| ๐จ๐พ Cyprus | ๐ฒ๐น Malta | ๐จ๐ญ Switzerland | |
| ๐จ๐ฟ Czechia | ๐ฒ๐จ Monaco | ๐ฌ๐ง United Kingdom | |
| ๐ฉ๐ฐ Denmark | ๐ฒ๐ช Montenegro | | |
| ๐ซ๐ฎ Finland | ๐ณ๐ฑ Netherlands | | |
| ๐ซ๐ท France | ๐ฒ๐ฐ North Macedonia | | |
| | ๐ณ๐ด Norway | | |
| | ๐ต๐ฑ Poland | | |
| | ๐ต๐น Portugal | | |
**Character Support (50 characters):**
```python
["-", ".", "0-9", "A-Z", "a", "d", "i", "m", "o", "ร", "ร", "ฤ", "ฤ", "ฤ", "ล ", "ลฝ", "ะ"]
```
### ๐ฐ๐ท Korea Support
ํ๊ตญ ์๋์ฐจ ๋ฒํธํ ์ธ์ ์๋ฃจ์
**Character Support (71 characters):**
```python
['0-9', '๊ฐ', '๊ฐ', '๊ฑฐ', '๊ฒฌ', '๊ฒฝ', '๊ณ ', '๊ณก', '๊ณต', '๊ด', '๊ต', '๊ตฌ', '๊ตญ', '๊ตฐ', '๊ธ', '๊ธ', '๊ธฐ',
'๋', '๋จ', '๋', '๋
ธ', '๋
น', '๋
ผ', '๋', '๋ค', '๋จ', '๋', '๋', '๋', '๋', '๋',
'๋ผ', '๋ฌ', '๋ ฌ', '๋ น', '๋ก', '๋ก', '๋ฃจ', '๋ฅ', '๋ฅ ', '๋ฆฐ', '๋ฆผ', '๋ฆฝ',
'๋ง', '๋จธ', '๋ฉด', '๋ช
', '๋ชจ', '๋ชฉ', '๋ฌด', '๋ฌธ', '๋ฐ', '๋ฐฐ', '๋ฐฑ', '๋ฒ', '๋ณ', '๋ณด', '๋ด', '๋ถ', '๋ถ', '๋น',
'์ฌ', '์ฐ', '์ผ', '์', '์', '์ฑ', '์ธ', '์', '์', '์', '์ ',
'์', '์', '์', '์ด', '์ญ', '์ฐ', '์', '์', '์ค', '์', '์', '์ธ', '์ฉ', '์ฐ', '์ด', '์ธ', '์', '์', '์', '์ ', '์ก', '์', '์ด', '์ต', '์ธ', '์ผ', '์',
'์', '์', '์ฅ', '์ฌ', '์ ', '์ ', '์ ', '์ ', '์ ', '์กฐ', '์ข
', '์ฃผ', '์ง',
'์ฐจ', '์ฐฝ', '์ฑ', '์ฒ', '์ฒ ', '์ฒญ', '์ด', '์ถ', '์ถ', '์ถฉ', 'ํ', 'ํ', 'ํ ', 'ํต', 'ํน',
'ํ', 'ํ', 'ํ', 'ํฌ', 'ํ', 'ํ', 'ํ', 'ํ', 'ํจ', 'ํฉ', 'ํด', 'ํ', 'ํ', 'ํ', 'ํ', 'ํ', 'ํธ', 'ํ',
'ํ', 'ํฉ', 'ํ', 'ํฅ']
```
### ๐จ๐ณ China Support
ไธญๅฝ่ฝฆ็่ฏๅซ่งฃๅณๆนๆก
**Character Support:**
```python
['0-9', 'A-Z', 'ยท', 'ไบ', 'ไบฌ', 'ๅ', 'ๅ', 'ๅฎ', 'ๅท', 'ๆ', 'ๆฐ', 'ๆ', 'ๆก',
'ๆฒช', 'ๆดฅ', 'ๆต', 'ๆธ', 'ๆธฏ', 'ๆน', 'ๆพณ', '็ผ', '็', '็',
'็ฒค', '่', '่', '่', '่ฑซ', '่ดต', '่ตฃ', '่พฝ', '้', '้ฝ', '้', '้', '้ฒ', '้ป']
```
### ๐ช Universal Model
An integrated model for recognizing license plates from all supported regions with automatic region detection.
<br><br>
## ๐ฉ Installation
### ๐ป CPU Installation (Universal)
```bash
# Lightweight installation for all platforms
pip install marearts-anpr
```
### ๐ GPU Installation (Recommended for Production)
```bash
# NVIDIA CUDA GPU (Linux/Windows) - Significantly faster
pip install marearts-anpr[gpu]
# Windows GPU (AMD/Intel/NVIDIA) - Faster processing
pip install marearts-anpr[directml]
# All GPU support (maximum compatibility)
pip install marearts-anpr[all-gpu]
# Development dependencies
pip install marearts-anpr[dev]
```
### ๐ GPU Acceleration
The SDK features smart provider detection that automatically uses the best available hardware. GPU acceleration provides significant performance improvements over CPU processing.
### Installation Recommendations
- **Production High-Throughput**: `pip install marearts-anpr[gpu]` - Best for NVIDIA GPU systems
- **Windows Development**: `pip install marearts-anpr[directml]` - Works with any GPU (AMD/Intel/NVIDIA)
- **CPU/Cloud Deployment**: `pip install marearts-anpr` - Lightweight, no GPU dependencies
- **Maximum Compatibility**: `pip install marearts-anpr[all-gpu]` - Includes all GPU support options
### System Requirements
- **Python**: 3.9, 3.10, 3.11, or 3.12
- **Operating System**: Linux (x86_64, ARM64), macOS, Windows
- **Memory**: Minimum 4GB RAM (8GB recommended for GPU)
- **Storage**: ~500MB for model files
- **GPU** (optional): NVIDIA CUDA or DirectML compatible
<br><br>
## ๐ชช License Key
**For private keys,** please visit [MareArts ANPR Solution](https://study.marearts.com/p/anpr-lpr-solution.html).
For inquiries about private keys, contact us at [hello@marearts.com](mailto:hello@marearts.com).
<br><br>
## ๐ Quick Start
### Environment Setup (Required)
```bash
# Set license credentials (recommended)
export MAREARTS_ANPR_USERNAME="your-email@domain.com"
export MAREARTS_ANPR_SERIAL_KEY="your-serial-key"
```
### Basic Usage
```python
# pip install marearts-anpr[gpu] # For best performance
from marearts_anpr import marearts_anpr_from_image_file
from marearts_anpr import ma_anpr_detector, ma_anpr_ocr
# Initialize with your credentials
user_name = "your_email"
serial_key = "your_serial_key"
# Optional: Load from environment variables if set
# export MAREARTS_ANPR_USERNAME="your-email@domain.com"
# export MAREARTS_ANPR_SERIAL_KEY="your-serial-key"
# import os
# user_name = os.getenv("MAREARTS_ANPR_USERNAME", user_name)
# serial_key = os.getenv("MAREARTS_ANPR_SERIAL_KEY", serial_key)
detector = ma_anpr_detector("v13_middle", user_name, serial_key)
ocr = ma_anpr_ocr("v13_euplus", user_name, serial_key)
# Process image
result = marearts_anpr_from_image_file(detector, ocr, "image.jpg")
print(result)
# Expected: {'results': [{'ocr': 'ABC123', 'ocr_conf': 99, ...}], 'ltrb_proc_sec': 0.08, 'ocr_proc_sec': 0.05}
```
### CLI Usage
```bash
# Direct image processing
ma-anpr image.jpg
# Test without credentials (1000 requests/day)
ma-anpr test-api image.jpg
# Validate license
ma-anpr validate
# List available models
ma-anpr models
# GPU information
ma-anpr gpu-info
```
<br><br>
## ๐ค Live Test
[MareArts ๐ฌ Live](http://live.marearts.com)
<br><br>
## ๐บ ANPR Result Videos
[Check here](https://www.youtube.com/playlist?list=PLvX6vpRszMkxJBJf4EjQ5VCnmkjfE59-J) to see the license plate recognition results in YouTube videos.
<br><br>
## ๐ Model Version
### ANPR Detector Model Version
| Model | File Size | Precision | Recall | F1 Score | Avg Detection Time (s) |
|------------|-----------|-----------|---------|----------|------------------------|
| v10_small | 38MB | 0.9852 | 0.9694 | 0.9716 | 0.0468 |
| v10_middle | 79MB | 0.9836 | 0.9680 | 0.9701 | 0.0992 |
| v10_large | 125MB | 0.9858 | 0.9709 | 0.9731 | 0.2307 |
| v11_small | 38MB | 0.9791 | 0.9849 | 0.9779 | 0.0492 |
| v11_middle | 79MB | 0.9799 | 0.9866 | 0.9793 | 0.0938 |
| v11_large | 125MB | 0.9824 | 0.9892 | 0.9823 | 0.1561 |
| v13_nano | 14MB | 0.9657 | 0.9826 | 0.9676 | 0.0356 |
| v13_small | 49MB | 0.9632 | 0.9920 | 0.9715 | 0.0657 |
| v13_middle | 103MB | 0.9634 | 0.9940 | 0.9725 | 0.1629 |
| v13_large | 129MB | 0.9642 | 0.9936 | 0.9729 | 0.2053 |
### Recommendations
* ๐ฏ **Best Precision**: v10_large (0.9858)
* ๐ **Best Recall**: v13_middle (0.9940)
* ๐ฅ **Best F1 Score**: v11_large (0.9823)
* โก **Fastest Model**: v13_nano (0.0356s)
### Notes
* Speed test is based on i7-9800X 3.8GHz
* Last Update: 2025-03-31 15:26:43
* Please use the latest version of marearts-anpr
* **Use model name in detector code**
### ANPR OCR Model Version
| Model | Region | Size | Accuracy | Character Accuracy | Mean Confidence | Processing Time (s) | Recommendation |
|-------|---------|------|----------|-------------------|-----------------|---------------------|----------------|
| eu | EU | 293MB | 1.0000 | 1.0000 | 96.9071 | 0.0808 | ๐ฏ |
| euplus | EU Plus | 146MB | 0.9432 | 0.9876 | 94.0371 | 0.0841 | |
| kr | Korea | 146MB | 0.9822 | 0.9967 | 97.4243 | 0.0861 | |
| univ | Universal | 146MB | 0.9348 | 0.9877 | 94.4448 | 0.0862 | |
| v11_eu | EU | 293MB | 0.9900 | 0.9980 | 97.9573 | 0.0830 | ๐ |
| v11_euplus | EU Plus | 146MB | 0.9822 | 0.9965 | 97.6391 | 0.0823 | ๐ฏ |
| v11_kr | Korea | 146MB | 0.9938 | 0.9991 | 98.5033 | 0.0852 | ๐ฏ |
| v11_univ | Universal | 146MB | 0.9600 | 0.9941 | 97.7669 | 0.0845 | โก |
| v13_eu | EU | 295MB | 0.9504 | 0.9860 | 97.4215 | 0.0822 | |
| v13_kr | Korea | 147MB | 0.9721 | 0.9951 | 97.0080 | 0.0855 | |
| v13_cn | China | 147MB | 0.9657 | 0.9932 | 97.7589 | 0.0858 | ๐ฏ |
| v13_euplus | EU Plus | 147MB | 0.9617 | 0.9901 | 97.6953 | 0.0822 | โก |
| v13_univ | Universal | 147MB | 0.9829 | 0.9963 | 98.6056 | 0.0846 | ๐ฏ |
### Recommendation Icons
* ๐ฏ Best Accuracy
* ๐ Best Character Accuracy
* ๐ Best Confidence
* โก Fastest Model
### Notes
* Speed test is based on i7-9800X 3.8GHz
* Last Update: 2025-04-04 21:38:05
* Please use the latest version of marearts-anpr
* **Use model name in ocr code**
<br><br>
## ๐ก๏ธ Enterprise Security
### Security Features
- ๐ **License Protection**: Military-grade license validation system
- ๐ซ **Direct Access Prevention**: Low-level classes protected from bypass attempts
- ๐ **Environment Variables**: Secure credential management (no config files)
- โ ๏ธ **Generic Error Messages**: No sensitive information leakage to potential attackers
- ๐ **Dynamic Validation**: Periodic license state verification
### Credential Management
```bash
# Secure environment variable setup (recommended)
export MAREARTS_ANPR_USERNAME="your-email@domain.com"
export MAREARTS_ANPR_SERIAL_KEY="your-serial-key"
# Validate credentials
ma-anpr validate
```
### Security Best Practices
- โ
Use environment variables for credentials
- โ
Never hardcode license keys in source code
- โ
Validate license before production deployment
- โ
Monitor for licensing compliance
<br><br>
## ๐ Using SDK
### ๐ฌ SDK Usage
Try our interactive demo: [](https://colab.research.google.com/drive/1zZlueTZ1Le73yOQ3mdJFONxcebKyCgr-?usp=sharing)
Here's an example of how to use the updated SDK:
```python
# pip install marearts-anpr
import cv2
from PIL import Image
from marearts_anpr import ma_anpr_detector
from marearts_anpr import ma_anpr_ocr
from marearts_anpr import marearts_anpr_from_pil
from marearts_anpr import marearts_anpr_from_image_file
from marearts_anpr import marearts_anpr_from_cv2
if __name__ == '__main__':
#################################
## Initiate MareArts ANPR
print("EU ANPR")
# Initialize with your credentials
user_name = "your_email"
serial_key = "your_serial_key"
# Optional: Load from environment variables if set
# export MAREARTS_ANPR_USERNAME="your-email@domain.com"
# export MAREARTS_ANPR_SERIAL_KEY="your-serial-key"
# import os
# user_name = os.getenv("MAREARTS_ANPR_USERNAME", user_name)
# serial_key = os.getenv("MAREARTS_ANPR_SERIAL_KEY", serial_key)
detector_model_version = "v13_middle" # Latest v13 series recommended
ocr_model_version = "v13_euplus" # Latest v13 series recommended
# MareArts ANPR Detector Inference (with GPU acceleration)
anpr_d = ma_anpr_detector(detector_model_version, user_name, serial_key, conf_thres=0.3, iou_thres=0.5)
# MareArts ANPR OCR Inference (with GPU acceleration)
anpr_r = ma_anpr_ocr(ocr_model_version, user_name, serial_key)
#################################
#################################
# Routine Task 1 - Predict from File
image_path = './sample_images/eu_test1.jpg'
output = marearts_anpr_from_image_file(anpr_d, anpr_r, image_path)
print(output)
# Routine Task 2 - Predict from cv2
img = cv2.imread(image_path)
output = marearts_anpr_from_cv2(anpr_d, anpr_r, img)
print(output)
# Routine Task 3 - Predict from Pillow
pil_img = Image.open(image_path)
output = marearts_anpr_from_pil(anpr_d, anpr_r, pil_img)
print(output)
#################################
#################################
## Initiate MareArts ANPR for Korea
print("ANPR Korean")
# user_name, serial_key are already defined (or loaded from environment)
# anpr_d is also already initiated before
ocr_model_version = "v13_kr" # Latest v13 series recommended
# MareArts ANPR OCR Inference (with GPU acceleration)
anpr_r = ma_anpr_ocr(ocr_model_version, user_name, serial_key)
#################################
# Routine Task 1 - Predict from File
image_path = './sample_images/kr_test2.jpg'
output = marearts_anpr_from_image_file(anpr_d, anpr_r, image_path)
print(output)
# Routine Task 2 - Predict from cv2
img = cv2.imread(image_path)
output = marearts_anpr_from_cv2(anpr_d, anpr_r, img)
print(output)
# Routine Task 3 - Predict from Pillow
pil_img = Image.open(image_path)
output = marearts_anpr_from_pil(anpr_d, anpr_r, pil_img)
print(output)
#################################
```
Please refer to the **advanced.py** code in the **./example_code** folder. This file demonstrates how to implement the ma_anpr_detector and ma_anpr_ocr separately.
<br><br>
### ๐ฌ Returns
The output from the ANPR will be similar to:
```python
{
'results': [
{'ocr': 'SL593LM', 'ocr_conf': 99, 'ltrb': [819, 628, 1085, 694], 'ltrb_conf': 90}
],
'ltrb_proc_sec': 0.22,
'ocr_proc_sec': 0.15
}
```
```python
{
'results': [
{'ocr': '123๊ฐ4568', 'ocr_conf': 99, 'ltrb': [181, 48, 789, 186], 'ltrb_conf': 83},
{'ocr': '123๊ฐ4568', 'ocr_conf': 99, 'ltrb': [154, 413, 774, 557], 'ltrb_conf': 82},
{'ocr': '123๊ฐ4568', 'ocr_conf': 99, 'ltrb': [154, 601, 763, 746], 'ltrb_conf': 80},
{'ocr': '123๊ฐ4568', 'ocr_conf': 99, 'ltrb': [156, 217, 773, 369], 'ltrb_conf': 80}
],
'ltrb_proc_sec': 0.23,
'ocr_proc_sec': 0.6
}
```
- **Results:** Contains OCR text, probabilities, and detection coordinate(left, top, right, bottom).
- **Processing Speeds:** Provided for license plate detection and OCR.
<br><br>
## ๐งช API for Testing
**Daily limit:** 1000 requests
### Quick Test via CLI (Recommended)
```bash
# Test with an image using default models
ma-anpr test-api image.jpg
# Specify custom models
ma-anpr test-api image.jpg --detector v13_small --ocr v13_kr
# Process multiple images
ma-anpr test-api *.jpg
# List available models
ma-anpr test-api --list-models
# Save results to JSON
ma-anpr test-api image.jpg --json results.json
```
### Direct API Call (Advanced)
<details>
<summary>Click to see API details</summary>
**Test Credentials:**
- **User ID:** `marearts@public`
- **API Key:** `J4K9L2Wory34@G7T1Y8rt-PP83uSSvkV3Z6ioSTR!`
```bash
curl -X POST https://we303v9ck8.execute-api.eu-west-1.amazonaws.com/Prod/marearts_anpr \
-H "Content-Type: image/jpeg" \
-H "x-api-key: J4K9L2Wory34@G7T1Y8rt-PP83uSSvkV3Z6ioSTR!" \
-H "user-id: marearts@public" \
-H "detector_model_version: v13_middle" \
-H "ocr_model_version: v13_euplus" \
--data-binary "@./image.jpg"
```
</details>
<br><br>
## โ๏ธ Create MareArts ANPR API Docker
Please refer to **./API_docker_example** folder.
```bash
API_docker_example
โ
โโโ api_call.sh # Shell script to make API calls to the MareArts ANPR application.
โโโ app.py # Python script containing the MareArts ANPR application.
โโโ build_image.sh # Shell script to build the Docker image from the Dockerfile.
โโโ Dockerfile # Dockerfile containing instructions for building the Docker image.
โโโ request.py # Python script to send requests to the MareArts ANPR API server.
โโโ requirements.txt # Contains a list of Python packages that the app requires.
โโโ run_container.sh # Shell script to run the Docker container from the built image.
```
<br><br>
## โ๏ธ example_code
**bg_subtraction.py** - Motion detection with OpenCV
- Detects moving objects in video
- Adjustable sensitivity and object size
**basic.py** - Easy license plate recognition
- Uses MareArts ANPR SDK with simple implementation
**advance.py** - Advanced license plate recognition
- Direct control of detection and OCR steps
- Run detection and OCR separately for better control
<br><br>
## โ Frequently Asked Questions (FAQ)
### ๐ ๏ธ Technical Questions
#### Q: Do I need an internet connection to use the software?
**A:** No, the software works offline after initial setup. Internet is only needed for:
- Initial model download
- Checking/downloading model updates
- Without internet, SDK uses existing downloaded model
#### Q: What's new in the latest version?
**A:** Major enterprise improvements:
- ๐ก๏ธ **Enterprise Security**: Military-grade license protection
- ๐ **GPU Acceleration**: Significantly faster with smart provider detection
- ๐ **Environment Variables**: Secure credential management
- ๐ป **CLI Interface**: `ma-anpr` command-line tool
- ๐ **Multi-Platform**: Professional installation variants
#### Q: How do I get GPU acceleration?
**A:** Install the appropriate GPU variant:
- **NVIDIA GPU**: `pip install marearts-anpr[gpu]` (Best performance)
- **Windows GPU**: `pip install marearts-anpr[directml]` (Good performance)
- **All GPUs**: `pip install marearts-anpr[all-gpu]`
#### Q: How do I set up credentials securely?
**A:** Use environment variables:
```bash
export MAREARTS_ANPR_USERNAME="your-email@domain.com"
export MAREARTS_ANPR_SERIAL_KEY="your-serial-key"
ma-anpr validate # Test credentials
```
### ๐ Licensing & Usage
#### Q: What types of licenses are available?
**A:** Three license types are available:
- **Monthly licenses** - Need renewal every month
- **Yearly licenses** - Need renewal every year
- **Lifetime licenses** - No expiration, use indefinitely
#### Q: Can I use my license on multiple computers?
**A:** Yes! All licenses have no limits on the number of computers. You can use them on multiple computers simultaneously.
#### Q: How does license renewal work?
**A:**
- **Monthly/Yearly licenses**: Must be renewed before expiration
- **Lifetime licenses**: No expiration, use indefinitely
### ๐ณ Billing & Refunds
#### Q: What is your refund policy?
**A:** Refunds are only available when a license key has not been issued. However, subscription cancellation is possible at any time.
#### Q: Can I cancel my subscription anytime?
**A:** Yes, you can cancel your subscription at any time, though refunds are only available if the license key hasn't been issued yet.
### ๐ Service Continuity
#### Q: What happens if the service discontinues?
**A:** We commit to either:
- Open-sourcing the code, or
- Providing lifetime licenses to active users
### ๐ Support
#### Q: How can I get help?
**A:** Contact our support team at [hello@marearts.com](mailto:hello@marearts.com) for setup, licensing, or technical issues.
<br><br>
## ๐ Support & Resources
| Resource | Link |
|----------|------|
| ๐ง **Contact** | [hello@marearts.com](mailto:hello@marearts.com) |
| ๐ **Homepage** | [https://marearts.com](https://marearts.com) |
| ๐ **Blog** | [http://study.marearts.com](http://study.marearts.com) |
| ๐ณ **Subscription** | [ANPR Solution](https://study.marearts.com/p/anpr-lpr-solution.html) |
| ๐ฎ **Live Demo** | [http://live.marearts.com](http://live.marearts.com) |
| ๐บ **Video Examples** | [YouTube Playlist](https://www.youtube.com/playlist?list=PLvX6vpRszMkxJBJf4EjQ5VCnmkjfE59-J) |
| ๐งช **Colab Demo** | [](https://colab.research.google.com/drive/1zZlueTZ1Le73yOQ3mdJFONxcebKyCgr-?usp=sharing) |
## ๐ License
This software is proprietary and protected by copyright. Use requires a valid license key from MareArts.
ยฉ 2024 MareArts. All rights reserved.
---
<div align="center">
**Made with โค๏ธ by [MareArts](https://marearts.com)**
๐๐ปโโ๏ธ Thank you for using MareArts ANPR!
</div>
Raw data
{
"_id": null,
"home_page": "https://www.marearts.com",
"name": "marearts-anpr",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.13,>=3.9",
"maintainer_email": null,
"keywords": null,
"author": "MareArts",
"author_email": "hello@marearts.com",
"download_url": null,
"platform": null,
"description": "# MareArts ANPR SDK\n\n[](https://badge.fury.io/py/marearts-anpr)\n[](https://pypi.org/project/marearts-anpr/)\n[](https://pepy.tech/project/marearts-anpr)\n[](https://study.marearts.com/p/anpr-lpr-solution.html)\n[](https://github.com/marearts/marearts-anpr/stargazers)\n[](http://live.marearts.com)\n\n\n**Enterprise-grade** Automatic Number Plate Recognition (ANPR) SDK supporting **European Union**, **Korea**, **China**, and **Universal** license plates with **99%+ accuracy** and **GPU acceleration**.\n\n## \u2728 Key Features\n\n- \ud83d\ude97 **Multi-Region Support**: EU, Korea, China, and Universal license plates\n- \u26a1 **High Performance**: Optimized C++ core with Python bindings + GPU acceleration\n- \ud83c\udfaf **High Accuracy**: Up to 99.4% accuracy with latest models\n- \ud83d\udee1\ufe0f **Enterprise Security**: Military-grade protection with license validation\n- \ud83d\ude80 **GPU Acceleration**: Significantly faster processing with CUDA/DirectML support\n- \ud83d\udd27 **Easy Integration**: Simple Python API with comprehensive examples\n- \ud83d\udc33 **Docker Ready**: Complete Docker deployment examples\n- \ud83c\udf10 **API Server**: REST API examples for production deployment\n- \ud83d\udcf1 **Multiple Formats**: Support for CV2, PIL, and file inputs\n- \ud83c\udf0d **Multi-Platform**: Linux, Windows, macOS with smart provider detection\n\n## \ud83d\udcc1 Repository Structure\n\nThis repository contains customer examples, documentation, and usage guides for the MareArts ANPR SDK.\n\n### Directory Structure\n```\nmarearts-anpr/\n\u251c\u2500\u2500 API_docker_example/ # Docker API server example\n\u251c\u2500\u2500 example_code/ # Basic and advanced usage examples \n\u251c\u2500\u2500 sample_images/ # Test images for different regions\n\u251c\u2500\u2500 md_images/ # Documentation screenshots\n\u251c\u2500\u2500 etc/ # Additional resources (fonts, utilities)\n\u2514\u2500\u2500 README.md # This documentation\n```\n\n\n## \ud83d\udcd1 Table of Contents\n- [\ud83c\udf0d Regional Support](#-regional-support)\n- [\ud83d\udd29 Installation](#-installation)\n- [\ud83e\udeaa License Key](#-license-key)\n- [\ud83e\udd16 Live Test](#-live-test)\n- [\ud83d\udcfa ANPR Result Videos](#-anpr-result-videos)\n- [\ud83d\ude82 Model Version](#-model-version)\n- [\ud83d\udcdd Using SDK](#-using-sdk)\n- [\ud83e\uddea API for testing](#-api-for-testing)\n- [\u2693\ufe0f Create MareArts ANPR API Docker](#\ufe0f-create-marearts-anpr-api-docker)\n- [\u2699\ufe0f example_code](#\ufe0f-example_code)\n- [\ud83d\udccb Software Licensing FAQ](#-software-licensing-faq)\n- [\ud83d\ude0e More Detail](#-more-detail)\n\n## \ud83c\udf0d Regional Support\n\nMareArts ANPR provides comprehensive license plate recognition across multiple regions with specialized models optimized for each area.\n\n### \ud83c\uddea\ud83c\uddfa European Union & Plus Countries\n\n**Supported Countries:**\n\n| A-F | G-P | R-Z | Plus |\n|-----|-----|-----|------|\n| \ud83c\udde6\ud83c\uddf1 Albania | \ud83c\udde9\ud83c\uddea Germany | \ud83c\uddf7\ud83c\uddf4 Romania | \ud83c\uddee\ud83c\udde9 Indonesia |\n| \ud83c\udde6\ud83c\udde9 Andorra | \ud83c\uddec\ud83c\uddf7 Greece | \ud83c\uddf8\ud83c\uddf2 San Marino | |\n| \ud83c\udde6\ud83c\uddf9 Austria | \ud83c\udded\ud83c\uddfa Hungary | \ud83c\uddf7\ud83c\uddf8 Serbia | |\n| \ud83c\udde7\ud83c\uddea Belgium | \ud83c\uddee\ud83c\uddea Ireland | \ud83c\uddf8\ud83c\uddf0 Slovakia | |\n| \ud83c\udde7\ud83c\udde6 Bosnia and Herzegovina | \ud83c\uddee\ud83c\uddf9 Italy | \ud83c\uddf8\ud83c\uddee Slovenia | |\n| \ud83c\udde7\ud83c\uddec Bulgaria | \ud83c\uddf1\ud83c\uddee Liechtenstein | \ud83c\uddea\ud83c\uddf8 Spain | |\n| \ud83c\udded\ud83c\uddf7 Croatia | \ud83c\uddf1\ud83c\uddfa Luxembourg | \ud83c\uddf8\ud83c\uddea Sweden | |\n| \ud83c\udde8\ud83c\uddfe Cyprus | \ud83c\uddf2\ud83c\uddf9 Malta | \ud83c\udde8\ud83c\udded Switzerland | |\n| \ud83c\udde8\ud83c\uddff Czechia | \ud83c\uddf2\ud83c\udde8 Monaco | \ud83c\uddec\ud83c\udde7 United Kingdom | |\n| \ud83c\udde9\ud83c\uddf0 Denmark | \ud83c\uddf2\ud83c\uddea Montenegro | | |\n| \ud83c\uddeb\ud83c\uddee Finland | \ud83c\uddf3\ud83c\uddf1 Netherlands | | |\n| \ud83c\uddeb\ud83c\uddf7 France | \ud83c\uddf2\ud83c\uddf0 North Macedonia | | |\n| | \ud83c\uddf3\ud83c\uddf4 Norway | | |\n| | \ud83c\uddf5\ud83c\uddf1 Poland | | |\n| | \ud83c\uddf5\ud83c\uddf9 Portugal | | |\n\n**Character Support (50 characters):**\n```python\n[\"-\", \".\", \"0-9\", \"A-Z\", \"a\", \"d\", \"i\", \"m\", \"o\", \"\u00d6\", \"\u00dc\", \"\u0106\", \"\u010c\", \"\u0110\", \"\u0160\", \"\u017d\", \"\u041f\"]\n```\n\n### \ud83c\uddf0\ud83c\uddf7 Korea Support\n\ud55c\uad6d \uc790\ub3d9\ucc28 \ubc88\ud638\ud310 \uc778\uc2dd \uc194\ub8e8\uc158\n\n**Character Support (71 characters):**\n```python\n['0-9', '\uac00', '\uac15', '\uac70', '\uacac', '\uacbd', '\uace0', '\uace1', '\uacf5', '\uad11', '\uad50', '\uad6c', '\uad6d', '\uad70', '\uae08', '\uae09', '\uae30',\n '\ub098', '\ub0a8', '\ub108', '\ub178', '\ub179', '\ub17c', '\ub204', '\ub2e4', '\ub2e8', '\ub300', '\ub354', '\ub3c4', '\ub3d9', '\ub450',\n '\ub77c', '\ub7ec', '\ub82c', '\ub839', '\ub840', '\ub85c', '\ub8e8', '\ub95c', '\ub960', '\ub9b0', '\ub9bc', '\ub9bd',\n '\ub9c8', '\uba38', '\uba74', '\uba85', '\ubaa8', '\ubaa9', '\ubb34', '\ubb38', '\ubc14', '\ubc30', '\ubc31', '\ubc84', '\ubcd1', '\ubcf4', '\ubd09', '\ubd80', '\ubd81', '\ube59',\n '\uc0ac', '\uc0b0', '\uc0bc', '\uc0c1', '\uc11c', '\uc131', '\uc138', '\uc18c', '\uc218', '\uc21c', '\uc2e0',\n '\uc544', '\uc548', '\uc591', '\uc5b4', '\uc5ed', '\uc5f0', '\uc601', '\uc608', '\uc624', '\uc644', '\uc655', '\uc678', '\uc6a9', '\uc6b0', '\uc6b4', '\uc6b8', '\uc6d0', '\uc6d4', '\uc704', '\uc720', '\uc721', '\uc740', '\uc774', '\uc775', '\uc778', '\uc77c', '\uc784',\n '\uc790', '\uc791', '\uc7a5', '\uc7ac', '\uc800', '\uc801', '\uc804', '\uc815', '\uc81c', '\uc870', '\uc885', '\uc8fc', '\uc9c4',\n '\ucc28', '\ucc3d', '\ucc44', '\ucc9c', '\ucca0', '\uccad', '\ucd08', '\ucd98', '\ucd9c', '\ucda9', '\ud0dc', '\ud0dd', '\ud1a0', '\ud1b5', '\ud2b9',\n '\ud30c', '\ud314', '\ud3c9', '\ud3ec', '\ud45c', '\ud558', '\ud559', '\ud55c', '\ud568', '\ud569', '\ud574', '\ud589', '\ud5c8', '\ud5cc', '\ud611', '\ud615', '\ud638', '\ud64d',\n '\ud654', '\ud669', '\ud751', '\ud765']\n```\n\n### \ud83c\udde8\ud83c\uddf3 China Support\n\u4e2d\u56fd\u8f66\u724c\u8bc6\u522b\u89e3\u51b3\u65b9\u6848\n\n**Character Support:**\n```python\n['0-9', 'A-Z', '\u00b7', '\u4e91', '\u4eac', '\u5180', '\u5409', '\u5b81', '\u5ddd', '\u6302', '\u65b0', '\u664b', '\u6842',\n '\u6caa', '\u6d25', '\u6d59', '\u6e1d', '\u6e2f', '\u6e58', '\u6fb3', '\u743c', '\u7518', '\u7696',\n '\u7ca4', '\u82cf', '\u8499', '\u85cf', '\u8c6b', '\u8d35', '\u8d63', '\u8fbd', '\u9102', '\u95fd', '\u9655', '\u9752', '\u9c81', '\u9ed1']\n```\n\n### \ud83e\ude90 Universal Model\nAn integrated model for recognizing license plates from all supported regions with automatic region detection.\n\n<br><br>\n## \ud83d\udd29 Installation\n\n### \ud83d\udcbb CPU Installation (Universal)\n```bash\n# Lightweight installation for all platforms\npip install marearts-anpr\n```\n\n### \ud83d\ude80 GPU Installation (Recommended for Production)\n```bash\n# NVIDIA CUDA GPU (Linux/Windows) - Significantly faster\npip install marearts-anpr[gpu]\n\n# Windows GPU (AMD/Intel/NVIDIA) - Faster processing \npip install marearts-anpr[directml]\n\n# All GPU support (maximum compatibility)\npip install marearts-anpr[all-gpu]\n\n# Development dependencies\npip install marearts-anpr[dev]\n```\n\n### \ud83d\udcca GPU Acceleration\nThe SDK features smart provider detection that automatically uses the best available hardware. GPU acceleration provides significant performance improvements over CPU processing.\n\n### Installation Recommendations\n- **Production High-Throughput**: `pip install marearts-anpr[gpu]` - Best for NVIDIA GPU systems\n- **Windows Development**: `pip install marearts-anpr[directml]` - Works with any GPU (AMD/Intel/NVIDIA)\n- **CPU/Cloud Deployment**: `pip install marearts-anpr` - Lightweight, no GPU dependencies\n- **Maximum Compatibility**: `pip install marearts-anpr[all-gpu]` - Includes all GPU support options\n\n### System Requirements\n\n- **Python**: 3.9, 3.10, 3.11, or 3.12\n- **Operating System**: Linux (x86_64, ARM64), macOS, Windows\n- **Memory**: Minimum 4GB RAM (8GB recommended for GPU)\n- **Storage**: ~500MB for model files\n- **GPU** (optional): NVIDIA CUDA or DirectML compatible\n\n<br><br>\n## \ud83e\udeaa License Key\n\n**For private keys,** please visit [MareArts ANPR Solution](https://study.marearts.com/p/anpr-lpr-solution.html).\nFor inquiries about private keys, contact us at [hello@marearts.com](mailto:hello@marearts.com).\n\n<br><br>\n## \ud83d\ude80 Quick Start\n\n### Environment Setup (Required)\n```bash\n# Set license credentials (recommended)\nexport MAREARTS_ANPR_USERNAME=\"your-email@domain.com\"\nexport MAREARTS_ANPR_SERIAL_KEY=\"your-serial-key\"\n```\n\n### Basic Usage\n```python\n# pip install marearts-anpr[gpu] # For best performance\nfrom marearts_anpr import marearts_anpr_from_image_file\nfrom marearts_anpr import ma_anpr_detector, ma_anpr_ocr\n\n# Initialize with your credentials\nuser_name = \"your_email\"\nserial_key = \"your_serial_key\"\n\n# Optional: Load from environment variables if set\n# export MAREARTS_ANPR_USERNAME=\"your-email@domain.com\"\n# export MAREARTS_ANPR_SERIAL_KEY=\"your-serial-key\"\n# import os\n# user_name = os.getenv(\"MAREARTS_ANPR_USERNAME\", user_name)\n# serial_key = os.getenv(\"MAREARTS_ANPR_SERIAL_KEY\", serial_key)\n\ndetector = ma_anpr_detector(\"v13_middle\", user_name, serial_key)\nocr = ma_anpr_ocr(\"v13_euplus\", user_name, serial_key)\n\n# Process image\nresult = marearts_anpr_from_image_file(detector, ocr, \"image.jpg\")\nprint(result)\n# Expected: {'results': [{'ocr': 'ABC123', 'ocr_conf': 99, ...}], 'ltrb_proc_sec': 0.08, 'ocr_proc_sec': 0.05}\n```\n\n### CLI Usage\n```bash\n# Direct image processing\nma-anpr image.jpg\n\n# Test without credentials (1000 requests/day)\nma-anpr test-api image.jpg\n\n# Validate license\nma-anpr validate\n\n# List available models\nma-anpr models\n\n# GPU information\nma-anpr gpu-info\n```\n\n<br><br>\n## \ud83e\udd16 Live Test\n[MareArts \ud83c\udfac Live](http://live.marearts.com)\n\n<br><br>\n## \ud83d\udcfa ANPR Result Videos\n[Check here](https://www.youtube.com/playlist?list=PLvX6vpRszMkxJBJf4EjQ5VCnmkjfE59-J) to see the license plate recognition results in YouTube videos.\n\n<br><br>\n## \ud83d\ude82 Model Version\n### ANPR Detector Model Version\n\n| Model | File Size | Precision | Recall | F1 Score | Avg Detection Time (s) |\n|------------|-----------|-----------|---------|----------|------------------------|\n| v10_small | 38MB | 0.9852 | 0.9694 | 0.9716 | 0.0468 |\n| v10_middle | 79MB | 0.9836 | 0.9680 | 0.9701 | 0.0992 |\n| v10_large | 125MB | 0.9858 | 0.9709 | 0.9731 | 0.2307 |\n| v11_small | 38MB | 0.9791 | 0.9849 | 0.9779 | 0.0492 |\n| v11_middle | 79MB | 0.9799 | 0.9866 | 0.9793 | 0.0938 |\n| v11_large | 125MB | 0.9824 | 0.9892 | 0.9823 | 0.1561 |\n| v13_nano | 14MB | 0.9657 | 0.9826 | 0.9676 | 0.0356 | \n| v13_small | 49MB | 0.9632 | 0.9920 | 0.9715 | 0.0657 | \n| v13_middle | 103MB | 0.9634 | 0.9940 | 0.9725 | 0.1629 |\n| v13_large | 129MB | 0.9642 | 0.9936 | 0.9729 | 0.2053 |\n\n### Recommendations\n\n* \ud83c\udfaf **Best Precision**: v10_large (0.9858)\n* \ud83d\udcc8 **Best Recall**: v13_middle (0.9940)\n* \ud83e\udd47 **Best F1 Score**: v11_large (0.9823)\n* \u26a1 **Fastest Model**: v13_nano (0.0356s)\n\n### Notes\n* Speed test is based on i7-9800X 3.8GHz\n* Last Update: 2025-03-31 15:26:43\n* Please use the latest version of marearts-anpr\n* **Use model name in detector code**\n\n\n\n### ANPR OCR Model Version\n| Model | Region | Size | Accuracy | Character Accuracy | Mean Confidence | Processing Time (s) | Recommendation |\n|-------|---------|------|----------|-------------------|-----------------|---------------------|----------------|\n| eu | EU | 293MB | 1.0000 | 1.0000 | 96.9071 | 0.0808 | \ud83c\udfaf |\n| euplus | EU Plus | 146MB | 0.9432 | 0.9876 | 94.0371 | 0.0841 | |\n| kr | Korea | 146MB | 0.9822 | 0.9967 | 97.4243 | 0.0861 | |\n| univ | Universal | 146MB | 0.9348 | 0.9877 | 94.4448 | 0.0862 | |\n| v11_eu | EU | 293MB | 0.9900 | 0.9980 | 97.9573 | 0.0830 | \ud83d\udd0d |\n| v11_euplus | EU Plus | 146MB | 0.9822 | 0.9965 | 97.6391 | 0.0823 | \ud83c\udfaf |\n| v11_kr | Korea | 146MB | 0.9938 | 0.9991 | 98.5033 | 0.0852 | \ud83c\udfaf |\n| v11_univ | Universal | 146MB | 0.9600 | 0.9941 | 97.7669 | 0.0845 | \u26a1 |\n| v13_eu | EU | 295MB | 0.9504 | 0.9860 | 97.4215 | 0.0822 | |\n| v13_kr | Korea | 147MB | 0.9721 | 0.9951 | 97.0080 | 0.0855 | |\n| v13_cn | China | 147MB | 0.9657 | 0.9932 | 97.7589 | 0.0858 | \ud83c\udfaf |\n| v13_euplus | EU Plus | 147MB | 0.9617 | 0.9901 | 97.6953 | 0.0822 | \u26a1 |\n| v13_univ | Universal | 147MB | 0.9829 | 0.9963 | 98.6056 | 0.0846 | \ud83c\udfaf |\n\n### Recommendation Icons\n* \ud83c\udfaf Best Accuracy\n* \ud83d\udcdd Best Character Accuracy\n* \ud83d\udd0d Best Confidence\n* \u26a1 Fastest Model\n\n### Notes\n* Speed test is based on i7-9800X 3.8GHz\n* Last Update: 2025-04-04 21:38:05\n* Please use the latest version of marearts-anpr\n* **Use model name in ocr code**\n\n<br><br>\n## \ud83d\udee1\ufe0f Enterprise Security\n\n### Security Features\n- \ud83d\udd12 **License Protection**: Military-grade license validation system\n- \ud83d\udeab **Direct Access Prevention**: Low-level classes protected from bypass attempts\n- \ud83d\udd10 **Environment Variables**: Secure credential management (no config files)\n- \u26a0\ufe0f **Generic Error Messages**: No sensitive information leakage to potential attackers\n- \ud83d\udd04 **Dynamic Validation**: Periodic license state verification\n\n### Credential Management\n```bash\n# Secure environment variable setup (recommended)\nexport MAREARTS_ANPR_USERNAME=\"your-email@domain.com\" \nexport MAREARTS_ANPR_SERIAL_KEY=\"your-serial-key\"\n\n# Validate credentials\nma-anpr validate\n```\n\n### Security Best Practices\n- \u2705 Use environment variables for credentials\n- \u2705 Never hardcode license keys in source code\n- \u2705 Validate license before production deployment\n- \u2705 Monitor for licensing compliance\n\n<br><br>\n## \ud83d\udcdd Using SDK\n### \ud83d\udd2c SDK Usage\nTry our interactive demo: [](https://colab.research.google.com/drive/1zZlueTZ1Le73yOQ3mdJFONxcebKyCgr-?usp=sharing)\n\n\nHere's an example of how to use the updated SDK:\n\n```python\n# pip install marearts-anpr\nimport cv2\nfrom PIL import Image\nfrom marearts_anpr import ma_anpr_detector\nfrom marearts_anpr import ma_anpr_ocr\nfrom marearts_anpr import marearts_anpr_from_pil\nfrom marearts_anpr import marearts_anpr_from_image_file\nfrom marearts_anpr import marearts_anpr_from_cv2\n\nif __name__ == '__main__':\n \n #################################\n ## Initiate MareArts ANPR\n print(\"EU ANPR\")\n \n # Initialize with your credentials\n user_name = \"your_email\"\n serial_key = \"your_serial_key\"\n \n # Optional: Load from environment variables if set\n # export MAREARTS_ANPR_USERNAME=\"your-email@domain.com\"\n # export MAREARTS_ANPR_SERIAL_KEY=\"your-serial-key\"\n # import os\n # user_name = os.getenv(\"MAREARTS_ANPR_USERNAME\", user_name)\n # serial_key = os.getenv(\"MAREARTS_ANPR_SERIAL_KEY\", serial_key)\n \n detector_model_version = \"v13_middle\" # Latest v13 series recommended\n ocr_model_version = \"v13_euplus\" # Latest v13 series recommended\n\n # MareArts ANPR Detector Inference (with GPU acceleration)\n anpr_d = ma_anpr_detector(detector_model_version, user_name, serial_key, conf_thres=0.3, iou_thres=0.5)\n # MareArts ANPR OCR Inference (with GPU acceleration)\n anpr_r = ma_anpr_ocr(ocr_model_version, user_name, serial_key)\n #################################\n\n #################################\n # Routine Task 1 - Predict from File\n image_path = './sample_images/eu_test1.jpg'\n output = marearts_anpr_from_image_file(anpr_d, anpr_r, image_path)\n print(output)\n\n # Routine Task 2 - Predict from cv2\n img = cv2.imread(image_path)\n output = marearts_anpr_from_cv2(anpr_d, anpr_r, img)\n print(output)\n\n # Routine Task 3 - Predict from Pillow\n pil_img = Image.open(image_path)\n output = marearts_anpr_from_pil(anpr_d, anpr_r, pil_img)\n print(output)\n #################################\n\n\n #################################\n ## Initiate MareArts ANPR for Korea\n print(\"ANPR Korean\")\n # user_name, serial_key are already defined (or loaded from environment)\n # anpr_d is also already initiated before\n ocr_model_version = \"v13_kr\" # Latest v13 series recommended\n # MareArts ANPR OCR Inference (with GPU acceleration)\n anpr_r = ma_anpr_ocr(ocr_model_version, user_name, serial_key)\n\n #################################\n # Routine Task 1 - Predict from File\n image_path = './sample_images/kr_test2.jpg'\n output = marearts_anpr_from_image_file(anpr_d, anpr_r, image_path)\n print(output)\n\n # Routine Task 2 - Predict from cv2\n img = cv2.imread(image_path)\n output = marearts_anpr_from_cv2(anpr_d, anpr_r, img)\n print(output)\n\n # Routine Task 3 - Predict from Pillow\n pil_img = Image.open(image_path)\n output = marearts_anpr_from_pil(anpr_d, anpr_r, pil_img)\n print(output)\n #################################\n```\nPlease refer to the **advanced.py** code in the **./example_code** folder. This file demonstrates how to implement the ma_anpr_detector and ma_anpr_ocr separately.\n\n<br><br>\n### \ud83d\udd2c Returns\nThe output from the ANPR will be similar to:\n\n```python\n{\n 'results': [\n {'ocr': 'SL593LM', 'ocr_conf': 99, 'ltrb': [819, 628, 1085, 694], 'ltrb_conf': 90}\n ], \n 'ltrb_proc_sec': 0.22,\n 'ocr_proc_sec': 0.15\n}\n```\n```python\n{\n 'results': [\n {'ocr': '123\uac004568', 'ocr_conf': 99, 'ltrb': [181, 48, 789, 186], 'ltrb_conf': 83}, \n {'ocr': '123\uac004568', 'ocr_conf': 99, 'ltrb': [154, 413, 774, 557], 'ltrb_conf': 82}, \n {'ocr': '123\uac004568', 'ocr_conf': 99, 'ltrb': [154, 601, 763, 746], 'ltrb_conf': 80}, \n {'ocr': '123\uac004568', 'ocr_conf': 99, 'ltrb': [156, 217, 773, 369], 'ltrb_conf': 80}\n ],\n 'ltrb_proc_sec': 0.23,\n 'ocr_proc_sec': 0.6\n}\n```\n\n- **Results:** Contains OCR text, probabilities, and detection coordinate(left, top, right, bottom).\n- **Processing Speeds:** Provided for license plate detection and OCR.\n\n<br><br>\n## \ud83e\uddea API for Testing\n\n**Daily limit:** 1000 requests\n\n### Quick Test via CLI (Recommended)\n\n```bash\n# Test with an image using default models\nma-anpr test-api image.jpg\n\n# Specify custom models\nma-anpr test-api image.jpg --detector v13_small --ocr v13_kr\n\n# Process multiple images\nma-anpr test-api *.jpg\n\n# List available models\nma-anpr test-api --list-models\n\n# Save results to JSON\nma-anpr test-api image.jpg --json results.json\n```\n\n### Direct API Call (Advanced)\n\n<details>\n<summary>Click to see API details</summary>\n\n**Test Credentials:**\n- **User ID:** `marearts@public`\n- **API Key:** `J4K9L2Wory34@G7T1Y8rt-PP83uSSvkV3Z6ioSTR!`\n\n```bash\ncurl -X POST https://we303v9ck8.execute-api.eu-west-1.amazonaws.com/Prod/marearts_anpr \\\n -H \"Content-Type: image/jpeg\" \\\n -H \"x-api-key: J4K9L2Wory34@G7T1Y8rt-PP83uSSvkV3Z6ioSTR!\" \\\n -H \"user-id: marearts@public\" \\\n -H \"detector_model_version: v13_middle\" \\\n -H \"ocr_model_version: v13_euplus\" \\\n --data-binary \"@./image.jpg\"\n```\n\n</details>\n\n\n<br><br>\n## \u2693\ufe0f Create MareArts ANPR API Docker\nPlease refer to **./API_docker_example** folder. \n```bash\nAPI_docker_example\n\u2502\n\u251c\u2500\u2500 api_call.sh # Shell script to make API calls to the MareArts ANPR application.\n\u251c\u2500\u2500 app.py # Python script containing the MareArts ANPR application.\n\u251c\u2500\u2500 build_image.sh # Shell script to build the Docker image from the Dockerfile.\n\u251c\u2500\u2500 Dockerfile # Dockerfile containing instructions for building the Docker image.\n\u251c\u2500\u2500 request.py # Python script to send requests to the MareArts ANPR API server.\n\u251c\u2500\u2500 requirements.txt # Contains a list of Python packages that the app requires.\n\u2514\u2500\u2500 run_container.sh # Shell script to run the Docker container from the built image.\n```\n\n<br><br>\n## \u2699\ufe0f example_code\n\n**bg_subtraction.py** - Motion detection with OpenCV\n- Detects moving objects in video\n- Adjustable sensitivity and object size\n\n**basic.py** - Easy license plate recognition\n- Uses MareArts ANPR SDK with simple implementation\n\n**advance.py** - Advanced license plate recognition\n- Direct control of detection and OCR steps\n- Run detection and OCR separately for better control\n\n\n<br><br>\n## \u2753 Frequently Asked Questions (FAQ)\n\n### \ud83d\udee0\ufe0f Technical Questions\n\n#### Q: Do I need an internet connection to use the software?\n**A:** No, the software works offline after initial setup. Internet is only needed for:\n- Initial model download\n- Checking/downloading model updates\n- Without internet, SDK uses existing downloaded model\n\n#### Q: What's new in the latest version?\n**A:** Major enterprise improvements:\n- \ud83d\udee1\ufe0f **Enterprise Security**: Military-grade license protection\n- \ud83d\ude80 **GPU Acceleration**: Significantly faster with smart provider detection \n- \ud83d\udd10 **Environment Variables**: Secure credential management\n- \ud83d\udcbb **CLI Interface**: `ma-anpr` command-line tool\n- \ud83c\udf0d **Multi-Platform**: Professional installation variants\n\n#### Q: How do I get GPU acceleration?\n**A:** Install the appropriate GPU variant:\n- **NVIDIA GPU**: `pip install marearts-anpr[gpu]` (Best performance)\n- **Windows GPU**: `pip install marearts-anpr[directml]` (Good performance)\n- **All GPUs**: `pip install marearts-anpr[all-gpu]`\n\n#### Q: How do I set up credentials securely?\n**A:** Use environment variables:\n```bash\nexport MAREARTS_ANPR_USERNAME=\"your-email@domain.com\"\nexport MAREARTS_ANPR_SERIAL_KEY=\"your-serial-key\"\nma-anpr validate # Test credentials\n```\n\n### \ud83d\udccb Licensing & Usage\n\n#### Q: What types of licenses are available?\n**A:** Three license types are available:\n- **Monthly licenses** - Need renewal every month\n- **Yearly licenses** - Need renewal every year \n- **Lifetime licenses** - No expiration, use indefinitely\n\n#### Q: Can I use my license on multiple computers?\n**A:** Yes! All licenses have no limits on the number of computers. You can use them on multiple computers simultaneously.\n\n#### Q: How does license renewal work?\n**A:** \n- **Monthly/Yearly licenses**: Must be renewed before expiration\n- **Lifetime licenses**: No expiration, use indefinitely\n\n### \ud83d\udcb3 Billing & Refunds\n\n#### Q: What is your refund policy?\n**A:** Refunds are only available when a license key has not been issued. However, subscription cancellation is possible at any time.\n\n#### Q: Can I cancel my subscription anytime?\n**A:** Yes, you can cancel your subscription at any time, though refunds are only available if the license key hasn't been issued yet.\n\n### \ud83d\udd12 Service Continuity\n\n#### Q: What happens if the service discontinues?\n**A:** We commit to either:\n- Open-sourcing the code, or\n- Providing lifetime licenses to active users\n\n### \ud83d\udcde Support\n\n#### Q: How can I get help?\n**A:** Contact our support team at [hello@marearts.com](mailto:hello@marearts.com) for setup, licensing, or technical issues.\n\n<br><br>\n## \ud83d\udcde Support & Resources\n\n| Resource | Link |\n|----------|------|\n| \ud83d\udce7 **Contact** | [hello@marearts.com](mailto:hello@marearts.com) |\n| \ud83c\udfe0 **Homepage** | [https://marearts.com](https://marearts.com) |\n| \ud83d\udcda **Blog** | [http://study.marearts.com](http://study.marearts.com) |\n| \ud83d\udcb3 **Subscription** | [ANPR Solution](https://study.marearts.com/p/anpr-lpr-solution.html) |\n| \ud83c\udfae **Live Demo** | [http://live.marearts.com](http://live.marearts.com) |\n| \ud83d\udcfa **Video Examples** | [YouTube Playlist](https://www.youtube.com/playlist?list=PLvX6vpRszMkxJBJf4EjQ5VCnmkjfE59-J) |\n| \ud83e\uddea **Colab Demo** | [](https://colab.research.google.com/drive/1zZlueTZ1Le73yOQ3mdJFONxcebKyCgr-?usp=sharing) |\n\n## \ud83d\udcdc License\n\nThis software is proprietary and protected by copyright. Use requires a valid license key from MareArts.\n\n\u00a9 2024 MareArts. All rights reserved.\n\n\n---\n\n<div align=\"center\">\n\n**Made with \u2764\ufe0f by [MareArts](https://marearts.com)**\n\n\ud83d\ude47\ud83c\udffb\u200d\u2642\ufe0f Thank you for using MareArts ANPR!\n\n</div>\n\n",
"bugtrack_url": null,
"license": null,
"summary": "MareArts ANPR (Automatic Number Plate Recognition) library",
"version": "3.2.2",
"project_urls": {
"Homepage": "https://www.marearts.com"
},
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "e0626fdccac53753bc65e9904ebaccd1af82abb953a658e3c432aefac0b3560f",
"md5": "d729af44e76f4de429b7e86016c7cc4c",
"sha256": "d29ca0ecd8928c27c60ebd5c649d43968bef9159decd78c288ad096c299eed22"
},
"downloads": -1,
"filename": "marearts_anpr-3.2.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl",
"has_sig": false,
"md5_digest": "d729af44e76f4de429b7e86016c7cc4c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<3.13,>=3.9",
"size": 2332794,
"upload_time": "2025-08-10T12:30:57",
"upload_time_iso_8601": "2025-08-10T12:30:57.342478Z",
"url": "https://files.pythonhosted.org/packages/e0/62/6fdccac53753bc65e9904ebaccd1af82abb953a658e3c432aefac0b3560f/marearts_anpr-3.2.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0326e85025d1006bf3902ead9ce990eba6921068681ba57d8bd75d2a141db550",
"md5": "8fbab0bdf203e5f279364a61416e89e0",
"sha256": "b0faa8153948ff9e671e7bd6cd41d0af80817603c7d72afff653536069f13122"
},
"downloads": -1,
"filename": "marearts_anpr-3.2.2-cp310-cp310-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "8fbab0bdf203e5f279364a61416e89e0",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<3.13,>=3.9",
"size": 2346239,
"upload_time": "2025-08-10T12:30:58",
"upload_time_iso_8601": "2025-08-10T12:30:58.995378Z",
"url": "https://files.pythonhosted.org/packages/03/26/e85025d1006bf3902ead9ce990eba6921068681ba57d8bd75d2a141db550/marearts_anpr-3.2.2-cp310-cp310-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "20156fe736c282f9c7132e7991f6bd4f6a92be76b9452e228bf6f2f74dd8a30c",
"md5": "deb2ea58c90a10a92cfb839178bec320",
"sha256": "8ce2a2df36b8bae6176917320c4fca5089568ce201a25466cdf6a84279cb2a52"
},
"downloads": -1,
"filename": "marearts_anpr-3.2.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl",
"has_sig": false,
"md5_digest": "deb2ea58c90a10a92cfb839178bec320",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<3.13,>=3.9",
"size": 2350097,
"upload_time": "2025-08-10T12:31:00",
"upload_time_iso_8601": "2025-08-10T12:31:00.998098Z",
"url": "https://files.pythonhosted.org/packages/20/15/6fe736c282f9c7132e7991f6bd4f6a92be76b9452e228bf6f2f74dd8a30c/marearts_anpr-3.2.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a87894210f17f88ae038f067886c0db0b1e51287ddfdbd60ae2872e07b771c2c",
"md5": "61017e6ecb847b636a20ea888e67a196",
"sha256": "0e69917164a3b3519fbda122733348be91a21c7774c1b93a9e4ae4d1bda6430b"
},
"downloads": -1,
"filename": "marearts_anpr-3.2.2-cp311-cp311-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "61017e6ecb847b636a20ea888e67a196",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<3.13,>=3.9",
"size": 460419,
"upload_time": "2025-08-10T12:31:02",
"upload_time_iso_8601": "2025-08-10T12:31:02.766756Z",
"url": "https://files.pythonhosted.org/packages/a8/78/94210f17f88ae038f067886c0db0b1e51287ddfdbd60ae2872e07b771c2c/marearts_anpr-3.2.2-cp311-cp311-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5d2cd05e90d11c90ae0e8629e8e3087d268adfcda6ee7516f8feb9f574fdd44c",
"md5": "8c963192587d98d8b7c02380a0ea1866",
"sha256": "68cbf3ab1fff7b548fad7d242d963da1e762424825a0afe6a7543805cbbcf767"
},
"downloads": -1,
"filename": "marearts_anpr-3.2.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl",
"has_sig": false,
"md5_digest": "8c963192587d98d8b7c02380a0ea1866",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<3.13,>=3.9",
"size": 2360128,
"upload_time": "2025-08-10T12:31:04",
"upload_time_iso_8601": "2025-08-10T12:31:04.816838Z",
"url": "https://files.pythonhosted.org/packages/5d/2c/d05e90d11c90ae0e8629e8e3087d268adfcda6ee7516f8feb9f574fdd44c/marearts_anpr-3.2.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1614a5c4ff112dc62dc00019e8e0270f25a9f1a1707df509c2942c05278fe2b5",
"md5": "7819884cc9aa90bccde33f478ce438f0",
"sha256": "956e96e2de913a771694fff41edd50072a85ce7f2dcd18d2aceaec7b9b49f14d"
},
"downloads": -1,
"filename": "marearts_anpr-3.2.2-cp312-cp312-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "7819884cc9aa90bccde33f478ce438f0",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<3.13,>=3.9",
"size": 2378259,
"upload_time": "2025-08-10T12:31:06",
"upload_time_iso_8601": "2025-08-10T12:31:06.333173Z",
"url": "https://files.pythonhosted.org/packages/16/14/a5c4ff112dc62dc00019e8e0270f25a9f1a1707df509c2942c05278fe2b5/marearts_anpr-3.2.2-cp312-cp312-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "45f193169e1527c93ca5fe8007c4501e3d2a3d7df7ffac0fa24688932ba8093d",
"md5": "5abd178fff1097f2aaa7ae04cea0f3a2",
"sha256": "a63d450630726046f55673f5fdc556fe81968e915c855f8739a1867b9421ab65"
},
"downloads": -1,
"filename": "marearts_anpr-3.2.2-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl",
"has_sig": false,
"md5_digest": "5abd178fff1097f2aaa7ae04cea0f3a2",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<3.13,>=3.9",
"size": 2325897,
"upload_time": "2025-08-10T12:31:08",
"upload_time_iso_8601": "2025-08-10T12:31:08.340063Z",
"url": "https://files.pythonhosted.org/packages/45/f1/93169e1527c93ca5fe8007c4501e3d2a3d7df7ffac0fa24688932ba8093d/marearts_anpr-3.2.2-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b964c9e414ecee2ee0316f87e3eff22ef42a65eb333df96896bee43b2a5a2ab1",
"md5": "cbd44ae4fe1a34abd3980277275f4119",
"sha256": "9e49e301f8c86c6acaeda60551992e2e2be0a6387e09de11c4409e5c76ba1b7a"
},
"downloads": -1,
"filename": "marearts_anpr-3.2.2-cp39-cp39-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "cbd44ae4fe1a34abd3980277275f4119",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<3.13,>=3.9",
"size": 2339784,
"upload_time": "2025-08-10T12:31:10",
"upload_time_iso_8601": "2025-08-10T12:31:10.372775Z",
"url": "https://files.pythonhosted.org/packages/b9/64/c9e414ecee2ee0316f87e3eff22ef42a65eb333df96896bee43b2a5a2ab1/marearts_anpr-3.2.2-cp39-cp39-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-10 12:30:57",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "marearts-anpr"
}