Kontrola znakowania

engiAI · przycisk TEXT
Rozpoznawanie i weryfikacja znaków na kablu, rurze, taśmie i opakowaniu

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.

1. Obszar – ramka na wideo, w której wyświetlany jest tekst.
2. Przykładowa fraza, która powinna zostać wydrukowana
3. Analiza Sieć neuronowa analizuje każdy kadr.
4. Podsumowanie „Rozpoznano” lub „Nie rozpoznano” + baza danych
~10 klatek na sekundę
Odczyt obszaru na karcie graficznej (CUDA)
RU + EN
Cyrillica, łacinka, cyfry, znaki
0 treningów
Model PaddleOCR jest gotowy od razu
HTTP + TCP
Przeglądarka, JSON, sygnał kontrolera

Jak to wygląda w praktyce

engiAI — TEXT: okno obok wideo
Po lewej stronie – obraz z kamery, niebieska ramka – obszar rozpoznawania. Po prawej stronie – okno TŁUM: wycinek obszaru, zielone ramki wokół rozpoznanych słów i linia „Obecnie w obszarze”.

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.
Wskazówki. Zapewnij, aby obszar widoczny znaku był jak najbardziej rozległy, obejmując zarówno napis, jak i obszar rozciągający się wzdłuż kierunku ruchu. Im więcej znaków znajduje się w tym obszarze, tym bardziej stabilne będą kadry. Kamera powinna być ustawiona po umieszczeniu znaków, a tekst powinien być wyraźny i bez rozmycia.

Zakładka „oznakowanie” – wynik i porównanie z wzorem

engiAI — TEXT: fraza wzorcowa
Zakładka „oznakowanie”: wzór zdania, miniaturka obszaru, co znajduje się obecnie w obszarze oraz co jest zapisywane, poniżej – lista gotowych oznakowań. Zielone linie – „Rozpoznano”, czerwone – „Nie rozpoznano”, w nawiasach – procent dopasowania do wzoru.

To jest zakładka robocza dla operatora. Na górze znajduje się opcja "Porównaj wszystko w obszarze z wzorcem":.

engiAI — TEXT: Oznaczenia
Pole „Przykładowy tekst” – to fraza, która ma zostać wydrukowana; „Procent dopuszczalnej różnicy” – od jakiego procentu należy uznać, że znakowanie jest poprawne. Po prawej stronie znajduje się stan rzeczywisty.
1
Zaznacz opcję "Porównaj wszystko w obszarze z wzorcem" i wpisz w pole "Wzorzec" całą frazę, na przykład "Энергокомплект UTCAB-PV1-F 6 4 ТУ BY 300528652.036-2014 EAC 2026 Беларусь". Wielkość liter, spacje oraz podobne litery cyrylickie i łacińskie (np. T i T, У i Y, Е i E) nie mają znaczenia.
2
Ustaw Wartość progową dopasowania, %. 100 oznacza idealne dopasowanie; 65–80 oznacza wystarczający margines na błędy druku i odczytu.
3
Włącz funkcję Rozpoznawania tekstu. Długi tekst nie mieści się w jednym obszarze – program zbiera go, odczytując kolejne klatki, w miarę jak kamera przesuwa się przez ten obszar.

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ń

engiAI — TEXT: Wzorce
Zakładka „wzorzec”: załadowane znakowania, opcje „porównaj z tym”, progu dopuszczalnej różnicy oraz korekta na podstawie wzoru.

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

engiAI — TEXT: Początek i koniec
Karty „Początek i koniec”: tekst początku i końca, pauza po końcu, czas pustej przestrzeni oraz największa długość nagrania.

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

engiAI — TEXT: Rozpoznawanie
Karta „Rozpoznawanie”: dokładne współrzędne obszaru, kąt i powiększenie, progi, oczekiwanie nowych wzorców, kierunek pasa, karta graficzna, dopuszczalne litery i znaki, słownik.
  • 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.

Nie trzeba trenować modelu. Rozpoznawanie działa dzięki PaddleOCR i od razu po instalacji rozpoznaje zarówno łacinę, cyrylicę, jak i cyfry. Konfiguracja ogranicza się do określenia obszaru, kąta widzenia oraz listy dopuszczalnych znaków.

Karta „Baza danych”: wszystkie rozpoznawane znaki są przechowywane

engiAI — TEXT: Baza danych
Karta „Baza danych”: ile rozpoznawanych znaków zostało zebrane, eksport do formatu JSON, import eksportu jako wzorzec i czyszczenie.

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

engiAI — TEXT: Sieć
Zakładka „Sieć”: wbudowany serwer HTTP, adresy do połączenia przez wszystkie porty sieciowe komputera oraz lista adresów API.

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.

AdresCo przekazuje
/strona: znak, porównanie, wzorzec, JSON
/api/marksznak – wszystkie lub ostatni, z datą lub bez (w zależności od ustawień)
/api/marks?show=last&format=textostatni znak w prostym formacie tekstowym
/api/lastostatni znak
/api/stateaktualny stan i tekst w danym obszarze
/api/refsszablon; POST /api/refs – przesłać szablon (w formacie JSON)
/api/exportcał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

engiAI — TEXT: Wejście
Karta „Wejście”: Serwer TCP do odbierania sygnałów od PLC lub czujnika – sieć, port, wartość sygnału, odpowiedź dla klienta oraz funkcja „Zrób zrzut ekranu”.

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.

Szybkie ustawienie w ciągu 5 minut.

1
Naciśnij Tekst, a następnie Wybierz obszar i przeciągnij ramkę wzdłuż napisu na wideo.
2
Na karcie „Rozpoznawanie” wybierz opcję „Prost”, aby tekst w miniaturze był prosty, oraz powiększenie ×2–×4 dla małego tekstu i kierunek ruchu paska.
3
Na zakładce "oznakowanie" zaznacz opcję "Porównaj wszystko w obszarze z wzorcem", wprowadź frazę i próg.
4
Włącz funkcję rozpoznawania tekstu. Każda rozpoznana fraza będzie wyświetlana na liście jako zielona ("rozpoznano") lub czerwona ("nie rozpoznano").
5
W razie potrzeby włącz „Sieć” dla przeglądarki i JSON oraz „Wejście” dla sygnału od kontrolera.