Ispezione di marcatura
La fotocamera è posizionata dopo la stampante o il laser marker. Il software engiAI legge il testo stampato direttamente dal flusso video: assembla la scritta, che passa attraverso l'area a tratti, la confronta con un modello o un elenco di riferimento, salva ogni marcatura in un database e trasmette il risultato tramite rete – al browser, in formato JSON e al controller tramite TCP.
Come appare nell'utilizzo
Il pulsante "TESTO" si trova nella prima riga della finestra principale "engiAI", accanto ai pulsanti "ESCI", "TELECAMERA", "TRIGGER", "MODELLI GENERALI" e "CALCOLO". Apre la finestra "TESTO – riconoscimento marcatura". La finestra può essere mantenuta aperta sopra il video: l'area nell'immagine è visibile finché la finestra è aperta o il riconoscimento è attivo.
Nella parte superiore della finestra ci sono tre elementi comuni a tutte le schede:
- Riconoscimento del testo – è l'interruttore principale. Finché questa opzione non è selezionata, il riconoscimento del testo non funziona e non sovraccarica il programma.
- ▭ Definire l'area – cliccate e trascinate il bordo dell'area sul video con il pulsante sinistro del mouse. Una volta che l'area è aperta, è possibile trascinare anche il bordo con il pulsante destro del mouse, senza premere alcun tasto. ✖ Eliminare l'area – elimina l'area.
- Stato a destra: IN ATTESA, REGISTRO, PAUSA o IN BASE AL SEGNALE DI ENTRATA. Sotto, si indica (GPU CUDA o processore), il numero di fotogrammi al secondo letti e il tempo in millisecondi impiegato per ogni fotogramma.
Scheda "marcatura": risultato e confronto con l'esempio
Questa è la scheda operativa per l'operatore. In alto, la funzione "Confronta tutto nell'area con un campione":
Come avviene l'analisi della frase sulla linea di produzione:
- La trascrizione inizia dall'inizio della frase. Se la trascrizione è stata avviata a metà del testo, la parte rimanente viene saltata: il programma attende l'inizio della frase successiva.
- Ogni fotogramma viene posizionato correttamente all'interno del campione, e ogni lettera riceve "voti" da tutti i fotogrammi in cui è visibile. Il risultato è la variante che viene letta più frequentemente. Gli errori casuali di un singolo fotogramma (ad esempio, una lettera tagliata ai bordi o un riflesso) vengono corretti dai fotogrammi adiacenti: grazie al sistema di "voti" più ampio, il risultato finale è più preciso.
- Il risultato viene generato non appena la frase completa attraversa l'area di scansione, oppure se non vengono rilevati nuovi caratteri per un periodo di tempo specificato nella scheda "Riconoscimento" (in questo caso, il sistema si ferma e l'area è vuota). Dopo aver generato il risultato, il programma attende l'inizio della frase successiva; le frasi che si susseguono immediatamente vengono registrate separatamente.
- Il programma determina autonomamente la direzione del movimento o ne utilizza quella definita nella impostazione "Da dove proviene il testo".
Mentre il riconoscimento è in corso, a destra della porta è visibile l'indicazione: 40 su 64 caratteri, nella riga "Registrato" si visualizzano il tasso di corrispondenza e il testo estratto. Al termine, si visualizza 73% - RICONOSCIUTO o NON RICONOSCIUTO. Lo stesso risultato viene visualizzato in grande sulla sovrapposizione video.
Se non è selezionata l'opzione "Confrontare tutto nell'area dell'esempio", avviene una concatenazione sequenziale: ogni marcatura viene scritta dall'inizio alla fine, seguendo le regole della scheda "Inizio e fine", e, se necessario, viene confrontata con l'elenco di riferimento.
Sotto l'elenco, si trovano i controlli:
- Tutte le marcature / Solo l'ultima – indica quante marcature visualizzare e inviare al browser.
- Data, ora e marca / Solo marca – quali informazioni devono essere inviate al browser e salvate in formato JSON.
- ⚖ Confrontare — confrontare ogni etichetta predefinita con le etichette di riferimento.
- 💾 Salvare come JSON, 📂 Caricare JSON (i dati caricati diventano riferimento), Pulire l'elenco – elimina le righe dallo schermo e dal browser, ma le mantiene nel database.
La scheda "riferimento" contiene l'elenco delle marcature corrette.
La scheda "riferimento" è utile quando sulla linea di produzione sono presenti diverse marcature (sezioni, lotti, clienti diversi), e ogni marcatura letta deve essere trovata nell'elenco.
- 📂 Scaricare file JSON – elenco estratto da un file: il nostro file JSON, un array di stringhe, oggetti con il campo "text" o semplicemente testo per riga, senza ripetizioni.
- ✓ Selezionare tutto, ☐ Deselezionare tutto, spunta su ogni riga – con quale riferimento confrontare. ✖ Rimuovere riferimento – eliminare l'elenco.
- Percentuale di corrispondenza, % – 100 indica una corrispondenza esatta (senza considerare spazi e maiuscole). Valori inferiori consentono errori di battitura e di lettura.
- Correggere in base allo standard del … % – se il testo letto corrisponde al riferimento indicato, la correzione viene registrata utilizzando il testo standard (il testo originale rimane nel registro).
La scheda "Inizio e fine" indica dove termina una marcatura.
Queste regole funzionano in modalità di "collegamento sequenziale" (senza modello), in cui il programma decide autonomamente dove inizia e finisce la marcatura:
- Inizio del testo – la registrazione inizia quando questo testo viene letto nell'area (ad esempio UTCAB). Vuoto – da qualsiasi testo. Se il testo inizia a ripetersi, la seconda occorrenza del testo di inizio completa la marcatura. Includere il testo di inizio nella marcatura – lasciarlo nel risultato.
- Pausa dopo la fine, ms – non è necessario registrare nulla dopo la marcatura finale.
- Testo di chiusura – indica la fine del testo, quando viene letto (ad esempio BY o 2026).
- Tempo di vuoto, ms – se in quella zona non ci sono caratteri, la marcatura termina e viene salvata.
- Durata massima, con – per una sequenza continua senza interruzioni: ogni intervallo di tempo corrisponde a un'annotazione separata. 0 indica l'assenza di limiti.
Esempio: inizio "UTCAB", fine "BY" – verrà registrato "UTCAB … BY", a questo punto il programma attende il prossimo "UTCAB". Confronto senza considerare la maiuscola, le lettere russe e latine simili vengono considerate uguali.
Tab "Riconoscimento": zona, angolo, modelli
- Area nell'immagine, pixel – Coordinate X e Y, larghezza e altezza dell'area nell'immagine originale: per definire con precisione l'area, senza l'ausilio del mouse.
- Rotazione del testo nell'area – come ruotare l'area in modo che il testo sia orizzontale. Il testo scorre dall'alto verso il basso ("90° in senso antiorario") o dal basso verso l'alto ("90° in senso orario"). Per ruotare il video sullo schermo, utilizzare la scheda "Rotazione video".
- Aumentare la dimensione del testo – un testo più piccolo è più leggibile se la zona di visualizzazione viene ingrandita; la funzione "Automatico" regola automaticamente la dimensione.
- Minima confidenza, % – le righe lette con la minor confidenza vengono eliminate (riflessi, bordi delle lettere).
- La lunghezza minima consentita per la marcatura e i simboli è di... - le marcature o i simboli più brevi non vengono accettati.
- Esempio: nessun nuovo segno, MS – attendere il risultato – quanto tempo aspettare se non arrivano nuovi segni (il nastro si è fermato, la zona è vuota, il testo non è leggibile)? Una volta ottenuto il risultato, si inizia un nuovo processo di analisi.
- Da dove proviene il testo – da quale parte della zona appare il nuovo testo. "Auto" determina in base alle immagini, e l'operazione di "incollaggio" è più affidabile.
- Utilizzare la scheda grafica (GPU): su sistemi NVIDIA con tecnologia CUDA, la velocità di lettura è notevolmente superiore.
- Lettere e Segni: quali elementi possono essere presenti nelle etichette: parole in inglese e russo, solo parole in inglese o qualsiasi segno; numeri e spazi: sempre presenti, i segni (punto, trattino, trattino, numero, ecc.) sono contrassegnati da caselle di controllo. Il modello seleziona il segno solo da quelli consentiti: quelli non necessari non appaiono, quelli simili vengono riconosciuti con maggiore precisione.
- Selezionare parole dal dizionario – la parola riconosciuta (con almeno 3 lettere, non un numero o un codice), che assomiglia a una parola del dizionario in una percentuale minima, viene sostituita con la parola corretta. Il dizionario contiene parole (una per riga) e, facendone una spunta, anche parole provenienti da un riferimento.
Nella scheda sottostante, è disponibile la selezione dei modelli: "Riconoscimento di righe" (v3: più veloce, v5 server: più preciso, ideale per schede video) e "Lettura di testo" (cirillico, latino e numeri; solo latino e numeri; latino delle lingue europee; modello server preciso; oppure due modelli contemporaneamente: entrambi leggono la riga e viene selezionata l'opzione più affidabile). Il modello mancante può essere scaricato tramite il pulsante "⬇ Scarica". Il pulsante "⚖ Confronta i modelli nell'area corrente" elabora l'ultima porzione di immagine selezionata utilizzando tutte le opzioni disponibili, consentendo di visualizzare immediatamente quale modello legge meglio la vostra marcatura e quanto tempo impiega.
Tab "Database": tutte le marcature sono memorizzate
Ogni marcatura riconosciuta viene salvata nel database del programma, insieme alla data, all'ora, alla telecamera, al testo e al risultato del confronto, indipendentemente da ciò che è visualizzato nell'elenco sullo schermo.
- 📤 Esportare il database (in formato JSON) – salvare tutti i dati in un file per la creazione di report o per l'inserimento in un sistema di gestione.
- 📥 Scaricare la base (da "marcatura" a "riferimento") — solo i testi contrassegnati ("marcatura") vengono estratti e diventano "riferimento". In questo modo, l'esempio verificato può essere utilizzato come modello per i successivi.
- 🗑 Pulire la base – eliminare tutti i record.
La scheda "Rete": risultato nel browser e in formato JSON
Seleziona Inviare dati tramite rete — engiAI avvierà un server HTTP (porta predefinita 8096). Qualsiasi computer o tablet sulla rete aprirà la pagina con la marcatura, il confronto e il riferimento utilizzando un browser standard; non è necessario installare nulla. I pulsanti 📋 Copia e 🌐 Apri nel browser prenderanno l'indirizzo dall'elenco.
| Indirizzo | Cosa viene fornito |
|---|---|
| / | pagina: marcatura, confronto, riferimento, JSON |
| /api/marks | marcatura: l'ultima o la più recente, con data o senza (come selezionato nella finestra) |
| /api/marks?show=last&format=text | l'ultima marcatura in formato testuale semplice |
| /api/last | l'ultima marcatura |
| /api/state | stato e testo nella zona corrente |
| /api/refs | riferimento; POST /api/refs — inviare riferimento (in formato JSON) |
| /api/export | l'intera base di marcatura |
Durante la prima esecuzione, il firewall di Windows potrebbe richiedere l'autorizzazione per engiAI — concedere l'accesso alle reti necessarie.
La scheda "Ingresso": immagine acquisita tramite il segnale del controller
Quando l'oggetto arriva davanti alla telecamera in risposta a un segnale (sensore, PLC, robot), segnale "Riconoscimento tramite segnale di ingresso (TCP)". engiAI apre il server TCP; ogni segnale corrisponde a una singola immagine della zona: il testo viene riconosciuto, confrontato e salvato nel database, proprio come in modalità continua.
- Rete – su quale adattatore di rete aspettarsi il segnale («Tutte le reti» – su qualsiasi); è possibile inserire manualmente l'indirizzo IP. Porta – di default 8097.
- Segnale – cosa si considera come comando. Per impostazione predefinita 1: testo ("1", "1\r\n") o byte 0x01.
- Rispondere al cliente con il testo riconosciuto: In risposta, viene visualizzata una riga con un'etichetta; durante il confronto, viene indicato "OK" o "NG" tramite tabulazione; "NO TEXT" indica che il testo non è stato trovato; "ERROR …" indica che non è stata trovata alcuna area o fotogramma.
- 📸 Scatto attuale (verifica) – equivale a un segnale, ma attivato tramite un pulsante. Per effettuare la verifica senza un controller, è possibile utilizzare un programma TCP-UDP (client): inserire l'indirizzo, la porta, il valore "1" e premere "Invia".
L'ingresso e il riconoscimento continuo funzionano simultaneamente: se è selezionato anche "Riconoscimento del testo", il programma continua a monitorare la linea, e per ogni segnale effettua anche uno scatto aggiuntivo.
