Oferujemy Państwu bibliotekę programistyczną oraz usługę sieciową 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.
Dla kogo to jest?
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).
- dla firm ubezpieczeniowych
- dla banków
- dla warsztatów samochodowych
- dla instytucji państwowych
- dla producentów oprogramowania
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).
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.
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 | ||
---|---|---|---|---|---|---|
Maven | Java | Dodaj wpis do pliku pom.xml
|
Maven | GitHub | ||
npm | JavaScript dla Node.js |
|
npm | GitHub | ||
NuGet | C#, VB.NET |
|
NuGet | GitHub | ||
Packagist | PHP |
Dodaj do sekcji
|
Packagist | GitHub | ||
PyPI | Python |
|
PyPI | GitHub |
Przykłady użycia Web API
- Java
- JavaScript
- C#
- PHP
- Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
// // 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)); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
// // 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")); } }); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
// // 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()); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
// // 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); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# # 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 | |
---|---|---|---|
Java | |||
Delphi / Pascal | |||
Visual Basic / VBA | |||
C / C++ | |||
C# | |||
PHP | |||
Python | |||
Ruby |
Jeśli interesują Państwa natywne porty dla innych języków programowania – prosimy o kontakt.
Przykłady użycia
Biblioteka deszyfrująca może być dostosowana do dowolnego języka programowania, kilka przykładów użycia:
- Java
- Delphi / Pascal
- Visual Basic / VBA
- C
- C / C++
- C#
- PHP
- Python
- Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// 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; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
' 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 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#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; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#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; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
[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; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?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; ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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!" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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.
Dlaczego warto wybrać nasze rozwiązanie?
- natywne porty w wielu językach programowania
- prostota użycia, brak zewnętrznych zależności programistycznych
- możliwość zakupu kodu źródłowego biblioteki
- dekodowanie danych osobowych, danych właściciela pojazdu
- konkurencyjna cena i wieczysta licencja (NIE trzeba odnawiać co roku!)
- wsparcie techniczne
- możliwość implementacji dla dowolnego języka programowania
- możliwość implementacji dla różnych systemów (Windows, Linux, Android)
- wystawiamy faktury
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ń.
Demo
Jeśli chcieliby Państwo sprawdzić poprawność danych, prosimy przesłać na adres kontaktowy zrzut danych w formie ASCII, a prześlemy zdekodowane informacje w formie XML.
Na naszej stronie firmowej udostępniliśmy także interfejs online pozwalający przetestować dekodowanie danych bezpośrednio z obrazków i z już odczytanych kodów.
https://www.pelock.com/pl/produkty/dekoder-aztec/online
Kontakt
Jeśli są Państwo zainteresowani zakupem licencji lub mają Państwo jakieś pytania – prosimy o kontakt.