Dekoder Kodu AZTEC 2D z Dowodu Rejestracyjnego

Biblioteka programistyczna pozwalająca na dekodowanie danych z dowodów rejestracyjnych pojazdów samochodowych zapisanych w formie kodu AZTEC 2D.

Dekoder AZTec

Oferujemy Państwu bibliotekę programistyczną i usługę Web API pozwalającą zdekodować dane z kodu AZTEC 2D zapisanego w dowodach rejestracyjnych pojazdów samochodowych.

Nasza biblioteka dekoduje dane z dowodu rejestracyjnego, zapisane w postaci kodu obrazkowego tzw. kod aztec. Dekodowane są wszystkie wymienione pola w dowodzie rejestracyjnym pojazdu.

Dowód rejestracyjny pojazdu samochodowego z zakodowanymi danymi w formie kodu AZTEC 2D

Gdzie znajdzie zastosowanie Dekoder AZTec?

Dekoder AZTec może przydać się firmom i instytucjom, które pragną zautomatyzować proces ręcznego wprowadzania danych z dowodów rejestracyjnych i zastąpić go poprzez wykorzystanie naszej biblioteki programistycznej, która potrafi rozpoznać i rozkodować kody AZTEC 2D bezpośrednio ze zdjęć dowodów rejestracyjnych lub zeskanowanych już kodów (wykorzystując skaner QR / AZTEC 2D).

Firma ubezpieczeniowa
Firmy ubezpieczeniowe
Bank
Banki
Instytucja rządowa
Instytucje rządowe
Producent oprogramowania
Producenci oprogramowania
Warsztat samochodowy
Warsztaty samochodowe
Twoja firma
Twoja firma?

Dostępne edycje programistyczne

Dekoder AZTec dostępny jest w trzech edycjach. Każda wersja posiada inne cechy i inne możliwości dekodowania. Wersja oparta o Web API jako jedyna posiada możliwość rozpoznawania i dekodowania danych bezpośrednio ze zdjęć i obrazków. Pozostałe wersje do dekodowania wymagają już odczytanego kodu w postaci tekstu (np. ze skanera).

Cechy Web API Źródła Binaria
Kod obrazkowy QR Dekodowanie danych ze zdjęć i obrazków (PNG/JPG)
Skaner Dekodowanie danych z zeskanowanych kodów (tekst)
Kod źródłowy Kody źródłowe algorytmu dekodującego
Kod Przykłady użycia
Format JSON Format wyjściowy JSON
Format XML Format wyjściowy XML
Świat Wymagane połączenie z Internetem
Zarządzanie licencją Licencja wieczysta
Aktualizacja Darmowe aktualizacje
Wsparcie techniczne Darmowe wsparcie techniczne

Wersja Web API

Jest to najbardziej zaawansowana edycja Dekodera AZTec, ponieważ umożliwia precyzyjne rozpoznawanie i dekodowanie kodów AZTEC 2D bezpośrednio ze zdjęć oraz obrazków zapisanych w formatach PNG lub JPG.

Algorytm rozpoznawania obrazu należy do naszej firmy, jest to innowacyjne rozwiązanie rozwijane od podstaw przez prawie rok czasu.

Rozumiemy potrzeby naszych klientów oraz problemy wynikające z rozpoznawania rzeczywistych zdjęć kodów AZTEC 2D znajdujących się w dowodach rejestracyjnych, które nie zawsze są idealnie wykonane, czy to ze względu na rodzaj aparatu, kąta wykonania zdjęcia, refleksów czy słabej rozdzielczości.

Przy tworzeniu naszego rozwiązania wzięliśmy wszystkie te czynniki pod uwagę i w efekcie nasz algorytm radzi sobie znakomicie z rozpoznawaniem kodów AZTEC 2D ze zdjęć z wszelkiego rodzaju zniekształceniami, uszkodzeniami i niedoskonałościami. Znacznie przewyższa pod względem funkcjonowania dostępne na rynku biblioteki rozpoznawania kodów AZTEC 2D takie jak np. ZXing.

Dekodowanie kodu AZTEC 2D do formatu JSON

Instalacja

Dla ułatwienia szybkiego wdrożenia, paczki instalacyjne Dekodera AZTec zostały wgrane na repozytoria dla kilku popularnych języków programowania, a dodatkowo ich kody źródłowe zostały opublikowane na GitHubie:

