aztecdecoder 1.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: aztecdecoder
|
|
3
|
+
Version: 1.1.0
|
|
4
|
+
Summary: Biblioteka programistyczna pozwalająca na dekodowanie danych z dowodów rejestracyjnych pojazdów samochodowych zapisanych w formie kodu AZTEC 2D.
|
|
5
|
+
Author-email: Bartosz Wójcik <support@pelock.com>
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
Project-URL: Homepage, https://www.pelock.com/pl/produkty/dekoder-aztec
|
|
8
|
+
Project-URL: Source, https://github.com/PELock/Dekoder-AZTEC-2D-Python
|
|
9
|
+
Project-URL: Bug Tracker, https://github.com/PELock/Dekoder-AZTEC-2D-Python/issues
|
|
10
|
+
Keywords: aztec2d,aztec-decoder,aztec,vin,vehicle
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
13
|
+
Classifier: Natural Language :: Polish
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Requires-Python: >=3.8
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
Requires-Dist: requests>=2.28.0
|
|
24
|
+
|
|
25
|
+
# Dekoder Kodu AZTEC 2D z Dowodu Rejestracyjnego dla Python
|
|
26
|
+
|
|
27
|
+
[](https://pypi.org/project/aztecdecoder/)
|
|
28
|
+
[](https://pypi.org/project/aztecdecoder/)
|
|
29
|
+
[](https://opensource.org/licenses/Apache-2.0)
|
|
30
|
+
|
|
31
|
+
Oferujemy Państwu usługę Web API pozwalającą zdekodować dane z kodu AZTEC 2D zapisanego w dowodach rejestracyjnych pojazdów samochodowych.
|
|
32
|
+
|
|
33
|
+

|
|
34
|
+
|
|
35
|
+
Nasza biblioteka dekoduje dane z dowodu rejestracyjnego, zapisane w postaci kodu obrazkowego tzw. kod aztec. Dekodowane są wszystkie wymienione pola w dowodzie rejestracyjnym pojazdu.
|
|
36
|
+
|
|
37
|
+
https://www.pelock.com/pl/produkty/dekoder-aztec
|
|
38
|
+
|
|
39
|
+
## Gdzie znajdzie zastosowanie Dekoder AZTec?
|
|
40
|
+
|
|
41
|
+
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 rozkodowac kody AZTEC 2D bezpośrednio ze zdjęć dowodów rejestracyjnych lub zeskanowanych już kodów (wykorzystując skaner QR / AZTEC 2D).
|
|
42
|
+
|
|
43
|
+
## Dostępne edycje programistyczne
|
|
44
|
+
|
|
45
|
+
Dekoder AZTec dostepny 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).
|
|
46
|
+
|
|
47
|
+

|
|
48
|
+
|
|
49
|
+
### Wersja Web API
|
|
50
|
+
|
|
51
|
+
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.
|
|
52
|
+
|
|
53
|
+
Algorytm rozpoznawania obrazu należy do naszej firmy, jest to innowacyjne rozwiązanie rozwijane od podstaw przez prawie rok czasu.
|
|
54
|
+
|
|
55
|
+
Rozumiemy potrzeby naszych klientów oraz problemy wynikające z rozpoznawnia 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.
|
|
56
|
+
|
|
57
|
+
Przy tworzeniu naszego rozwiązania wzieliś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 rozpoznawnia kodów AZTEC 2D takie jak np. ZXing.
|
|
58
|
+
|
|
59
|
+
### Gotowe paczki dla różnych języków programowania
|
|
60
|
+
|
|
61
|
+
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:
|
|
62
|
+
|
|
63
|
+
| Repozytorium | Język | Instalacja | Paczka | GitHub |
|
|
64
|
+
| ------------ | ----- | ---------- | ------ | ------ |
|
|
65
|
+
|  | Java | Dodaj wpis do pliku `pom.xml`<br />`<dependency>`<br />` <groupId>com.pelock</groupId>`<br />` <artifactId>AZTecDecoder</artifactId>`<br />` <version>1.0.0</version>`<br />`</dependency>` | [Maven](https://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.pelock%22) | [Źródła](https://github.com/PELock/Dekoder-AZTEC-2D-Java)
|
|
66
|
+
|  | JavaScript, TypeScript | `npm install aztec-decoder` | [NPM](https://www.npmjs.com/package/aztec-decoder) | [Źródła](https://github.com/PELock/Dekoder-AZTEC-2D-JavaScript)
|
|
67
|
+
|  | C#, VB.NET, .NET | `PM> Install-Package AZTecDecoder` | [NuGet](https://www.nuget.org/packages/AZTecDecoder/) | [Źródła](https://github.com/PELock/Dekoder-AZTEC-2D-CSharp)
|
|
68
|
+
|  | PHP | Dodaj do sekcji `require` w twoim pliku `composer.json` linijkę `"pelock/aztec-decoder": "*"` | [Packagist](https://packagist.org/packages/pelock/aztec-decoder) | [Źródła](https://github.com/PELock/Dekoder-AZTEC-2D-PHP)
|
|
69
|
+
|  | Python | `pip install aztecdecoder==1.1.0` | [PyPi](https://pypi.org/project/aztecdecoder/) | [Źródła](https://github.com/PELock/Dekoder-AZTEC-2D-Python)
|
|
70
|
+
|  | Rust | `cargo add aztec-decoder` | [Crates.io](https://crates.io/crates/aztec-decoder) | [Źródła](https://github.com/PELock/Dekoder-AZTEC-2D-Rust)
|
|
71
|
+
|
|
72
|
+
#### Instalacja dla Pythona i PyPi
|
|
73
|
+
|
|
74
|
+
Preferowany sposób instalacji biblioteki poprzez [pip](https://pypi.python.org/pypi/pip).
|
|
75
|
+
|
|
76
|
+
Uruchom:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
pip install aztecdecoder
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Paczka dostępna na https://pypi.python.org/pypi/aztecdecoder/
|
|
83
|
+
|
|
84
|
+
#### Użycie dekodera AZTEC 2D w Python v3
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
#
|
|
88
|
+
# załącz moduł dekodera
|
|
89
|
+
#
|
|
90
|
+
from pelock import aztecdecoder
|
|
91
|
+
from pprint import pprint
|
|
92
|
+
|
|
93
|
+
#
|
|
94
|
+
# utwórz klasę dekodera (używamy naszego klucza licencyjnego do inicjalizacji)
|
|
95
|
+
#
|
|
96
|
+
aztec_decoder = aztecdecoder.AZTecDecoder("ABCD-ABCD-ABCD-ABCD")
|
|
97
|
+
|
|
98
|
+
#
|
|
99
|
+
# 1. Dekoduj dane bezpośrednio z pliku graficznego, zwróć wynik jako rozkodowaną tablicę elementów JSON
|
|
100
|
+
#
|
|
101
|
+
decoded_array = aztec_decoder.decode_image_from_file("C:\\sciezka\\zdjecie-dowodu.jpg")
|
|
102
|
+
|
|
103
|
+
# czy udało się zdekodować dane?
|
|
104
|
+
if decoded_array and "Status" in decoded_array:
|
|
105
|
+
|
|
106
|
+
# wyświetl rozkodowane dane (są zapisane jako rozkodowana tablica elementów JSON)
|
|
107
|
+
pprint(decoded_array)
|
|
108
|
+
|
|
109
|
+
#
|
|
110
|
+
# 2. Dekoduj dane bezpośrednio z pliku graficznego i zwróć wynik jako rozkodowaną tablicę elementów JSON
|
|
111
|
+
#
|
|
112
|
+
decoded_json = aztec_decoder.decode_image_from_file("C:\\sciezka\\zdjecie-kodu-aztec-2d.png")
|
|
113
|
+
|
|
114
|
+
if decoded_json:
|
|
115
|
+
|
|
116
|
+
pprint(decoded_json)
|
|
117
|
+
|
|
118
|
+
#
|
|
119
|
+
# 3. Dekoduj dane z odczytanego już ciągu znaków (np. wykorzystując skaner ręczny)
|
|
120
|
+
#
|
|
121
|
+
# zakodowane dane z dowodu rejestracyjnego
|
|
122
|
+
value = "ggMAANtYAAJD...";
|
|
123
|
+
|
|
124
|
+
decoded_text = aztec_decoder.decode_text(value)
|
|
125
|
+
|
|
126
|
+
if decoded_text:
|
|
127
|
+
|
|
128
|
+
pprint(decoded_text)
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
Bartosz Wójcik | [PELock](https://www.pelock.com) | [Twitter/X](https://x.com/PELock) | [Dekoder AZTec](https://www.dekoderaztec.pl)
|
|
134
|
+
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
pelock/__init__.py,sha256=fRvRZqqrvhX9C4nHggjc4uoiyL7x1E16BIEj6cgKdkY,167
|
|
2
|
+
pelock/aztecdecoder.py,sha256=wu9zbUi-q3-X1xw-Bdrf7ro_ki4DUcmVKfxPY7uk-vg,4040
|
|
3
|
+
aztecdecoder-1.1.0.dist-info/METADATA,sha256=vCZzFIupwZ7dM1hgG-1aTvjfprzMSPloHE8DJbvs4hk,7996
|
|
4
|
+
aztecdecoder-1.1.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
5
|
+
aztecdecoder-1.1.0.dist-info/top_level.txt,sha256=t59zeOfBWexYbGMTprjXWY6YSjyfeJrHAzerFXW0Eyo,7
|
|
6
|
+
aztecdecoder-1.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pelock
|
pelock/__init__.py
ADDED
pelock/aztecdecoder.py
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
|
|
3
|
+
#
|
|
4
|
+
# Dekoder kodow AZTEC 2D z dowodow rejestracyjnych interfejs Web API
|
|
5
|
+
#
|
|
6
|
+
# Wersja : AZTecDecoder v1.1.0
|
|
7
|
+
# Jezyk : Python v3
|
|
8
|
+
# Zaleznosci : requests (https://pypi.python.org/pypi/requests/)
|
|
9
|
+
# Autor : Bartosz Wójcik (support@pelock.com)
|
|
10
|
+
# Strona domowa : https://www.dekoderaztec.pl | https://www.pelock.com
|
|
11
|
+
#
|
|
12
|
+
|
|
13
|
+
import json
|
|
14
|
+
from typing import Any, Dict, Optional
|
|
15
|
+
|
|
16
|
+
# wymagany pakiet requests - instalacja komenda "pip install requests"
|
|
17
|
+
import requests
|
|
18
|
+
|
|
19
|
+
class AZTecDecoder(object):
|
|
20
|
+
|
|
21
|
+
#
|
|
22
|
+
# @var string domyslna koncowka WebApi
|
|
23
|
+
#
|
|
24
|
+
API_URL = "https://www.pelock.com/api/aztec-decoder/v1"
|
|
25
|
+
|
|
26
|
+
#
|
|
27
|
+
# @var string klucz WebApi do uslugi AZTecDecoder
|
|
28
|
+
#
|
|
29
|
+
_api_key = ""
|
|
30
|
+
|
|
31
|
+
def __init__(self, api_key: str, timeout: float = 120.0) -> None:
|
|
32
|
+
"""Inicjalizacja klasy AZTecDecoder
|
|
33
|
+
|
|
34
|
+
:param api_key: Klucz do uslugi WebApi
|
|
35
|
+
:param timeout: Limit czasu zapytania HTTP w sekundach (domyslnie 120)
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
self._api_key = api_key
|
|
39
|
+
self._timeout = timeout
|
|
40
|
+
|
|
41
|
+
def decode_text(self, text: str) -> Optional[Any]:
|
|
42
|
+
"""Dekodowanie zaszyfrowanej wartosci tekstowej do
|
|
43
|
+
wyjsciowej tablicy w formacie JSON.
|
|
44
|
+
|
|
45
|
+
:param text: Odczytana wartosc z kodem AZTEC2D w formie ASCII
|
|
46
|
+
:return Rozkodowana tablica elementow JSON lub None jesli blad
|
|
47
|
+
:rtype object
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
# parametry
|
|
51
|
+
params = {"command": "decode-text", "text": text}
|
|
52
|
+
|
|
53
|
+
return self.post_request(params)
|
|
54
|
+
|
|
55
|
+
def decode_text_from_file(self, text_file_path: str) -> Optional[Any]:
|
|
56
|
+
"""Dekodowanie zaszyfrowanej wartosci tekstowej
|
|
57
|
+
ze wskaznego pliku do wyjsciowej tablicy z
|
|
58
|
+
formatu JSON.
|
|
59
|
+
|
|
60
|
+
:param text_file_path: Sciezka do pliku z odczytana wartoscia kodu AZTEC2D
|
|
61
|
+
:return Rozkodowana tablica elementow JSON lub None jesli blad
|
|
62
|
+
:rtype object
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
with open(text_file_path, 'r') as f:
|
|
66
|
+
|
|
67
|
+
text = f.read()
|
|
68
|
+
|
|
69
|
+
if text:
|
|
70
|
+
|
|
71
|
+
return self.decode_text(text)
|
|
72
|
+
|
|
73
|
+
return None
|
|
74
|
+
|
|
75
|
+
def decode_image_from_file(self, image_file_path: str) -> Optional[Any]:
|
|
76
|
+
"""Dekodowanie zaszyfrowanej wartosci zakodowanej
|
|
77
|
+
w obrazku PNG lub JPG/JPEG do wyjsciowej tablicy
|
|
78
|
+
w formacie JSON.
|
|
79
|
+
|
|
80
|
+
:param image_file_path: Sciezka do obrazka z kodem AZTEC2D
|
|
81
|
+
:return Rozkodowana tablica elementow JSON lub None jesli blad
|
|
82
|
+
:rtype object
|
|
83
|
+
"""
|
|
84
|
+
# parametry
|
|
85
|
+
params = {"command": "decode-image", "image": image_file_path}
|
|
86
|
+
|
|
87
|
+
return self.post_request(params)
|
|
88
|
+
|
|
89
|
+
def post_request(self, params_array: Dict[str, Any]) -> Optional[Any]:
|
|
90
|
+
"""Wysyla zapytanie POST do serwera WebApi
|
|
91
|
+
|
|
92
|
+
:param params_array: Tablica z parametrami dla zapytania POST
|
|
93
|
+
:return: Rozkodowana tablica elementow JSON lub None jesli blad
|
|
94
|
+
:rtype: object
|
|
95
|
+
"""
|
|
96
|
+
|
|
97
|
+
# czy jest ustawiony klucz Web API?
|
|
98
|
+
if not self._api_key:
|
|
99
|
+
|
|
100
|
+
return None
|
|
101
|
+
|
|
102
|
+
# do parametrow dodaj klucz WebAPI
|
|
103
|
+
params_array["key"] = self._api_key
|
|
104
|
+
|
|
105
|
+
# ustaw poprawnie element z plikiem
|
|
106
|
+
if "image" in params_array:
|
|
107
|
+
|
|
108
|
+
image_path = params_array.pop("image", None)
|
|
109
|
+
with open(image_path, "rb") as image_file:
|
|
110
|
+
files = {"image": image_file}
|
|
111
|
+
response = requests.post(
|
|
112
|
+
self.API_URL,
|
|
113
|
+
files=files,
|
|
114
|
+
data=params_array,
|
|
115
|
+
timeout=self._timeout,
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
else:
|
|
119
|
+
|
|
120
|
+
response = requests.post(
|
|
121
|
+
self.API_URL, data=params_array, timeout=self._timeout
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
if response and response.ok:
|
|
125
|
+
|
|
126
|
+
try:
|
|
127
|
+
|
|
128
|
+
return json.loads(response.text)
|
|
129
|
+
|
|
130
|
+
except json.JSONDecodeError:
|
|
131
|
+
|
|
132
|
+
return None
|
|
133
|
+
|
|
134
|
+
else:
|
|
135
|
+
|
|
136
|
+
return None
|