Contrôle du marquage
La caméra est placée après l'imprimante ou le marqueur laser. Le logiciel engiAI lit le texte imprimé directement à partir du flux vidéo : il assemble le texte, qui passe à travers la zone, le compare à un modèle ou une liste de références, enregistre chaque marquage dans une base de données et transmet le résultat via le réseau – vers un navigateur, au format JSON et à un contrôleur via TCP.
Comment cela fonctionne en pratique
Le bouton "TEXTE" se trouve dans la première ligne de la fenêtre principale "engiAI", à côté des boutons SORTIE, CAMÉRA, SÉRIE, MODÈLES GÉNÉRALES et COMPTAGE. Il ouvre la fenêtre "TEXTE - reconnaissance de marquage". La fenêtre peut être maintenue ouverte au-dessus de la vidéo : la zone de l'image est visible tant que la fenêtre est ouverte ou que la reconnaissance est activée.
Dans la barre d'en-tête de la fenêtre, il y a trois éléments communs à toutes les onglets :
- Reconnaissance de texte : c'est l'interrupteur principal. Tant que la case à cocher n'est pas cochée, la reconnaissance ne fonctionne pas et ne surcharge pas le programme.
- Sélectionner une zone : cliquez et faites glisser le cadre sur la vidéo à l'aide de n'importe quelle touche de la souris. Tant que la fenêtre est ouverte, vous pouvez également faire glisser le cadre à l'aide de la souris droite sans appuyer sur quoi que ce soit. Supprimer la zone : supprime la zone sélectionnée.
- État à droite : EN ATTENTE de marquage, MARQUAGE, PAUSE ou SUR SIGNAL D'ENTRÉE. En dessous, on trouve : le type de GPU (CUDA ou processeur), le nombre d'images par seconde lues, et le temps en millisecondes nécessaire pour chaque image.
Onglet "marquage" : résultat et comparaison avec l'échantillon
Il s'agit de l'onglet principal pour l'opérateur. En haut, on trouve le mode "Comparer tout dans la zone avec un modèle":
Voici comment le programme analyse la phrase sur la ligne de production :
- L'enregistrement commence au début de la phrase. Si l'enregistrement a été démarré au milieu d'une chaîne de caractères, la partie restante est ignorée ; le programme attend le début de la phrase suivante.
- Chaque image est placée à sa position dans le modèle, et chaque lettre reçoit des "votes" provenant de toutes les images où elle est visible. Le résultat est la version qui est la plus souvent lue. Les erreurs aléatoires d'une seule image (par exemple, une lettre coupée par le bord de l'image, un reflet) sont corrigées par les images voisines : sur une ligne de production lente, il y a plus de votes, et le résultat est plus précis.
- Le résultat est affiché dès que la phrase a traversé entièrement la zone de détection, ou si aucun nouveau caractère n'est détecté pendant une durée spécifiée dans l'onglet "Reconnaissance" (le système est arrêté et la zone est vide). Après l'affichage du résultat, le programme attend le début de la phrase suivante ; les phrases qui se suivent immédiatement sont enregistrées séparément.
- Le programme détermine lui-même la direction du mouvement ou utilise la configuration « Source du texte ».
Pendant que la phrase est en cours de reconnaissance, à droite de la porte, on peut voir que 40 sur 64 caractères ont été reconnus, ainsi que le pourcentage de correspondance et le texte reconnu dans la ligne "Enregistré". Après l'analyse, on obtient 73% - RECONNU ou NON RECONNU. Le même résultat est affiché de manière plus grande sur la vidéo.
Sans la case « Comparer tout dans la zone avec l'exemple », le processus est séquentiel : chaque texte est enregistré de début à fin, selon les règles de l'onglet « Début et fin », et, si nécessaire, comparé à une liste de référence.
Sous la liste, il y a des commandes :
- Tous les marquages / Seulement le dernier – indiquer ici et transmettre au navigateur.
- Date, heure et marquage / Uniquement le marquage – ce qui doit être transmis au navigateur et enregistré au format JSON.
- ⚖ Comparer — Comparer chaque marquage réalisé avec les références établies.
- 💾 Enregistrer au format JSON, 📂 Télécharger un fichier JSON (les fichiers téléchargés deviennent des références), Effacer la liste – supprime les lignes de l'écran et du navigateur, mais les conserve dans la base de données.
L'onglet « Référence » contient la liste des correspondances correctes.
Les références sont nécessaires lorsque plusieurs correspondances différentes (différentes sections, lots, clients) apparaissent sur la ligne, et qu'il faut trouver chacune de ces correspondances dans la liste.
- 📂 Télécharger un fichier JSON – Liste extraite d'un fichier : notre fichier JSON, un tableau de chaînes, des objets contenant un champ « text » ou simplement du texte par ligne, avec marquage. Les doublons sont supprimés.
- ✓ Marquer tout, ☐ Annuler tout, coche pour chaque ligne – avec quelles références comparer. ✖ Supprimer la référence – supprimer la liste.
- Similitude pour comparaison, % – 100 signifie que les caractères correspondent exactement (sans tenir compte des espaces et de la casse). En dessous, des erreurs de frappe et de lecture sont tolérées.
- Corriger selon le modèle de … % – si le texte lu correspond à la référence indiquée, la correction est effectuée en utilisant le texte du modèle (le texte original est conservé dans le registre).
L'onglet « Début et fin » indique où une correspondance se termine.
Ces règles s'appliquent en mode de collage séquentiel (sans modèle), où le programme détermine automatiquement où commence et se termine le marquage :
- Début du texte – l'enregistrement commence lorsque ce texte est lu dans la zone (par exemple, UTCAB). Vide – à partir de n'importe quel texte. Si la mention est répétée, la deuxième apparition du texte de début marque la fin de l'enregistrement. Inclure le texte de début dans l'enregistrement – le laisser dans le résultat.
- Pause après la fin, en millisecondes — il ne faut pas enregistrer quoi que ce soit après la marquage finale.
- Fin du texte – cette indication marque la fin du texte, lorsque celui-ci est lu (par exemple BY ou 2026).
- Temps vide, ms – si cette zone ne contient aucun texte, la marque est terminée et conservée.
- Durée maximale, avec — pour une inscription continue sans espaces : chaque intervalle de temps correspond à une marque distincte. 0 indique l'absence de limite.
Exemple : début « UTCAB », fin « BY » – cela enregistre « UTCAB … BY », puis le programme attend le prochain « UTCAB ». Comparaison sans tenir compte de la casse, les lettres russes et latines similaires sont considérées comme identiques.
L'onglet « Reconnaissance » : zone, angle, modèles
- Zone dans le cadre, pixels – Coordonnées X, Y, largeur et hauteur de la zone dans le cadre original : ajuster précisément la zone, sans utiliser la souris.
- Rotation du texte dans la zone – comment faire pivoter la zone pour que le texte soit horizontal ? Le texte s'affiche de haut en bas («90° dans le sens inverse des aiguilles d'une montre»), et de bas en haut («90° dans le sens des aiguilles d'une montre»). Il est possible de faire pivoter la vidéo elle-même sur l'écran en accédant à l'onglet «Rotation vidéo».
- Zoom — Le texte de petite taille est plus lisible si on augmente la zone d'affichage ; la fonction "automatique" ajuste automatiquement le niveau de zoom.
- Moins de confiance, % – les lignes lues avec un niveau de confiance inférieur sont rejetées (ombres, bords des lettres).
- La longueur minimale autorisée pour les marquages et les symboles est de... Les résultats inférieurs à cette longueur ne sont pas conservés.
- Exemple : pas de nouveaux codes, MS – attendre le résultat – combien de temps attendre si les nouveaux codes de l'échantillon n'arrivent pas (la chaîne s'est arrêtée, la zone est vide, le texte n'est pas lisible) ? Une fois que le résultat est obtenu, une nouvelle analyse commence.
- D'où provient le texte — de quelle partie de la zone apparaît le nouveau texte. "Auto" détermine cela en analysant les images, et la fonction de collage est plus fiable.
- Utiliser la carte graphique (GPU) : sur les systèmes NVIDIA équipés de CUDA, la vitesse de lecture est considérablement plus rapide.
- Lettres et Symboles : ce qui peut apparaître dans l'étiquetage : mots en anglais et en russe, uniquement en anglais ou tout autre symbole ; chiffres et espace : toujours présents, les symboles (point, tire, trait oblique, numéro, etc.) sont marqués par un coche. Le modèle sélectionne uniquement les symboles autorisés : les symboles inutiles ne s'affichent pas, et les symboles similaires sont identifiés avec plus de précision.
- Sélectionner des mots à partir d'un dictionnaire : un mot reconnu (de 3 lettres ou plus, non numérique ni code), similaire à un mot du dictionnaire avec un pourcentage minimum, est remplacé par le mot correct. Le dictionnaire contient des mots (un par ligne) et, éventuellement, des mots provenant d'un dictionnaire de référence.
Ci-dessous, sur cette page, vous trouverez les options de sélection des modèles : «Recherche de lignes» (v3 – rapide, v5 server – plus précise, pour la carte vidéo) et «Lecture de texte» (cyrillique, latin et chiffres ; uniquement latin et chiffres ; latin des langues européennes ; modèle server précis ; ou deux modèles simultanément – les deux lisent la ligne, on prend la version la plus fiable). Le modèle manquant est téléchargé avec le bouton ⬇ Télécharger. Le bouton ⚖ Comparer les modèles dans la zone actuelle effectue une comparaison de la dernière version de la zone avec toutes les options – vous voyez immédiatement quelle modèle lit le mieux votre marquage et combien de millisecondes cela prend.
L'onglet « Base de données » : tous les marquages sont stockés
Chaque marquage reconnu est enregistré dans la base de données avec la date, l'heure, la caméra, le texte et le résultat de la comparaison, quel que soit ce qui est affiché dans la liste à l'écran.
- 📤 Exporter la base de données (au format JSON) : Exporter toutes les données de marquage dans un fichier, pour la création de rapports ou pour l'intégration dans un système de gestion.
- 📥 Télécharger la base (marquage → référence) – seuls les textes de marquage sont extraits de l'export, et ils deviennent des références. Ainsi, la modification validée peut servir de modèle pour les suivantes.
- 🗑 Effacer la base – supprimer toutes les entrées.
L'onglet « Réseau » : résultat dans le navigateur et en JSON
Cochez «Envoyer les données sur le réseau» — «engiAI» lancera un serveur HTTP (port par défaut : 8096). Tout ordinateur ou tablette sur le réseau peut accéder à la page avec marquage, comparaison et référence via un navigateur web ; aucune installation n'est nécessaire. Les boutons «Copier» et «Ouvrir dans le navigateur» récupèrent l'adresse à partir de la liste.
| Adresse | Ce qui est transmis |
|---|---|
| / | Page : marquage, comparaison, référence, JSON |
| /api/marks | marquage : tout ou le dernier, avec ou sans date (selon ce qui est sélectionné dans la fenêtre) |
| /api/marks?show=last&format=text | Le dernier marquage sous forme de texte simple |
| /api/last | Le dernier marquage |
| /api/state | État et texte dans la zone actuelle |
| /api/refs | référence; POST /api/refs — envoyer la référence (au format JSON) |
| /api/export | Toute la base de marquages |
Lors du premier démarrage, le pare-feu Windows peut demander l'autorisation d'accéder à engiAI — accordez l'accès aux réseaux nécessaires.
L'onglet « Entrée » : capture basée sur le signal du contrôleur
Lorsque l'objet arrive devant la caméra selon un signal (capteur, PLC, robot), cochez la case Reconnaître par le signal d'entrée (TCP). engiAI ouvre le serveur TCP ; chaque signal correspond à une capture de la zone : le texte est reconnu, comparé et enregistré dans la base de données, de la même manière que dans un mode continu.
- Réseau – quel adaptateur réseau attendre le signal (« Tous les réseaux » – sur n'importe lequel) ; possibilité de saisir l'adresse IP manuellement. Port – par défaut 8097.
- Signal – ce qu'il faut considérer comme un code. Par défaut, 1: soit un texte («1», «1\r\n») soit un octet 0x01.
- Répondre au client avec le texte reconnu : la réponse est une chaîne de caractères avec un marquage, lors de la comparaison, on obtient soit OK soit NG séparés par une tabulation ; NO TEXT : le texte n'a pas été trouvé, ERROR … : il n'y a pas de zone ou de cadre.
- 📸 Capture instantanée (test) – équivalent à un signal, mais déclenché par un bouton. Pour effectuer un test sans contrôleur, vous pouvez utiliser un programme TCP-UDP (client) : indiquez l'adresse, le port, la valeur "1", puis cliquez sur "Envoyer".
La fonction de reconnaissance et la surveillance continue fonctionnent simultanément : si «Reconnaissance de texte» est activée, le programme continue de surveiller le flux, et pour chaque signal, il effectue également une capture instantanée.
