# doubangotelecom/ultimatealpr-sdk architecture

> Architecture diagram of the GitHub repository doubangotelecom/ultimatealpr-sdk, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/doubangotelecom/ultimatealpr-sdk
- Repository: https://github.com/doubangotelecom/ultimatealpr-sdk

## Overview

UltimateALPR is an on-device ANPR/ALPR SDK exposed through C++, C#, Java, and Python interfaces. The main workflow is to initialize the engine, pass image or video-frame data to its processing API, and receive structured recognition results, optionally through asynchronous callbacks. The README also documents image enhancement and vehicle analytics, plus CPU/GPU/VPU/FPGA acceleration. The native implementation is not present in the sampled sources, so internal feature wiring is shown only at the documented capability level; sample apps are omitted.

Main entry points: [`c++/ultimateALPR-SDK-API-PUBLIC.h`](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/c%2B%2B/ultimateALPR-SDK-API-PUBLIC.h) (ALPR engine), [`NPU.md`](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/NPU.md) (Compute backends), [`java/org/doubango/ultimateAlpr/Sdk/UltAlprSdkEngine.java`](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/java/org/doubango/ultimateAlpr/Sdk/UltAlprSdkEngine.java) (Java API), [`java/android/org/doubango/ultimateAlpr/Sdk/UltAlprSdkEngine.java`](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/java/android/org/doubango/ultimateAlpr/Sdk/UltAlprSdkEngine.java) (Android Java API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["SDK interfaces"]
  node_cpp["C++ API"]
  node_java["Java API"]
  node_androidjava["Android Java API"]
  node_python["Python API<br/>[ultimateAlprSdk.py]"]
  node_csharp["C&#35; API"]
  node_jni["Java JNI bridge"]
  node_androidjni["Android JNI bridge"]
  node_pinvoke["C&#35; interop"]
  node_pywrap["Python native wrapper"]
end

subgraph group_engine["Recognition engine"]
  node_enginecore["ALPR engine"]
  node_images["Image input"]
  node_result["Structured results"]
  node_callback["Async callback"]
end

subgraph group_analytics["Vision capabilities"]
  node_lpr["Plate recognition"]
  node_ienv["Night enhancement"]
  node_lpci["Plate country ID"]
  node_vehicle["Vehicle analytics"]
  node_tracking["Direction and speed"]
end

subgraph group_runtime["Models and acceleration"]
  node_models["Model assets"]
  node_openvino["OpenVINO models<br/>[models.openvino]"]
  node_tensorrt["TensorRT models<br/>[models.tensorrt]"]
  node_amlogic["Amlogic NPU models<br/>[models.amlogic_npu]"]
  node_accelerators["Compute backends<br/>[NPU.md]"]
end

node_caller(("SDK caller"))

node_caller -->|"calls API"| node_cpp
node_caller -->|"calls API"| node_java
node_caller -->|"calls API"| node_androidjava
node_caller -->|"calls API"| node_python
node_caller -->|"calls API"| node_csharp
node_java -->|"invokes native"| node_jni
node_androidjava -->|"invokes native"| node_androidjni
node_csharp -->|"invokes native"| node_pinvoke
node_python -->|"invokes native"| node_pywrap
node_cpp -->|"calls engine"| node_enginecore
node_jni -->|"bridges calls"| node_enginecore
node_androidjni -->|"bridges calls"| node_enginecore
node_pinvoke -->|"bridges calls"| node_enginecore
node_pywrap -->|"bridges calls"| node_enginecore
node_enginecore -->|"accepts frames"| node_images
node_images -->|"processes image"| node_enginecore
node_enginecore -->|"performs"| node_lpr
node_enginecore -->|"supports"| node_ienv
node_enginecore -->|"supports"| node_lpci
node_enginecore -->|"supports"| node_vehicle
node_enginecore -->|"supports"| node_tracking
node_enginecore -->|"returns result"| node_result
node_enginecore -->|"dispatches result"| node_callback
node_enginecore -->|"loads models"| node_models
node_openvino -.->|"targets"| node_accelerators
node_tensorrt -.->|"targets"| node_accelerators
node_amlogic -.->|"targets"| node_accelerators

click node_cpp "https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/c%2B%2B/ultimateALPR-SDK-API-PUBLIC.h"
click node_java "https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/java/org/doubango/ultimateAlpr/Sdk/UltAlprSdkEngine.java"
click node_androidjava "https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/java/android/org/doubango/ultimateAlpr/Sdk/UltAlprSdkEngine.java"
click node_python "https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/python/ultimateAlprSdk.py"
click node_csharp "https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/csharp/UltAlprSdkEngine.cs"
click node_jni "https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/java/org/doubango/ultimateAlpr/Sdk/ultimateAlprSdkJNI.java"
click node_androidjni "https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/java/android/org/doubango/ultimateAlpr/Sdk/ultimateAlprSdkJNI.java"
click node_pinvoke "https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/csharp/ultimateAlprSdkPINVOKE.cs"
click node_pywrap "https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/python/ultimateALPR-SDK-API-PUBLIC-SWIG_python.cxx"
click node_enginecore "https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/c%2B%2B/ultimateALPR-SDK-API-PUBLIC.h"
click node_images "https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/c%2B%2B/ultimateALPR-SDK-API-PUBLIC.h"
click node_result "https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/c%2B%2B/ultimateALPR-SDK-API-PUBLIC.h"
click node_callback "https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/c%2B%2B/ultimateALPR-SDK-API-PUBLIC.h"
click node_models "https://github.com/doubangotelecom/ultimatealpr-sdk/tree/master/assets/models"
click node_openvino "https://github.com/doubangotelecom/ultimatealpr-sdk/tree/master/assets/models.openvino"
click node_tensorrt "https://github.com/doubangotelecom/ultimatealpr-sdk/tree/master/assets/models.tensorrt"
click node_amlogic "https://github.com/doubangotelecom/ultimatealpr-sdk/tree/master/assets/models.amlogic_npu"
click node_accelerators "https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/NPU.md"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cpp,node_java,node_androidjava,node_python,node_csharp,node_jni,node_androidjni,node_pinvoke,node_pywrap toneBlue
class node_enginecore,node_images,node_result,node_callback toneAmber
class node_lpr,node_ienv,node_lpci,node_vehicle,node_tracking toneMint
class node_models,node_openvino,node_tensorrt,node_amlogic,node_accelerators toneRose
class node_caller toneIndigo
```

## Components

### SDK interfaces

- [C++ API](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/c%2B%2B/ultimateALPR-SDK-API-PUBLIC.h): `c++/ultimateALPR-SDK-API-PUBLIC.h`
- [Java API](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/java/org/doubango/ultimateAlpr/Sdk/UltAlprSdkEngine.java): `java/org/doubango/ultimateAlpr/Sdk/UltAlprSdkEngine.java`
- [Android Java API](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/java/android/org/doubango/ultimateAlpr/Sdk/UltAlprSdkEngine.java): `java/android/org/doubango/ultimateAlpr/Sdk/UltAlprSdkEngine.java`
- [Python API](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/python/ultimateAlprSdk.py): `python/ultimateAlprSdk.py`
- [C# API](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/csharp/UltAlprSdkEngine.cs): `csharp/UltAlprSdkEngine.cs`
- [Java JNI bridge](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/java/org/doubango/ultimateAlpr/Sdk/ultimateAlprSdkJNI.java): `java/org/doubango/ultimateAlpr/Sdk/ultimateAlprSdkJNI.java`
- [Android JNI bridge](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/java/android/org/doubango/ultimateAlpr/Sdk/ultimateAlprSdkJNI.java): `java/android/org/doubango/ultimateAlpr/Sdk/ultimateAlprSdkJNI.java`
- [C# interop](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/csharp/ultimateAlprSdkPINVOKE.cs): `csharp/ultimateAlprSdkPINVOKE.cs`
- [Python native wrapper](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/python/ultimateALPR-SDK-API-PUBLIC-SWIG_python.cxx): `python/ultimateALPR-SDK-API-PUBLIC-SWIG_python.cxx`

### Recognition engine

- [ALPR engine](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/c%2B%2B/ultimateALPR-SDK-API-PUBLIC.h): `c++/ultimateALPR-SDK-API-PUBLIC.h`
- [Image input](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/c%2B%2B/ultimateALPR-SDK-API-PUBLIC.h): `c++/ultimateALPR-SDK-API-PUBLIC.h`
- [Structured results](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/c%2B%2B/ultimateALPR-SDK-API-PUBLIC.h): `c++/ultimateALPR-SDK-API-PUBLIC.h`
- [Async callback](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/c%2B%2B/ultimateALPR-SDK-API-PUBLIC.h): `c++/ultimateALPR-SDK-API-PUBLIC.h`

### Vision capabilities

- **Plate recognition**
- **Night enhancement**
- **Plate country ID**
- **Vehicle analytics**
- **Direction and speed**

### Models and acceleration

- [Model assets](https://github.com/doubangotelecom/ultimatealpr-sdk/tree/master/assets/models): `assets/models`
- [OpenVINO models](https://github.com/doubangotelecom/ultimatealpr-sdk/tree/master/assets/models.openvino): `assets/models.openvino`
- [TensorRT models](https://github.com/doubangotelecom/ultimatealpr-sdk/tree/master/assets/models.tensorrt): `assets/models.tensorrt`
- [Amlogic NPU models](https://github.com/doubangotelecom/ultimatealpr-sdk/tree/master/assets/models.amlogic_npu): `assets/models.amlogic_npu`
- [Compute backends](https://github.com/doubangotelecom/ultimatealpr-sdk/blob/master/NPU.md): `NPU.md`

### Other components

- **SDK caller**

## Connections

- SDK caller → C++ API: calls API
- SDK caller → Java API: calls API
- SDK caller → Android Java API: calls API
- SDK caller → Python API: calls API
- SDK caller → C# API: calls API
- Java API → Java JNI bridge: invokes native
- Android Java API → Android JNI bridge: invokes native
- C# API → C# interop: invokes native
- Python API → Python native wrapper: invokes native
- C++ API → ALPR engine: calls engine
- Java JNI bridge → ALPR engine: bridges calls
- Android JNI bridge → ALPR engine: bridges calls
- C# interop → ALPR engine: bridges calls
- Python native wrapper → ALPR engine: bridges calls
- ALPR engine → Image input: accepts frames
- Image input → ALPR engine: processes image
- ALPR engine → Plate recognition: performs
- ALPR engine → Night enhancement: supports
- ALPR engine → Plate country ID: supports
- ALPR engine → Vehicle analytics: supports
- ALPR engine → Direction and speed: supports
- ALPR engine → Structured results: returns result
- ALPR engine → Async callback: dispatches result
- ALPR engine → Model assets: loads models
- OpenVINO models → Compute backends: targets
- TensorRT models → Compute backends: targets
- Amlogic NPU models → Compute backends: targets
