Kontrola znakowania
Kamera umieszczona jest za drukarką lub laserowym markerem. System engiAI odczytuje wydrukowany tekst bezpośrednio z strumienia wideo: łączy fragmenty napisu, porównuje je z wzorem lub listą wzorców, zapisuje każdy z nich w bazie i przesyła wynik przez sieć – do przeglądarki, w formacie JSON oraz do kontrolera przez TCP.
Jak to wygląda w praktyce
Przycisk TEKST znajduje się w górnej części głównego okna engiAI, obok przycisków WYJŚCIE, KAMERY, TRIGGER, OGÓLNE MODELE i LICZNIK. Otwiera on okno „TEKST – rozpoznawanie oznak”. Okno można trzymać otwarte na wideo: obszar na kadrze jest widoczny, o ile okno jest otwarte lub rozpoznawanie jest włączone.
Na górze okna znajdują się trzy elementy, wspólne dla wszystkich zakładek:
- Rozpoznawanie tekstu – to główna opcja. Dopóki ta opcja nie jest zaznaczona, rozpoznawanie nie działa i nie obciąża programu.
- ▭ Oznaczanie obszaru – kliknij i przeciągnij ramkę na wideo za pomocą dowolnej przycisku myszy. Podczas gdy okno jest otwarte, ramkę można przeciągnąć również za pomocą prawego przycisku myszy bez konieczności kliknięcia. ✖ Usuwanie obszaru – usuwa zaznaczony obszar.
- Stan po prawej stronie: Oczekiwanie na oznaczenie, Zapisanie oznaczenia, Pauzowanie lub Działanie w oparciu o sygnał wejściowy. Pod spodem znajduje się informacja o tym, co jest używane (GPU CUDA lub procesor), ile klatek na sekundę jest odczytywane oraz ile milisekund zajmuje jedna klatka.
Zakładka „oznakowanie” – wynik i porównanie z wzorem
To jest zakładka robocza dla operatora. Na górze znajduje się opcja "Porównaj wszystko w obszarze z wzorcem":.
Jak program analizuje tekst na linii produkcyjnej:
- Nagranie rozpoczyna się od początku zdania. Jeśli nagrywanie zostało uruchomione w środku tekstu, program ignoruje jego koniec – czeka na następne rozpoczęcie.
- Każdy kadr jest umieszczany w odpowiednim miejscu, a każda litera otrzymuje "głosy" z wszystkich kadrów, w których jest widoczna. Ostatecznie wybierany jest wariant, który występuje najczęściej. Losowe błędy w pojedynczym kadrze (np. litera obcięta przez krawędź, odblask) są korygowane przez sąsiednie kadry – im więcej kadrów, tym większa szansa na poprawne odczytanie i tym dokładniejszy wynik.
- Wynik jest generowany, gdy cały fragment tekstu przechodzi przez obszar przetwarzania, lub gdy przez dłuższy czas nie pojawiają się nowe znaki (system przestaje działać, obszar jest pusty). Po wygenerowaniu wyniku, program oczekuje na rozpoczęcie kolejnego fragmentu tekstu; fragmenty tekstu, które następują po sobie bezpośrednio, są zapisywane oddzielnie.
- Program sam określa kierunek ruchu lub pobiera go z ustawienia „Skąd pochodzi tekst”.
Podczas gdy rozpoznawanie odbywa się, po prawej stronie drzwi można zobaczyć liczba rozpoznanych znaków: 40 z 64, a w sekcji „Rozpoznane” – procent dopasowania i uzyskany tekst. Po zakończeniu rozpoznawania wyświetla się 73% – ZNAJDZIONO lub NIE ZNAJDZIONO. Ten sam wynik jest wyświetlany w dużym formacie na ekranie wideo.
Bez zaznaczenia „Porównywać wszystko w obszarze z wzorem” działa sekwencyjne dopisywanie: każda fraza jest wpisywana od początku do końca zgodnie z zasadami zakładki „Początek i koniec”, a w razie potrzeby porównywana jest z listą wzorów.
Pod listą znajdują się opcje sterowania:
- Wszystkie oznaczenia / Tylko najnowsze – ile powinno być wyświetlanych tutaj i przekazywane do przeglądarki.
- Data, godzina i etykiety / Tylko etykiety – jakie dane należy przekazać do przeglądarki i zapisać w formacie JSON.
- ⚖ Porównywać – porównywać każdą przygotowaną etykietę z ustalonym wzorem.
- 💾 Zapisz jako JSON, 📂 Załaduj JSON (załadowane dane stają się wzorcem), Wyczyść listę – usuwa wiersze z ekranu i z przeglądarki, ale pozostawia je w bazie.
Zakładka „wzorzec” – lista prawidłowych znakowań
Wzorzec jest potrzebny, gdy na linii pojawia się kilka różnych znakowań (różne sekcje, partie, klienci), a każde z nich należy znaleźć w liście.
- 📂 Załadować plik JSON – lista pobrana z pliku: nasz plik JSON, tablica ciągów, obiekty z polem "text" lub po prostu tekst w każdej linii, przeznaczony do oznaczania. Duplikaty są usuwane.
- ✓ Zaznaczyć wszystkie, ☐ Usuń wszystkie, zaznaczenie w każdej linii – z jakim wzorcem porównywać. ✖ Usuń wzorzec – usunięcie listy.
- Współczesność dla porównania, % – 100 oznacza, że znaki są identyczne (bez uwzględniania spacji i wielkości liter). Wartości poniżej 100 oznaczają dopuszczalne błędy podczas wpisywania i odczytywania.
- Sprawdzać zgodnie ze wzorem od … % – jeśli odczyt przypomina podany wzorzec, a jego wartość jest nie mniejsza niż określona, to informacja jest zapisywana w formie wzoru (oryginalny odczyt pozostaje w dzienniku).
Zakładka „Początek i koniec” – gdzie kończy się dane znakowanie
Te zasady działają w trybie sekwencyjnego rozpoznawania (bez wzorca), w którym program samodzielnie decyduje, gdzie rozpoczyna się i kończy rozpoznawanie:
- Początek tekstu – od momentu, w którym w danym obszarze odczytany zostanie ten tekst (np. UTCAB). Puste – od dowolnego tekstu. Jeśli tekst rozpoczynający się w kółko, drugie pojawienie się tego tekstu kończy oznaczanie. Włączenie tekstu rozpoczynającego w oznaczanie – pozostawienie go w wyniku.
- Przerwa po zakończeniu, milisekund – nie należy zapisywać niczego po zakończeniu oznaczania.
- Tekst zakończenia – oznaczenie kończy się, gdy zostanie odczytany ten tekst (np. BY lub 2026).
- Czas pustej przestrzeni, ms – jeśli w danej strefie nie ma żadnego tekstu, oznaczenie zostanie zakończone i zapisane.
- Najdłuższy czas, z – dla ciągłego pisania bez przerw: każda taka sekunda oznacza oddzielny znak. 0 – bez ograniczeń.
Przykład: początek „UTCAB”, koniec „BY” – zostanie zapisane „UTCAB … BY”, a następnie program czeka na kolejne „UTCAB”. Porównanie bez uwzględniania wielkości liter, podobne litery w języku polskim i łacińskim są uznawane za takie same.
Karta „Rozpoznawanie”: obszar, kąt, modele
- Obszar na obrazie, piksele – Współrzędne X i Y, szerokość i wysokość obszaru na oryginalnym obrazie: precyzyjne ustawienie ramki, bez użycia myszy.
- Obrót tekstu w obszarze – jak obrócić obszar, aby tekst był pionowy? Tekst jest wyświetlany od góry do dołu – „90° w lewo”, od dołu do góry – „90° w prawo”. Obrót samego wideo na ekranie można wykonać w zakładce „Obrót wideo”.
- Zwiększenie – mały tekst jest lepiej czytelny, jeśli obszar zostanie powiększony; funkcja „Auto” automatycznie dobiera odpowiednią wartość.
- Najniższa pewność, % – linie, które zostały odczytane z najmniejszą pewnością (np. z powodu rozmycia lub nieostrych krawędzi liter), są odrzucane.
- Minimalna długość etykiet, znaków – krótsze wyniki nie są zapisywane.
- Przykładowy scenariusz: brak nowych znaków, MS – podanie wyniku – ile czasu należy czekać, jeśli nie otrzymamy nowych znaków (pasek zatrzymany, obszar pusty, tekst nieczytelny)? Po upływie określonego czasu, wynik jest generowany na podstawie odczytanych danych, a rozpoczyna się nowy proces analizy.
- Skąd pochodzi tekst – z jakiej strony obszaru pojawia się nowy tekst. "Auto" określa to na podstawie klatek, a klejenie fragmentów jest bardziej niezawodne.
- Wykorzystanie karty graficznej (GPU) – w przypadku systemów NVIDIA z technologią CUDA, odczyt danych odbywa się znacznie szybciej.
- Litery i znaki – jakie mogą występować w etykietach: słowa w języku angielskim i rosyjskim, tylko słowa w języku angielskim lub dowolne znaki; cyfry i spacja – zawsze, znaki (kropek, tyldę, ukośnicę, numery itp.) oznaczane są zaznaczeniami. Model wybiera znak tylko spośród dopuszczalnych – zbędne znaki nie pojawiają się, podobne są rozpoznawane dokładniej.
- Wybieranie słów z słownika – rozpoznane słowo (od 3 liter, nie liczba ani kod), podobne do słowa z słownika w wymaganym procencie, jest zamieniane na prawidłowe. Słownik zawiera własne słowa (po jednym na wiersz) oraz, w opcjonalnym polu, słowa z wzorzec.
Na tej zakładce znajdują się opcje wyboru modeli: «Wyszukiwanie ciągów» (wersja 3 – szybka, wersja 5 – bardziej precyzyjna, przeznaczona dla karty graficznej) oraz «Czytanie tekstu» (alfabet cyrylicy, łaciński i cyfry; tylko alfabet łaciński i cyfry; alfabet języków europejskich; precyzyjna wersja serwerowa; lub dwie wersje jednocześnie – obie czytają, wybierana jest bardziej wiarygodna wersja). Brakująca wersja pobierana jest przy pomocy przycisku «⬇ Pobierz». Przycisk «⚖ Porównaj modele w aktualnej strefie» przetwarza ostatni fragment strefy na wszystkie dostępne opcje – od razu widać, która wersja najlepiej odczytuje konkretne znaki oraz ile czasu to zajmuje.
Karta „Baza danych”: wszystkie rozpoznawane znaki są przechowywane
Każdy rozpoznany znak jest zapisywany w bazie programu wraz z datą, czasem, kamerą, tekstem i wynikiem porównania – niezależnie od tego, co wyświetla się na ekranie.
- 📤 Eksport bazy danych (JSON) — Wyeksportuj wszystkie oznaczenia do pliku, który można wykorzystać do raportu lub przekazania do systemu księgowego.
- 📥 Pobierz bazę (oznakowanie → wzorzec) – z wyeksportowanej bazy pobierane są tylko teksty oznakowania, które stają się wzorcem. Dzięki temu sprawdzony przykład można wykorzystać jako wzorzec dla kolejnych.
- 🗑 Oczyścić bazę – usunąć wszystkie wpisy.
Zakładka „Sieć” – wynik w przeglądarce i w formacie JSON
Zaznacz Wysyłanie danych przez sieć – aplikacja engiAI uruchomi serwer HTTP (domyślny port 8096). Każde urządzenie w sieci, takie jak komputer lub tablet, otwiera stronę z możliwością zaznaczania, porównywania i tworzenia wzorców w standardowym przeglądarce; nie trzeba instalować żadnych dodatkowych programów. Przycisk Kopiuj i Otwórz w przeglądarce pobiera adres z listy.
| Adres | Co przekazuje |
|---|---|
| / | strona: znak, porównanie, wzorzec, JSON |
| /api/marks | znak – wszystkie lub ostatni, z datą lub bez (w zależności od ustawień) |
| /api/marks?show=last&format=text | ostatni znak w prostym formacie tekstowym |
| /api/last | ostatni znak |
| /api/state | aktualny stan i tekst w danym obszarze |
| /api/refs | szablon; POST /api/refs – przesłać szablon (w formacie JSON) |
| /api/export | cała baza znaków |
Podczas pierwszego uruchomienia, firewall Windows może zapytać o pozwolenie na dostęp dla engiAI – przyznaj dostęp do wybranych sieci.
Zakładka „Wejście” – obraz z sygnału kontrolera
Gdy produkt pojawia się przed kamerą na sygnał (czujnik, PLC, robot), zaznacz Rozpoznawanie na podstawie sygnału wejściowego (TCP). engiAI uruchamia serwer TCP; każdy sygnał generuje jeden obraz obszaru: tekst jest rozpoznawany, porównywany i zapisywany w bazie danych, podobnie jak w trybie ciągłym.
- Sieć – na jakim adapterze sieciowym oczekiwać sygnału (dla wszystkich sieci – na dowolnym); można wpisać adres IP ręcznie. Port – domyślnie 8097.
- Sygnał – co traktować jako komendę. Domyślnie 1: jako tekst (np. „1”, „1\r\n”) lub bajt 0x01.
- Odpowiadanie na zapytanie klienta za pomocą rozpoznanego tekstu – w odpowiedzi otrzymuje się wiersz z oznaczeniem, a przy porównywaniu – dodatkowo OK lub NG oddzielone tabulacją; Brak tekstu – tekst nie został znaleziony, Błąd … – brak obszaru lub kadru.
- 📸 Aktualne zdjęcie (test) – to samo co sygnał, ale wysyłane za pomocą przycisku. Można sprawdzić bez kontrolera za pomocą programu TCP-UDP (klienta): podaj adres, port, wartość „1” i kliknij „Wyślij”.
Funkcje wejścia i ciągłego rozpoznawania działają jednocześnie: jeśli zaznaczona jest opcja „Rozpoznawanie tekstu”, program nadal monitoruje pasek, a w przypadku każdego sygnału dodatkowo wykonuje zrzut ekranu.