Repozytorium Język Instalacja Paczka Źródła
Centralne Repozytorium Maven Java Dodaj wpis do pliku pom.xml
<dependency>
  <groupId>com.pelock</groupId>
  <artifactId>AZTecDecoder</artifactId>
  <version>1.0.0</version>
</dependency>
Maven GitHub
Repozytorium npm JavaScript dla Node.js
npm install aztec-decoder
npm GitHub
Repozytorium NuGet C#, VB.NET
PM> Install-Package AZTecDecoder
NuGet GitHub
Repozytorium Packagist dla Composer PHP

Dodaj do sekcji require w twoim pliku composer.json

"pelock/aztec-decoder": "*"
Packagist GitHub
Repozytorium PyPI dla Python Python
pip install aztecdecoder
PyPI GitHub

Przykłady użycia Web API

Interfejs Web API bazuje na prostym zapytaniu POST do naszego serwera, który dane wyjściowe zwraca w formie ciągu tekstowego JSON. Wykorzystanie dekodera jest możliwe z dowolnego języka programowania, który zapewnia funkcje komunikacji sieciowej i dekodowania danych formatu JSON. Przykład użycia dla kilku popularnych języków programowania:

//
// załącz klasę dekodera (dostępna jako zależność systemu Maven)
//
import com.pelock.AZTecDecoder;
import org.json.JSONObject;

public static void main(String[] args)
{
	// utwórz klasę dekodera (używamy naszego klucza licencyjnego do inicjalizacji)
	AZTecDecoder myAZTecDecoder = new AZTecDecoder("ABCD-ABCD-ABCD-ABCD");

	//
	// 1. Dekoduj dane bezpośrednio z pliku graficznego, zwróć wynik jako tablicę
	//
	JSONObject DecodedArray = myAZTecDecoder.DecodeImageFromFile("C:\\zdjecie-dowodu.jpg");

	// czy udało się zdekodować dane?
	if (DecodedArray != null && (Boolean)DecodedArray.get("Status") == true)
	{
		// wyświetl rozkodowane dane (są zapisane jako tablica asocjacyjna)
		System.out.println(DecodedArray.toString(4));
	}

	//
	// 2. Dekoduj dane bezpośrednio z pliku graficznego i zwróć wynik jako string JSON
	//
	JSONObject DecodedJSON = myAZTecDecoder.DecodeImageFromFile("C:\\zdjecie-kodu-aztec-2d.png");

	if (DecodedJSON != null)
	{
		System.out.println(DecodedJSON.toString(4));
	}

	//
	// 3. Dekoduj dane z odczytanego już ciągu znaków (np. wykorzystując skaner ręczny)
	//
	// zakodowane dane z dowodu rejestracyjnego
	String szValue = "ggMAANtYAAJD...";

	JSONObject DecodedText = myAZTecDecoder.DecodeText(szValue);

	if (DecodedText != null)
	{
		System.out.println(DecodedText.toString(4));
	}

	//
	// 4. Dekoduj dane z odczytanego już ciągu znaków zapisanego w pliku (np. wykorzystując skaner ręczny)
	//
	JSONObject DecodedTextFile = myAZTecDecoder.DecodeTextFromFile("C:\\odczytany-ciag-znakow-aztec-2d.txt");

	if (DecodedTextFile != null)
	{
		System.out.println(DecodedTextFile.toString(4));
	}
}
//
// załącz moduł dekodera dla Node.js (instalacja komendą "npm install aztec-decoder")
//
var AZTecDecoder = require('aztec-decoder');

// inicjalizuj dekoder (używamy naszego klucza licencyjnego do inicjalizacji)
AZTecDecoder.SetApiKey("ABCD-ABCD-ABCD-ABCD");

//
// 1. Dekoduj dane bezpośrednio z pliku graficznego, zwróć wynik jako rozkodowaną tablicę elementów JSON
//
AZTecDecoder.DecodeImageFromFile("C:\\zdjecie-dowodu.jpg", function(DecodedArray) {

    // czy udało się zdekodować dane?
    if (DecodedArray !== null && DecodedArray["Status"] === true)
    {
        // wyświetl rozkodowane dane (są zapisane jako rozkodowana tablica elementów JSON)
        console.log(JSON.stringify(DecodedArray, null, "\t"));
    }
});

