Skip to content

MareArts' ANPR solution offers fast and accurate vehicle identification with seamless system integration.

Notifications You must be signed in to change notification settings

MareArts/MareArts-ANPR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MareArts ANPR SDK

*Latest Version : 3.1.3

🇪🇺🏳️‍🌈 ANPR EU and Plus

Auto Number Plate Recognition for European Union and Plus countries

🦋 Available Countries: (We are adding more countries.)

EU :
🇦🇱 Albania 🇦🇩 Andorra 🇦🇹 Austria 🇧🇪 Belgium 🇧🇦 Bosnia and Herzegovina 
🇧🇬 Bulgaria 🇭🇷 Croatia 🇨🇾 Cyprus 🇨🇿 Czechia 🇩🇰 Denmark 🇫🇮 Finland 
🇫🇷 France 🇩🇪 Germany 🇬🇷 Greece 🇭🇺 Hungary 🇮🇪 Ireland 🇮🇹 Italy 🇱🇮 Liechtenstein 
🇱🇺 Luxembourg 🇲🇹 Malta 🇲🇨 Monaco 🇲🇪 Montenegro 🇳🇱 Netherlands 🇲🇰 North Macedonia 
🇳🇴 Norway 🇵🇱 Poland 🇵🇹 Portugal 🇷🇴 Romania 🇸🇲 San Marino 🇷🇸 Serbia 
🇸🇰 Slovakia 🇸🇮 Slovenia 🇪🇸 Spain 🇸🇪 Sweden 🇨🇭 Switzerland 🇬🇧 United Kingdom 
Plus:
🇮🇩 Indonesia

🦋 Recognisable Characters:

char_list = [
    "-", ".", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
    "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N",
    "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "d", "i", 
    "m", "o", "Ö", "Ü", "Ć", "Č", "Đ", "Š", "Ž", "П"
]



🇰🇷 ANPR Korea

한국 자동차 번호판 인식 솔루션

인식 가능 문자:

char_list = [
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 
    '가', '강', '거', '경', '고', '광', '구', '기',
    '나', '남', '너', '노', '누',
    '다', '대', '더', '도', '동', '두',
    '라', '러', '로', '루',
    '마', '머', '모', '무', '문',
    '바', '배', '버', '보', '부', '북',
    '사', '산', '서', '세', '소', '수',
    '아', '어', '오', '우', '울', '원', '육', '인',
    '자', '저', '전', '제', '조', '종', '주',
    '천', '충',
    '하', '허', '호'
]



🪐 Universal

An integrated model for recognizing license plates from all the countries we support.



🔩 Installation

To install the MareArts ANPR package, use the following pip command:

pip install marearts-anpr

If you want to use CUDA version inference, please install the following additional packages:

pip install onnxruntime-gpu==1.18.1



🪪 License Key

For private keys, please visit MareArts ANPR Solution. For inquiries about private keys, contact us at hello@marearts.com.



🤖 Live Test

MareArts 🎬 Live



📺 ANPR Result Videos

Check here to see the license plate recognition results in YouTube videos.



🚂 Model Version

ANPR Detector Model Version

Model Name File Size Precision Recall F1 Speed
middle 103mb legacy legacy - 0.23 sec
v10_small 29mb 0.9713 0.9669 - 0.0623 sec
v10_middle 61mb 0.9731 0.9617 - 0.1262 sec
v10_large 93mb 0.9735 0.9687 - 0.1764 sec
v11_samll 28mb 0.9510 0.9817 0.9584 0.0119 sec
v11_middle 58mb 0.9502 0.9817 0.9577 0.0149 sec
v11_large 93mb 0.9534 0.9858 0.9619 0.0176 sec
  • speed test is based on i7-9800X 3.8GHz
  • Use model name in detector code

ANPR OCR Model Version

Model File Size Accuracy Recall F1
eu ~100mb 0.9346 0.9346 0.9392
euplus ~100mb 0.9554 0.9554 0.9580
kr ~100mb 0.9824 0.9824 0.9873
univ ~100mb 0.9626 0.9626 0.9630
v11_eu ~100mb 0.9919 0.9919 0.9919
v11_euplus ~100mb 0.9853 0.9853 0.9853
v11_kr ~100mb 0.9967 0.9967 0.9967
v11_univ ~100mb 0.9953 0.9953 0.9953
  • Use model name in OCR code



📝 Using SDK

🔬 SDK Usage

Here's an example of how to use the updated SDK:

# 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")
    user_name = "your_email"
    serial_key = "your_serial_key"
    detector_model_version = "middle" # Options: refer to detector model table
    ocr_model_version = "eu" # Options: refer to ocr model table

    # MareArts ANPR Detector Inference
    anpr_d = ma_anpr_detector(detector_model_version, user_name, serial_key, conf_thres=0.3, iou_thres=0.5)
    # MareArts ANPR OCR Inference
    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
    # anpr_d is also already initiated before
    ocr_model_version = "kr"
    # MareArts ANPR OCR Inference
    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.



🔬 Returns

The output from the ANPR will be similar to:

{
    'results': [
        {'ocr': 'SL593LM', 'ocr_conf': 99, 'ltrb': [819, 628, 1085, 694], 'ltrb_conf': 90}
        ], 
    'ltrb_proc_sec': 0.22,
    'ocr_proc_sec': 0.15
}
{
    '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.



🧪 API for testing

This is for testing purposes

API key limits: 1000 requests per day.
User ID: marearts@public
X-API-Key: J4K9L2Wory34@G7T1Y8rt-PP83uSSvkV3Z6ioSTR!

API Call

To make an API call for ANPR, use the following command:
Content-Type : image/jpeg
x-api-key: api_key
user-id: user-id
detector_model_version: Specifies which version of the detector model to use. Refer to version table
ocr_model_version: Specifies which version of the OCR model to use. Refer to version table

#!bin/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: api_key" \
     -H "user-id: user-id" \
     -H "detector_model_version: detector_version" \
     -H "ocr_model_version: ocr_version" \
     --data-binary "@./a.jpg"



⚓️ Create MareArts ANPR API Docker

Please refer to ./API_docker_example folder.

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.



😎 More Detail

email : hello@marearts.com
home page : https://marearts.com
blog : http://study.marearts.com
subscription : https://study.marearts.com/p/anpr-lpr-solution.html
live test : http://live.marearts.com



🙇🏻‍♂️ Thank you!

About

MareArts' ANPR solution offers fast and accurate vehicle identification with seamless system integration.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published