
Gdzie-moja-paka
Przeciągasz etykietę kurierską na okno, wpisujesz numer zamówienia — reszta dzieje się sama.
- PROJECT
- CODE-039
- STOS
- PYTHON · OCR
- PRZEWOŹNICY
- INPOST · POCZTEX · INNI
- ROZPOZNAWANIE
- OFFLINE
- WEJŚCIE
- DRAG & DROP PDF
- STATUS
- UKOŃCZONY
- DATA
- 24 sierpnia 2026
Aplikacja desktopowa dla magazynu i obsługi zamówień. Program sam rozpoznaje przewoźnika, odczytuje numer listu przewozowego, pobiera aktualny status i pilnuje przesyłki aż do doręczenia. Rozpoznawanie działa offline — internet potrzebny jest wyłącznie do pobrania statusu.
Paczka przesuwa się po osi statusów, a program odpytuje przewoźnika w tle — pierścienie rozchodzące się od punktów kontrolnych to kolejne zapytania do API. Statusy z różnych przewoźników są sprowadzane do jednego słownika, dlatego na osi widać cztery etapy, a nie kilkanaście różnych nazw. Program przestaje pytać dopiero po doręczeniu.
PROBLEM
Obsługa zamówień sprowadza się często do pytania „gdzie jest paczka klienta numer 154236”. Odpowiedź wymaga znalezienia etykiety, odczytania numeru listu, wejścia na stronę przewoźnika i wklejenia numeru — przy kilkudziesięciu zapytaniach dziennie to godziny pracy.
Do tego każdy przewoźnik ma inny format etykiety i inny wzorzec numeru, a część etykiet to skany bez warstwy tekstowej.
POMYSŁ
Zredukować całą operację do jednego gestu: przeciągnięcia pliku na okno. Program ma sam rozpoznać, czyja to etykieta, wyciągnąć numer, powiązać go z zamówieniem i od tej chwili pilnować przesyłki, odpytując przewoźnika cyklicznie aż do doręczenia.
PROJEKT
Rozpoznawanie jest dwustopniowe. Najpierw próba ekstrakcji warstwy tekstowej z PDF — szybka i dokładna. Dopiero gdy jej nie ma, uruchamia się OCR. Ta kolejność ma znaczenie kosztowe: większość etykiet z systemów nadawczych ma tekst, więc OCR uruchamia się rzadko.
Przewoźnik rozpoznawany jest po wzorcu numeru i charakterystycznych elementach układu etykiety. Numer przechodzi walidację wzorca, zanim trafi do zapytania — błędny odczyt lepiej odrzucić, niż odpytać przewoźnika o nieistniejącą przesyłkę.
Osobno obsłużone są przesyłki nadane przez Allegro Delivery, które mają własną specyfikę numeracji.
Statusy z różnych API są sprowadzane do wspólnego słownika. Każdy przewoźnik opisuje ten sam etap innymi słowami, a operatora interesuje jedno: czy paczka jedzie, czeka, czy została doręczona. Mapowanie odbywa się w warstwie adaptera, więc dodanie nowego przewoźnika nie zmienia niczego w interfejsie.
REALIZACJA
Program przechowuje przesyłki lokalnie i odpytuje API przewoźników cyklicznie, pokazując, kiedy ostatnio sprawdzał. Interfejs jest celowo minimalny: numer zamówienia, kurier, numer przesyłki, status, data ostatniej zmiany i czas ostatniego sprawdzenia.
W repozytorium leży katalog labels_probki z realnymi etykietami różnych przewoźników — to on stanowi zestaw testowy rozpoznawania. Dodanie nowego przewoźnika jest opisane w README jako osobna procedura.
Program jest budowany do jednego pliku EXE i ma dwa zestawy zależności — podstawowy oraz osobny dla OCR. Rozdzielenie ich było świadome: instalacja OCR jest ciężka, a część stanowisk pracuje wyłącznie na etykietach z warstwą tekstową i nie potrzebuje jej wcale.
EFEKT
Odpowiedź na pytanie o przesyłkę zajmuje sekundy zamiast minut, a status aktualizuje się bez udziału człowieka. Dane osobowe z etykiet są traktowane osobno — README ma dedykowaną sekcję o ich ochronie, bo etykieta kurierska to imię, nazwisko i adres.
WNIOSKI
Największym zaskoczeniem była jakość etykiet. Zakładałem, że OCR będzie rzadkością — w praktyce część systemów nadawczych generuje PDF-y, w których numer jest obrazkiem. Dwustopniowe rozpoznawanie nie było nadmiarową ostrożnością, tylko koniecznością.