//
// 2. Dekoduj dane bezpośrednio z pliku graficznego i zwróć wynik jako rozkodowaną tablicę elementów JSON
//
AZTecDecoder.DecodeImageFromFile("C:\\zdjecie-kodu-aztec-2d.png", function(DecodedJSON) {

    if (DecodedJSON !== null)
    {
        console.log(JSON.stringify(DecodedJSON, null, "\t"));
    }
});

//
// 3. Dekoduj dane z odczytanego już ciągu znaków (np. wykorzystując skaner ręczny)
//
// zakodowane dane z dowodu rejestracyjnego
var szValue = "ggMAANtYAAJD...";

AZTecDecoder.DecodeText(szValue, function(DecodedText) {

    if (DecodedText !== null)
    {
        console.log(JSON.stringify(DecodedText, null, "\t"));
    }
});

//
// 4. Dekoduj dane z odczytanego już ciągu znaków zapisanego w pliku (np. wykorzystując skaner ręczny)
//
AZTecDecoder.DecodeTextFromFile("C:\\odczytany-ciag-znakow-aztec-2d.txt", function(DecodedTextFile) {

    if (DecodedTextFile !== null)
    {
        console.log(JSON.stringify(DecodedTextFile, null, "\t"));
    }
});
//
// załącz klasę dekodera (instalacja komendą 'php composer.phar require --prefer-dist pelock/aztec-decoder "*"')
//
include_once "AZTecDecoder.php";

//
// utwórz klasę dekodera (używamy naszego klucza licencyjnego do inicjalizacji)
//
$myAZTecDecoder = new PELock\AZTecDecoder("ABCD-ABCD-ABCD-ABCD");

//
// 1. Dekoduj dane bezpośrednio z pliku graficznego, zwróć wynik jako tablicę
//
$DecodedArray = $myAZTecDecoder->DecodeImageFromFile("zdjecie-dowodu.jpg");

// czy udało się zdekodować dane?
if ($DecodedArray !== false && $DecodedArray["Status"] === true)
{
	// wyświetl rozkodowane dane (są zapisane jako tablica asocjacyjna)
	var_dump($DecodedArray);
}

//
// 2. Dekoduj dane bezpośrednio z pliku graficznego i zwróć wynik jako string JSON
//
$DecodedJSON = $myAZTecDecoder->DecodeImageFromFile("zdjecie-kodu-aztec-2d.png", false);

if ($DecodedJSON !== false)
{
	echo $DecodedJSON;
}

//
// 3. Dekoduj dane z odczytanego już ciągu znaków (np. wykorzystując skaner ręczny)
//
$DecodedText = $myAZTecDecoder->DecodeText("ggMAANtYAAJD...");

if ($DecodedText !== false)
{
	var_dump($DecodedText);
}

//
// 4. Dekoduj dane z odczytanego już ciągu znaków zapisanego w pliku (np. wykorzystując skaner ręczny)
//
$DecodedTextFile = $myAZTecDecoder->DecodeTextFromFile('/sciezka/odczytany-ciag-znakow-aztec-2d.txt');

if ($DecodedTextFile !== false)
{
	var_dump($DecodedTextFile);
}
//
// załącz klasę dekodera (instalacja jako pakiet NuGet "PM> Install-Package AZTecDecoder")
//
using PELock;

private void AZTecDecoderTest()
{
    //
    // utwórz klasę dekodera (używamy naszego klucza licencyjnego do inicjalizacji)
    //
    var myAZTecDecoder = new AZTecDecoder("ABCD-ABCD-ABCD-ABCD");

    //
    // 1. Dekoduj dane bezpośrednio z pliku graficznego, zwróć wynik jako rozkodowaną tablicę elementów JSON
    //
    var decodedArray = myAZTecDecoder.DecodeImageFromFile(@"C:\sciezka\zdjecie-dowodu.jpg");

    // czy udało się zdekodować dane?
    if (decodedArray != null && decodedArray["Status"] == true)
    {
	// wyświetl rozkodowane dane (są zapisane jako tablica elementów JsonValue)
	textOutput.Text = decodedArray.ToString();
    }

    //
    // 2. Dekoduj dane bezpośrednio z pliku graficznego i zwróć wynik jako rozkodowaną tablicę elementów JSON
    //
    var decodedFromImage = myAZTecDecoder.DecodeImageFromFile(@"C:\sciezka\zdjecie-kodu-aztec-2d.png");

    if (decodedFromImage != null)
    {
	MessageBox.Show(decodedFromImage.ToString());
    }

    //
    // 3. Dekoduj dane z odczytanego już ciągu znaków (np. wykorzystując skaner ręczny)
    //
    // zakodowane dane z dowodu rejestracyjnego
    var szValue = "ggMAANtYAAJD...";

    var decodedText = myAZTecDecoder.DecodeText(szValue);

    if (decodedText != null)
    {
	MessageBox.Show(decodedFromImage.ToString());
    }

    //
    // 4. Dekoduj dane z odczytanego już ciągu znaków zapisanego w pliku (np. wykorzystując skaner ręczny)
    //
    var DecodedTextFile = myAZTecDecoder.DecodeTextFromFile(@"C:\sciezka\odczytany-ciag-znakow-aztec-2d.txt");

    if (DecodedTextFile != null)
    {
	MessageBox.Show(DecodedTextFile.ToString());
    }
}
#
#  załącz moduł dekodera (instalacja komendą "pip install aztecdecoder")
#
from pelock import aztecdecoder
from pprint import pprint

