Inspecção de marcação
A câmera está posicionada após a impressora ou o marcador a laser. O software engiAI lê o texto impresso diretamente do fluxo de vídeo: junta a mensagem, que passa pela área em partes, compara-a com um modelo ou lista de referência, salva cada marcação em um banco de dados e envia o resultado pela rede – para o navegador, em formato JSON e para um controlador via TCP.
Como funciona na prática
O botão "TEXTO" está na primeira linha da janela principal "engiAI", ao lado dos botões "SAIR", "CÂMERAS", "GATILHOS", "MODELOS GERAIS" e "CONTAR". Ele abre a janela "TEXTO - Reconhecimento de marcação". A janela pode ser mantida aberta sobre o vídeo: a área na imagem fica visível enquanto a janela estiver aberta ou o reconhecimento estiver ativado.
Na parte superior da janela, há três elementos comuns a todas as abas:
- Reconhecimento de texto — é o interruptor principal. Enquanto a caixa de seleção não estiver marcada, o reconhecimento não funcionará e não afetará o desempenho do programa.
- ▭ Definir área – clique e arraste a moldura sobre o vídeo com qualquer botão do mouse. Enquanto a janela estiver aberta, é possível arrastar a moldura também com o botão direito do mouse, sem precisar clicar. ✖ Remover área – remove a área definida.
- Estado à direita: ESPERANDO, REGISTRO, PAUSA ou CONFORME SINAL DE ENTRADA. Abaixo, indica-se o que está sendo utilizado (GPU CUDA ou processador), o número de quadros por segundo lidos e o número de milissegundos gastos por quadro.
Aba "Marcação": resultado e comparação com o modelo
Esta é a aba de operação para o operador. Na parte superior, encontra-se o modo "Comparar tudo na área com o padrão":
Como o programa analisa a frase na linha de produção:
- A gravação começa no início da frase. Se a gravação foi iniciada no meio do texto, a parte final é ignorada – o programa aguarda o próximo início.
- Cada quadro é posicionado corretamente no modelo, e cada letra recebe "votos" de todos os quadros em que é visível. O resultado é a variante que aparece com maior frequência. Erros aleatórios em um único quadro (como uma letra cortada na borda ou um reflexo) são corrigidos pelos quadros vizinhos – quanto mais quadros, mais "votos" e, portanto, um resultado mais preciso.
- O resultado é exibido assim que a frase é processada por completo, ou se não há novos caracteres detectados por um período de tempo especificado na aba "Reconhecimento" (o sistema está inativo e a área está vazia). Após a exibição do resultado, o programa aguarda o início da próxima frase; as frases que seguem uma após a outra são registradas individualmente.
- O programa determina automaticamente a direção do movimento ou utiliza a configuração "De onde vem o texto".
Enquanto a frase é processada, à direita da porta, é possível ver a porcentagem de correspondência e o texto reconhecido: 40 de 64 caracteres, na linha "Registrado". Após a análise, o resultado é exibido de forma destacada: 73% - RECONHECIDO ou NÃO RECONHECIDO. O mesmo resultado é exibido em destaque sobre o vídeo.
Sem a opção "Comparar tudo na área com o exemplo", o programa realiza a colagem sequencial: qualquer marcação é escrita do início ao fim, seguindo as regras da aba "Início e Fim", e, se necessário, é comparada com uma lista de referência.
Abaixo da lista, há opções de controle:
- Todas as marcações / Apenas a última – especificar o número de marcações a serem exibidas e enviadas para o navegador.
- Data, hora e marcação / Apenas a marcação – o que deve ser enviado para o navegador e armazenado em formato JSON.
- ⚖ Comparar — comparar cada marcação pronta com as referências marcadas.
- 💾 Salvar como JSON, 📂 Carregar JSON (os dados carregados servem como referência), Limpar a lista — remove as linhas da tela e do navegador, mas os dados permanecem no banco de dados.
A aba "Referência" contém a lista de marcações corretas.
A opção "Referência" é útil quando na linha de produção existem várias marcações diferentes (seções, lotes, clientes), e é necessário encontrar cada uma na lista.
- 📂 Carregar JSON – lista extraída de um arquivo: nosso JSON, um array de strings, objetos com o campo "text" ou simplesmente texto por linha, sem repetições.
- ✓ Marcar tudo, ☐ Desmarcar tudo, marcar cada linha – para comparar com quais referências. ✖ Remover referência – remover a lista.
- Similaridade para correspondência, % – 100 significa que os caracteres correspondem exatamente (sem considerar espaços ou diferenças de maiúsculas/minúsculas). Valores inferiores indicam que podem existir erros de digitação ou leitura.
- Corrigir com base no padrão de … % — se a leitura corresponder à referência marcada, a marcação é registrada usando o texto do padrão (a leitura original permanece no registro).
A aba "Início e Fim" indica onde uma marcação termina.
Estas regras funcionam no modo de colagem sequencial (sem modelo), onde o programa determina automaticamente onde começa e termina a marcação:
- Início do texto – a gravação começa quando este texto é lido na área (por exemplo, UTCAB). Vazio – a partir de qualquer texto. Se a marcação for circular, a segunda ocorrência do texto de início completa a gravação. Incluir o texto de início na gravação – deixá-lo no resultado.
- Pausa após o fim, ms — não é necessário registrar nada após a marcação final.
- Fim do texto – esta marca indica o fim do texto, quando este é lido (por exemplo, BY ou 2026).
- Tempo de vazio, ms – se não houver texto nessa área, a marcação é finalizada e salva.
- Maior duração, com — para uma única linha sem espaços: cada período de tempo especificado representa uma marcação separada. 0 — sem limite.
Exemplo: início de "UTCAB", fim de "BY" - será registrado como "UTCAB … BY", em seguida, o programa aguarda o próximo "UTCAB". Comparação sem considerar maiúsculas/minúsculas, letras russas e latinas semelhantes são consideradas iguais.
Aba "Reconhecimento": área, ângulo, modelos
- Área na imagem, pixels – Coordenadas X e Y, largura e altura da área na imagem original: ajustar a área com precisão, sem o uso do mouse.
- Rotação do texto na área – como rotacionar a área para que o texto fique reto. O texto segue de cima para baixo – "90° no sentido anti-horário", de baixo para cima – "90° no sentido horário". É possível rotacionar o próprio vídeo na tela, na aba "Rotação de vídeo".
- Aumentar o tamanho do texto — o texto fica mais legível se a área de visualização for aumentada; a função "Automático" ajusta automaticamente.
- Menor grau de confiança, % – as linhas lidas com menor grau de confiança são descartadas (reflexos, bordas das letras).
- O comprimento mínimo permitido para a marcação/símbolos — resultados com comprimentos menores não são aceitos.
- Exemplo: nenhum novo sinal, MS - aguardar resultado - Quanto tempo esperar se nenhum novo sinal for recebido (a linha de produção parou, a área está vazia, o texto não é lido)? Após a obtenção do resultado, uma nova análise é iniciada.
- De onde vem o texto – de qual lado da área aparece o novo texto. O "Auto" determina com base nos quadros, e a função de colagem é mais confiável.
- Utilizar a placa de vídeo (GPU) — em placas NVIDIA com CUDA, a leitura de dados é significativamente mais rápida.
- Letras e Símbolos: o que pode aparecer na marcação: palavras em inglês e russo, apenas palavras em inglês ou qualquer símbolo; números e espaços - sempre, os símbolos (ponto, hífen, barra invertida, nº, etc.) são marcados com um "check". O modelo seleciona o símbolo apenas dos permitidos - os símbolos desnecessários não aparecem, e os símbolos semelhantes são identificados com mais precisão.
- Selecionar palavras com base em um dicionário – a palavra identificada (com no mínimo 3 letras, não numérica nem um código), que se assemelha a uma palavra do dicionário em pelo menos uma porcentagem definida, é substituída pela palavra correta. O dicionário contém palavras (uma por linha) e, opcionalmente, palavras de referência.
Na aba abaixo, você pode escolher os modelos: "Detecção de linhas" (v3 - rápida, v5 server - mais precisa, para placas de vídeo) e "Leitura de texto" (cirílico, latim e números; apenas latim e números; latim de idiomas europeus; modelo server preciso; ou dois modelos simultaneamente - ambos leem a linha, selecionando a opção mais confiável). O modelo ausente é baixado com o botão "⬇ Baixar". O botão "⚖ Comparar modelos na área atual" aplica a última versão da área a todos os modelos - você pode ver imediatamente qual modelo é o mais adequado para a sua marcação e quanto tempo leva para isso.
Aba "Banco de Dados": todas as marcações são armazenadas
Cada marcação reconhecida é armazenada no banco de dados do programa, juntamente com a data, hora, câmera, texto e resultado da comparação, independentemente do que é exibido na lista na tela.
- 📤 Exportar a base de dados (JSON) – gravar todas as informações em um arquivo para gerar um relatório ou para transferência para um sistema de contabilidade.
- 📥 Baixar a base (marcação → referência) — A base a ser baixada contém apenas os textos marcados, que se tornam referências. Assim, a mudança verificada pode ser utilizada como modelo para as seguintes.
- 🗑 Limpar a base de dados – remover todos os registros.
A aba "Rede" – resultado no navegador e em JSON
Marque a opção "Enviar dados pela rede" para que o engiAI inicie um servidor HTTP (a porta padrão é 8096). Qualquer computador ou tablet na rede poderá acessar uma página com marcações, comparações e referências usando um navegador comum; não é necessário instalar nada. Os botões 📋 Copiar e 🌐 Abrir no navegador permitem copiar ou abrir o endereço listado.
| Endereço | O que é transmitido |
|---|---|
| / | Página: marcação, comparação, referência, JSON |
| /api/marks | marcação – todas ou a última, com data ou sem (conforme selecionado na janela) |
| /api/marks?show=last&format=text | a última marcação em texto simples |
| /api/last | a última marcação |
| /api/state | estado e texto na área atual |
| /api/refs | referência; POST /api/refs — enviar referência (JSON) |
| /api/export | toda a base de marcações |
Na primeira execução, o firewall do Windows pode solicitar permissão para o engiAI — conceda acesso às redes necessárias.
A aba "Entrada" – captura pelo sinal do controlador
Quando o produto chega à câmera, acionado por um sinal (sensor, PLC, robô), marque a opção “Reconhecer por sinal de entrada (TCP)”. O engiAI abre o servidor TCP; cada sinal resulta em uma captura da área: o texto é reconhecido, comparado e armazenado no banco de dados, da mesma forma que em modo contínuo.
- Rede – em qual adaptador de rede esperar o sinal («Todas as redes» – em qualquer um); é possível inserir o endereço IP manualmente. Porta – por padrão 8097.
- Sinal – o que considerar como um comando. Por padrão, 1: texto ("1", "1\r\n") ou byte 0x01.
- Responder ao cliente com o texto reconhecido – a resposta inclui uma string com marcação, que é comparada com "OK" ou "NG" através de tabulação; OK ou NG – indica que a comparação foi bem-sucedida ou falhou, respectivamente; NO TEXT – indica que o texto não foi encontrado; ERROR … – indica que não há área ou quadro disponível.
- 📸 Foto atual (teste) – o mesmo que um sinal, mas enviado através de um botão. É possível realizar o teste sem um controlador usando um programa TCP-UDP (cliente): insira o endereço, a porta, o valor "1" e clique em "Enviar".
A entrada e o reconhecimento contínuo funcionam simultaneamente: se a opção "Reconhecimento de texto" estiver marcada, o programa continua monitorando a linha de produção, e para cada sinal, também faz uma captura.
