marearts-anpr


Namemarearts-anpr JSON
Version 3.2.2 PyPI version JSON
download
home_pagehttps://www.marearts.com
SummaryMareArts ANPR (Automatic Number Plate Recognition) library
upload_time2025-08-10 12:30:57
maintainerNone
docs_urlNone
authorMareArts
requires_python<3.13,>=3.9
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # MareArts ANPR SDK

[![PyPI version](https://badge.fury.io/py/marearts-anpr.svg)](https://badge.fury.io/py/marearts-anpr)
[![Python versions](https://img.shields.io/pypi/pyversions/marearts-anpr.svg)](https://pypi.org/project/marearts-anpr/)
[![Downloads](https://pepy.tech/badge/marearts-anpr)](https://pepy.tech/project/marearts-anpr)
[![License: Proprietary](https://img.shields.io/badge/License-Proprietary-red.svg)](https://study.marearts.com/p/anpr-lpr-solution.html)
[![GitHub stars](https://img.shields.io/github/stars/marearts/marearts-anpr.svg)](https://github.com/marearts/marearts-anpr/stargazers)
[![Live Demo](https://img.shields.io/badge/demo-live-brightgreen.svg)](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: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](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** | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](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[![PyPI version](https://badge.fury.io/py/marearts-anpr.svg)](https://badge.fury.io/py/marearts-anpr)\n[![Python versions](https://img.shields.io/pypi/pyversions/marearts-anpr.svg)](https://pypi.org/project/marearts-anpr/)\n[![Downloads](https://pepy.tech/badge/marearts-anpr)](https://pepy.tech/project/marearts-anpr)\n[![License: Proprietary](https://img.shields.io/badge/License-Proprietary-red.svg)](https://study.marearts.com/p/anpr-lpr-solution.html)\n[![GitHub stars](https://img.shields.io/github/stars/marearts/marearts-anpr.svg)](https://github.com/marearts/marearts-anpr/stargazers)\n[![Live Demo](https://img.shields.io/badge/demo-live-brightgreen.svg)](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: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](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** | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](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"
}
        
Elapsed time: 2.43832s