# utwórz klasę dekodera (używamy naszego klucza licencyjnego do inicjalizacji)
aztec_decoder = aztecdecoder.AZTecDecoder("ABCD-ABCD-ABCD-ABCD")

#
# 1. Dekoduj dane bezpośrednio z pliku graficznego, zwróć wynik jako rozkodowaną tablicę elementów JSON
#
decoded_array = aztec_decoder.decode_image_from_file("C:\\sciezka\\zdjecie-dowodu.jpg")

# czy udało się zdekodować dane?
if decoded_array and "Status" in decoded_array:

    # wyświetl rozkodowane dane (są zapisane jako rozkodowana tablica elementów JSON)
    pprint(decoded_array)

#
# 2. Dekoduj dane bezpośrednio z pliku graficznego i zwróć wynik jako rozkodowaną tablicę elementów JSON
#
decoded_json = aztec_decoder.decode_image_from_file("C:\\sciezka\\zdjecie-kodu-aztec-2d.png")

if decoded_json:

    pprint(decoded_json)

#
# 3. Dekoduj dane z odczytanego już ciągu znaków (np. wykorzystując skaner ręczny)
#
# zakodowane dane z dowodu rejestracyjnego
value = "ggMAANtYAAJD...";

decoded_text = aztec_decoder.decode_text(value)

if decoded_text:

    pprint(decoded_text)

#
# 4. Dekoduj dane z odczytanego już ciągu znaków zapisanego w pliku (np. wykorzystując skaner ręczny)
#
decoded_text_file = aztec_decoder.decode_text_from_file('C:\\sciezka\\odczytany-ciag-znakow-aztec-2d.txt')

if decoded_text_file:

    pprint(decoded_text_file)

Wersja z kodami źródłowymi oraz binarna

Biblioteka dostępna jest w wersji binarnej dla systemu Windows (DLL w wersji 32 i 64 bitowej) i może być wykorzystywana w dowolnych językach programowania obsługujących pliki DLL.

Oprócz tego przygotowane zostały natywne wersje z kodami źródłowymi w wybranych językach programowania. Warto nadmienić, że natywne implementacje nie są zależne od żadnych zewnętrznych bibliotek i referencji.

Biblioteka posiada tylko jedną funkcję dekodującą, na wejściu pobierany jest zeskanowany ciąg ASCII kodu AZTEC 2D, na wyjściu zwracany jest ciąg UNICODE pliku XML zawierającego wszystkie rozkodowane dane (w tym osobowe, czego inne biblioteki nie zwracają). Wersja w PHP potrafi także zwrócić dane w formacie JSON.

Szeroka oferta opcji programistycznych pozwala na wykorzystanie biblioteki na wielu platformach sprzętowych i systemach operacyjnych, takich jak Windows, Linux, OSX, iOS, Android.

Język programowania Binaria Źródła
Języka programowania Java Java
Języki programowania Delphi i Pascal Delphi / Pascal
Języki programowania Visual Basic i VBA Visual Basic / VBA
Języki programowania C i C++ C / C++
Język programowania C# Sharp C#
Język programowania PHP PHP
Język programowania Python Python
Język programowania Ruby Ruby

Przykłady użycia

Biblioteka deszyfrująca w wersji binarnej oraz z kodami źródłowymi może być dostosowana do dowolnego języka programowania, kilka przykładów użycia:

