Name | marearts-anpr JSON |
Version |
3.3.0
JSON |
| download |
home_page | https://www.marearts.com |
Summary | MareArts ANPR (Automatic Number Plate Recognition) library |
upload_time | 2025-09-11 06:29:10 |
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.3.0",
"project_urls": {
"Homepage": "https://www.marearts.com"
},
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "0396e2aeebe1feef7c7bfa673d5d4475003abcacee4b88bc229585b643f3565a",
"md5": "46baeadbdd2da1d4d8d02982d748b426",
"sha256": "9b9dcbe96d2ddc32701bec3ad6a0ca911d032b2092ecbb69893801ebe508077c"
},
"downloads": -1,
"filename": "marearts_anpr-3.3.0-cp310-cp310-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "46baeadbdd2da1d4d8d02982d748b426",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<3.13,>=3.9",
"size": 672165,
"upload_time": "2025-09-11T06:29:10",
"upload_time_iso_8601": "2025-09-11T06:29:10.672348Z",
"url": "https://files.pythonhosted.org/packages/03/96/e2aeebe1feef7c7bfa673d5d4475003abcacee4b88bc229585b643f3565a/marearts_anpr-3.3.0-cp310-cp310-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9c83766d90860dd886e8b58060629716974585907bf959448a5bb6fbb4d3c0b7",
"md5": "39e0c0c34da17d3e95332c3d6ac6b733",
"sha256": "6858332097ddb2ab0297fa2ab7d9ae6da0ce0c396aefcd4cc4c7746ef78d577f"
},
"downloads": -1,
"filename": "marearts_anpr-3.3.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl",
"has_sig": false,
"md5_digest": "39e0c0c34da17d3e95332c3d6ac6b733",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<3.13,>=3.9",
"size": 2346072,
"upload_time": "2025-09-11T06:25:50",
"upload_time_iso_8601": "2025-09-11T06:25:50.388938Z",
"url": "https://files.pythonhosted.org/packages/9c/83/766d90860dd886e8b58060629716974585907bf959448a5bb6fbb4d3c0b7/marearts_anpr-3.3.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "17200938ea09932fb7e194fbfe94276b54f5119a25b88a654f3c9d7bb68b89d0",
"md5": "281239710a8917b813b6b11bd4cf4d75",
"sha256": "9b9943ffe0696782220746fb854f60890f07a462fca50b6d103b4de3b565f336"
},
"downloads": -1,
"filename": "marearts_anpr-3.3.0-cp310-cp310-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "281239710a8917b813b6b11bd4cf4d75",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<3.13,>=3.9",
"size": 2359291,
"upload_time": "2025-09-11T06:25:52",
"upload_time_iso_8601": "2025-09-11T06:25:52.944654Z",
"url": "https://files.pythonhosted.org/packages/17/20/0938ea09932fb7e194fbfe94276b54f5119a25b88a654f3c9d7bb68b89d0/marearts_anpr-3.3.0-cp310-cp310-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a231525df7aa8fcc9a66a2ece84c815b15a05a9b67928ad0067483e78e8de9e3",
"md5": "a2ff6039b54efbc6f813c16aa3129d85",
"sha256": "1511c57248a9ca876066d824a146259cb1188686f4a4666309a12826d73be76b"
},
"downloads": -1,
"filename": "marearts_anpr-3.3.0-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "a2ff6039b54efbc6f813c16aa3129d85",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<3.13,>=3.9",
"size": 352079,
"upload_time": "2025-09-11T06:29:13",
"upload_time_iso_8601": "2025-09-11T06:29:13.515104Z",
"url": "https://files.pythonhosted.org/packages/a2/31/525df7aa8fcc9a66a2ece84c815b15a05a9b67928ad0067483e78e8de9e3/marearts_anpr-3.3.0-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8978e7cafc80b880c86f98bd755f20c47d2f1e266221344bcbdc2f686af87e45",
"md5": "649a4284fa972ad1ad5f5f1190129608",
"sha256": "df484b2d8a186031f4a6e5a0fe0a695cefa06a8e35bee2de1c0cf10ca21f92ee"
},
"downloads": -1,
"filename": "marearts_anpr-3.3.0-cp311-cp311-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "649a4284fa972ad1ad5f5f1190129608",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<3.13,>=3.9",
"size": 669273,
"upload_time": "2025-09-11T06:29:15",
"upload_time_iso_8601": "2025-09-11T06:29:15.037350Z",
"url": "https://files.pythonhosted.org/packages/89/78/e7cafc80b880c86f98bd755f20c47d2f1e266221344bcbdc2f686af87e45/marearts_anpr-3.3.0-cp311-cp311-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9cd6cc116c65a3dc3239879310b79d4866d99d26e1eac9369e3431abd381b827",
"md5": "8074b9b7d741d9785c2584abbf0973c7",
"sha256": "c871f7f7a3dc61885fa9d26a2444813820e31b5c8f1550e77017c36551729347"
},
"downloads": -1,
"filename": "marearts_anpr-3.3.0-cp311-cp311-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "8074b9b7d741d9785c2584abbf0973c7",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<3.13,>=3.9",
"size": 2371146,
"upload_time": "2025-09-11T06:25:54",
"upload_time_iso_8601": "2025-09-11T06:25:54.779608Z",
"url": "https://files.pythonhosted.org/packages/9c/d6/cc116c65a3dc3239879310b79d4866d99d26e1eac9369e3431abd381b827/marearts_anpr-3.3.0-cp311-cp311-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a8071b1f0b918192e5c1d8f1e6107ba2d298e13cb13cc95a91b18c9c6f164232",
"md5": "dccc245686890af8c16d8cf2bad69ab8",
"sha256": "11487d0f60d3c61a40fa6d7ca4fa62022f44d33b31a5c2f306b745d897ed1529"
},
"downloads": -1,
"filename": "marearts_anpr-3.3.0-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "dccc245686890af8c16d8cf2bad69ab8",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<3.13,>=3.9",
"size": 353787,
"upload_time": "2025-09-11T06:29:16",
"upload_time_iso_8601": "2025-09-11T06:29:16.218531Z",
"url": "https://files.pythonhosted.org/packages/a8/07/1b1f0b918192e5c1d8f1e6107ba2d298e13cb13cc95a91b18c9c6f164232/marearts_anpr-3.3.0-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "efcd2c0ccd512bb6b3bd567d2b6ef67142ad79f10cdfbabd0249e3b4c0f48413",
"md5": "d67ef7a1c1cdf442c35ea686a2d3446c",
"sha256": "884cc2a4679ec2741c073468c7f683d5d9fe21f4c69080ea8d3a85ce590d6632"
},
"downloads": -1,
"filename": "marearts_anpr-3.3.0-cp312-cp312-macosx_10_13_universal2.whl",
"has_sig": false,
"md5_digest": "d67ef7a1c1cdf442c35ea686a2d3446c",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<3.13,>=3.9",
"size": 664015,
"upload_time": "2025-09-11T06:29:17",
"upload_time_iso_8601": "2025-09-11T06:29:17.380603Z",
"url": "https://files.pythonhosted.org/packages/ef/cd/2c0ccd512bb6b3bd567d2b6ef67142ad79f10cdfbabd0249e3b4c0f48413/marearts_anpr-3.3.0-cp312-cp312-macosx_10_13_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "92cc105e61c84c7b99b8cf2f41184df1b958efb0acf5ac9ab7ea268b34efa4a4",
"md5": "6695bea846e60ce3890015bc05aca588",
"sha256": "8a11712b2928e039af07868bb26503193b5b76003290494b7652a10278b57c3f"
},
"downloads": -1,
"filename": "marearts_anpr-3.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl",
"has_sig": false,
"md5_digest": "6695bea846e60ce3890015bc05aca588",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<3.13,>=3.9",
"size": 2373584,
"upload_time": "2025-09-11T06:25:56",
"upload_time_iso_8601": "2025-09-11T06:25:56.175498Z",
"url": "https://files.pythonhosted.org/packages/92/cc/105e61c84c7b99b8cf2f41184df1b958efb0acf5ac9ab7ea268b34efa4a4/marearts_anpr-3.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fda7f641b24cfd1096ba9c09721afc7e4e116850d1f889799c4628f017d71f13",
"md5": "1c1cba332075006d9ac5758385989b40",
"sha256": "0ad07b9ea0c8b5fef6ef9a093d7d77c1a4d5671e727c8a49e36e48c894fa5f2d"
},
"downloads": -1,
"filename": "marearts_anpr-3.3.0-cp312-cp312-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "1c1cba332075006d9ac5758385989b40",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<3.13,>=3.9",
"size": 463648,
"upload_time": "2025-09-11T06:25:57",
"upload_time_iso_8601": "2025-09-11T06:25:57.960662Z",
"url": "https://files.pythonhosted.org/packages/fd/a7/f641b24cfd1096ba9c09721afc7e4e116850d1f889799c4628f017d71f13/marearts_anpr-3.3.0-cp312-cp312-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c1fb7e99e04fb2b68b168834d692aaf3058b44322f76a52662c76a2d972af4fb",
"md5": "62e4b42505f846e35c4690b5ce15a188",
"sha256": "15d4e84a5ccc8237c78c61179c9e5d5b8795b3dea6d2c3a6c19cf91909a40680"
},
"downloads": -1,
"filename": "marearts_anpr-3.3.0-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "62e4b42505f846e35c4690b5ce15a188",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<3.13,>=3.9",
"size": 350448,
"upload_time": "2025-09-11T06:29:19",
"upload_time_iso_8601": "2025-09-11T06:29:19.087077Z",
"url": "https://files.pythonhosted.org/packages/c1/fb/7e99e04fb2b68b168834d692aaf3058b44322f76a52662c76a2d972af4fb/marearts_anpr-3.3.0-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2b8abe8d3d1a582fa97977f1988150ff1e4ca7c4cc0032b7613164df586d5c70",
"md5": "8c2ce4669fbf222f0cd96203d5a69d6b",
"sha256": "3f4c35c54e9f8ac1c7d7320dfb4cbbeba8feea5f15aa0b7d055043013676b54f"
},
"downloads": -1,
"filename": "marearts_anpr-3.3.0-cp39-cp39-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "8c2ce4669fbf222f0cd96203d5a69d6b",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<3.13,>=3.9",
"size": 671269,
"upload_time": "2025-09-11T06:29:20",
"upload_time_iso_8601": "2025-09-11T06:29:20.539016Z",
"url": "https://files.pythonhosted.org/packages/2b/8a/be8d3d1a582fa97977f1988150ff1e4ca7c4cc0032b7613164df586d5c70/marearts_anpr-3.3.0-cp39-cp39-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "65ed45b48ae2c28053a2d217f12fd7ea19a6625ddc9010fd6393ceebea698415",
"md5": "4fa84f05ce472d0f9f27f05d08006f8c",
"sha256": "6e4e5b75057e144c7ca9067f115779924a6760c52ac18bc5576d178b7db8e040"
},
"downloads": -1,
"filename": "marearts_anpr-3.3.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl",
"has_sig": false,
"md5_digest": "4fa84f05ce472d0f9f27f05d08006f8c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<3.13,>=3.9",
"size": 2338971,
"upload_time": "2025-09-11T06:26:00",
"upload_time_iso_8601": "2025-09-11T06:26:00.078968Z",
"url": "https://files.pythonhosted.org/packages/65/ed/45b48ae2c28053a2d217f12fd7ea19a6625ddc9010fd6393ceebea698415/marearts_anpr-3.3.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ed06228e024dbc847884562d643c292b2c1c0f033134a2fbc99e1d0970e47da8",
"md5": "302caf779db9f67e06a7784802dc9a9f",
"sha256": "2a6444405d08d294e701880b7b3079cde4f045848bec3583d6411299d9f41aa5"
},
"downloads": -1,
"filename": "marearts_anpr-3.3.0-cp39-cp39-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "302caf779db9f67e06a7784802dc9a9f",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<3.13,>=3.9",
"size": 2352889,
"upload_time": "2025-09-11T06:26:02",
"upload_time_iso_8601": "2025-09-11T06:26:02.019758Z",
"url": "https://files.pythonhosted.org/packages/ed/06/228e024dbc847884562d643c292b2c1c0f033134a2fbc99e1d0970e47da8/marearts_anpr-3.3.0-cp39-cp39-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ae86357e58a919f742988d71f4fdfe718cb76790900d405cc0d7223bd377e09a",
"md5": "8998b90969af76f0825e6d7be8a03de0",
"sha256": "f4ad233e3eba9970649ad5c5060c250d4a3a2453c1370bf4d48b385508b81200"
},
"downloads": -1,
"filename": "marearts_anpr-3.3.0-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "8998b90969af76f0825e6d7be8a03de0",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<3.13,>=3.9",
"size": 353813,
"upload_time": "2025-09-11T06:29:22",
"upload_time_iso_8601": "2025-09-11T06:29:22.179659Z",
"url": "https://files.pythonhosted.org/packages/ae/86/357e58a919f742988d71f4fdfe718cb76790900d405cc0d7223bd377e09a/marearts_anpr-3.3.0-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-11 06:29:10",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "marearts-anpr"
}