public static void main(String[] args)
{
	// utwórz klasę dekodera
	com.AZTecDecoder.AZTecDecoder myAZTecDecoder = new com.AZTecDecoder.AZTecDecoder();

	// zakodowane dane z dowodu rejestracyjnego
	String szValue = "gQMAANtYA...";

	// dekoduj dane
	String szDecoded = myAZTecDecoder.DecodeValue(szValue);

	// wyświetl rozkodowane dane w formie zrzutu XML
	System.out.print(szDecoded);
}
// deklaracja funkcji dekodującej dla Delphi
function DecodeValue(Value: WideString): WideString; stdcall; external 'AZTecDecoder.dll';

procedure TFormMain.ButtonDekodujClick(Sender: TObject);
var
  DecodedXml: WideString;
begin

  // zdekoduj dane (pobierz z kontrolki Memo)
  Decoded := DecodeValue(MemoZakodowane.Text);

  // jeśli błąd dekodowania wyjdź
  if Decoded = '' then Exit;

  // zapisz wynikowy ciąg XML do pliku
  WStrToFile('XmlUnicode.xml', Decoded);

end;
' deklaracja funkcji dekodującej dla Visual Basic / VBA
Private Declare Function DecodeValueVBA Lib "AZTecDecoder.dll" (ByVal Value As String, ByRef Output As String) As Integer

Sub AztecDecoder_Test()

  Dim Value As String
  Dim Xml As String
  Dim Result As Integer

  ' Zakodowane dane z dowodu rejestracyjnego
  Value = "gQMAANtYA..."

  ' Dekoduj dane
  Result = DecodeValueVBA(Value, Xml)

  ' Wyświetl zdekodowane dane w formacie XML
  MsgBox (Xml)

End Sub
#include "AZTecDecoder.h"

int main(void)
{
	/* zakodowane dane z dowodu rejestracyjnego */
	const wchar_t wszValue[] = L"gQMAANtYA...";

	/* wskaźnik na bufor, gdzie znajdą się zdekodowane dane */
	wchar_t *wszDecoded = NULL;

	/* dekoduj dane z postaci tekstowej do wyjściowego XML-a */
	wszDecoded = DecodeValue(wszValue);

	/* jeśli dekodowanie się udało, wyświetl rozkodowane */
	/* informacje w formie zrzutu XML */
	if (wszDecoded != NULL)
	{
		wprintf(wszDecoded);

		/* zwolnij bufor pamięci z wyjściowymi danymi */
		free(wszDecoded);
	}
	else
	{
		wprintf(L"Nie udało się rozkodować danych!");
	}

	return 0;
}
#define UNICODE
#include <stdlib.h>
#include <stdio.h>
#include <tchar.h>
#include <conio.h>

#include "AZTecDecoder.h"

int DekoderTest()
{
	HMODULE hAZTecDecoder = NULL;
	DECODEVALUECPPSIZE pDecodeValueCPPSize = NULL;
	DECODEVALUECPP pDecodeValueCPP = NULL;

	unsigned int dwBufferSize = 0;
	unsigned int dwResult = 0;

	wchar_t wszValue[] = _T("gQMAANtYA...");
	wchar_t *wszXml = NULL;

	// załaduj bibliotekę dekodera
	hAZTecDecoder = LoadLibrary(_T("AZTecDecoder.dll"));

	pDecodeValueCPPSize = (DECODEVALUECPPSIZE)GetProcAddress(hAZTecDecoder, "DecodeValueCPPSize");
	pDecodeValueCPP = (DECODEVALUECPP)GetProcAddress(hAZTecDecoder, "DecodeValueCPP");

	// pobierz rozmiar bufora na wyjściowy XML
	dwBufferSize = pDecodeValueCPPSize(wszValue);

	if (dwBufferSize == 0) return 1;

	// alokuj pamięć na bufor wyjściowy XML
	wszXml = malloc(sizeof(wchar_t) * dwBufferSize);

	// dekoduj dane
	dwResult = pDecodeValueCPP(wszValue, wszXml);

	// jeśli dekodowanie się udało, wyświetl XML
	if (dwResult == 0)
	{
		wprintf(wszXml);

		// zwolnij pamięć
		free(wszXml);

		return 0;
	}

	// zwolnij pamięć
	free(wszXml);

	return 1;
}
[DllImportAttribute("AZTecDecoder.dll", EntryPoint = "DecodeValueCPPSize", CallingConvention = CallingConvention.StdCall)]
public static extern int DecodeValueCPPSize(byte[] wszValue);

[DllImportAttribute("AZTecDecoder.dll", EntryPoint = "DecodeValueCPP", CallingConvention = CallingConvention.StdCall)]
public static extern int DecodeValueCPP(byte[] wszValue, byte[] wszOutputXml);

private void buttonDecode_Click(object sender, EventArgs e)
{
	// zakodowane dane w formacie ASCII
	string szValue = textInput.Text;

	textOutput.Text = "";

	UnicodeEncoding UNICODE = new UnicodeEncoding();

	// skonwertuj dane wejsciowe do formatu UNICODE
	byte[] wszValue = UNICODE.GetBytes(szValue);

	// pobierz rozmiar bufora na wyjściowy XML
	int dwBufferSize = DecodeValueCPPSize(wszValue);

	// jesli zwrocony rozmiar jest pusty, dane wejsciowe
	// mogly byc w nieprawidlowym formacie
	if (dwBufferSize == 0)
	{
		MessageBox.Show("Nieprawidłowy format danych!");
		return;
	}

	// alokuj pamięć na bufor wyjściowy XML
	byte[] lpcDecodedData = new byte[dwBufferSize];

	// dekoduj dane
	int dwResult = DecodeValueCPP(wszValue, lpcDecodedData);

	// jeśli dekodowanie się udało, wyświetl rozkodowane
	// informacje w formie zrzutu XML
	if (dwResult == 0)
	{
		string szXml = UNICODE.GetString(lpcDecodedData);

		textOutput.Text = szXml;
	}
	else
	{
		MessageBox.Show("Nie udało się rozkodować danych!");
		return;
	}
}
<?php
	include_once "AZTecDecoder.php";

	// utwórz klasę dekodera
	$myAZTecDecoder = new AZTecDecoder();

	// zakodowane dane z dowodu rejestracyjnego
	$szValue = "gQMAANtYA...";

	// czy rozkodowane dane mają być zwrócone w formie XML lub JSON
	$bJson = false;

	// dekoduj dane
	$szDecoded = $myAZTecDecoder->DecodeValue($szValue, $bJson);

	// jeśli dane zostały zdekodowane do formatu XML
	// wyślij do przeglądarki odpowiedni nagłówek XML
	if ($bJson == false)
	{
		header("Content-type: text/xml; charset=utf-8");
	}

	// wyświetl rozkodowane dane
	echo $szDecoded;
?>
import AZTecDecoder

# utwórz klasę dekodera
myAZTecDecoder = AZTecDecoder.AZTecDecoder()

# zakodowane dane z dowodu rejestracyjnego
szValue = "gQMAANtYA..."

# dekoduj dane
szDecoded = myAZTecDecoder.DecodeValue(szValue)

# jeśli dekodowanie się udało, wyświetl rozkodowane
# informacje w formie zrzutu XML
if szDecoded:
	print szDecoded
else:
	print "Nie udało się rozkodować danych!"
load 'AZTecDecoder.rb'

# utwórz klasę dekodera
aztec_decoder = AZTecDecoder.new

# zakodowane dane z dowodu rejestracyjnego
value = "gQMAANtYA..."

# dekoduj dane
decoded = aztec_decoder.DecodeValue(value)

# jeśli dekodowanie się udało, wyświetl rozkodowane
# informacje w formie zrzutu XML
if decoded.to_s != ''
  puts decoded
else
  puts "Nie udalo sie rozkodowac danych!"
end

Za dodatkową opłatą jesteśmy w stanie wykonać dowolną implementację dla innych języków programowania.

Brak zależności od innych bibliotek

Dekoder AZTec w wersji z kodami źródłowymi i wersji binarnej nie wymaga jakichkolwiek innych bibliotek czy zależności do poprawnego funkcjonowania. Nie jest również wymagana jakakolwiek instalacja czy to samej biblioteki czy dodatkowych komponentów.

Cyfrowy podpis

Nasza biblioteka posiada cyfrowy podpis kodu (dotyczy systemu Windows), co oznacza, że pochodzi ze zweryfikowanego źródła, nasza firma musiała przejść przez proces weryfikacyjny, przedstawiając dokumenty świadczące o legalności prowadzonych działań.

Pytania?

Jeśli są Państwo zainteresowani lub mają jakiekolwiek pytania odnośnie Dekodera AZTec, techniczne, prawne, coś nie jest do końca jasne, proszę o kontakt. Z miłą chęcią odpowiem na każde pytanie.