Инспекция маркировок

engiAI · кнопка ТЕКСТ
Распознавание и проверка маркировки на кабеле, трубе, ленте и упаковке

Камера стоит после принтера или лазерного маркиратора. engiAI читает напечатанный текст прямо с видеопотока: склеивает надпись, которая проезжает через зону по кусочкам, сравнивает её с образцом или списком эталонов, сохраняет каждую маркировку в базу и отдаёт результат по сети — в браузер, в JSON и контроллеру по TCP.

1. Зонарамка на видео там, где идёт надпись
2. Образецфраза, которая должна быть напечатана
3. Анализнейросеть читает каждый кадр
4. Итог«Распознало» или «Не распознало» + база
~10 кадр/с
чтение зоны на видеокарте (CUDA)
RU + EN
кириллица, латиница, цифры, знаки
0 обучения
модель PaddleOCR готова сразу
HTTP + TCP
браузер, JSON, сигнал контроллера

Как это выглядит в работе

engiAI — окно ТЕКСТ рядом с видео
Слева — видео с камеры, синяя рамка — зона распознавания. Справа — окно ТЕКСТ: вырезка зоны, зелёные рамки вокруг прочитанных слов и строка «Сейчас в зоне».

Кнопка ТЕКСТ находится в верхнем ряду главного окна engiAI, рядом с кнопками ВЫХОДЫ, КАМЕРЫ, ТРИГГЕРЫ, ОБЩИЕ МОДЕЛИ и ПОДСЧЁТ. Она открывает окно «ТЕКСТ — распознавание маркировки». Окно можно держать открытым поверх видео: зона на кадре видна, пока окно открыто или распознавание включено.

В шапке окна три вещи, общие для всех вкладок:

  • Распознавание текста — главный выключатель. Пока галочка снята, распознавание не работает и не нагружает программу.
  • ▭ Выделить зону — нажмите и протяните рамку на видео любой кнопкой мыши. Пока окно открыто, рамку можно протянуть и правой кнопкой без нажатия. ✖ Сбросить зону убирает зону.
  • Состояние справа: ЖДЁТ МАРКИРОВКУ, ЗАПИСЬ МАРКИРОВКИ, ПАУЗА или ПО СИГНАЛУ ВХОДА. Под ним — чем считается (GPU CUDA или процессор), сколько кадров в секунду читается и сколько миллисекунд уходит на один кадр.
Совет. Делайте зону шире видимой части надписи и вытянутой вдоль движения: чем больше знаков одновременно в зоне, тем надёжнее склейка кадров. Камера должна стоять после нанесения маркировки, текст — резкий, без смаза.

Вкладка «Маркировки» — результат и сравнение с образцом

engiAI — ТЕКСТ: вкладка Маркировки
Вкладка «Маркировки»: образец фразы, превью зоны, что сейчас в зоне и что записывается, ниже — список готовых маркировок. Зелёные строки — «Распознало», красные — «Не распознало», в скобках — процент совпадения с образцом.

Это рабочая вкладка оператора. Сверху — режим Сравнивать всё в зоне с образцом:

engiAI — ТЕКСТ: образец фразы
Поле «Образец» — фраза, которая должна быть напечатана; «Порог совпадения, %» — с какого процента считать маркировку правильной. Справа — живое состояние.
1
Отметьте Сравнивать всё в зоне с образцом и впишите в поле Образец фразу целиком, например Энергокомплект UTCAB-PV1-F 6 4 ТУ BY 300528652.036-2014 EAC 2026 Беларусь. Регистр, пробелы и одинаковые на вид русские и латинские буквы (Т и T, У и Y, Е и E) не важны.
2
Задайте Порог совпадения, %. 100 — знак в знак; 65–80 — с запасом на неточности печати и чтения.
3
Включите Распознавание текста. Длинная фраза не помещается в зону целиком — программа собирает её по кадрам, пока она едет через зону.

Как идёт анализ фразы на конвейере:

  • Запись начинается с начала фразы. Если включили посреди надписи, её хвост пропускается — программа ждёт следующее начало.
  • Каждый кадр ставится на своё место в образце, и каждая буква получает «голоса» из всех кадров, где её видно. В итог идёт вариант, прочитанный чаще всего. Случайные ошибки одного кадра (обрезанная краем зоны буква, блик) исправляются соседними кадрами — на медленном конвейере голосов больше, и итог точнее.
  • Итог выдаётся, как только фраза прошла через зону целиком, или если новых знаков нет дольше времени из вкладки «Распознавание» (конвейер встал, зона пустая). После итога программа ждёт начало следующей фразы; фразы, идущие вплотную друг за другом, записываются каждая отдельно.
  • Направление движения программа определяет сама или берёт из настройки «Откуда приходит текст».

Пока фраза едет, справа от порога видно читает: 40 из 64 знаков, в строке «Записывается» — процент совпадения и собранный текст. После итога — 73% — РАСПОЗНАЛО или НЕ РАСПОЗНАЛО. Тот же итог выводится крупно поверх видео.

Без галочки «Сравнивать всё в зоне с образцом» работает последовательная склейка: любая надпись записывается от начала до конца по правилам вкладки «Начало и конец» и, если нужно, сравнивается со списком эталонов.

Под списком — управление:

  • Все маркировки / Только последняя — сколько показывать здесь и отдавать в браузер.
  • Дата, время и маркировка / Только маркировка — что передавать в браузер и сохранять в JSON.
  • ⚖ Сравнивать — сравнивать каждую готовую маркировку с отмеченными эталонами.
  • 💾 Сохранить JSON, 📂 Загрузить JSON (загруженные маркировки становятся эталонами), Очистить список — убирает строки с экрана и из браузера, в базе они остаются.

Вкладка «Эталоны» — список правильных маркировок

engiAI — ТЕКСТ: вкладка Эталоны
Вкладка «Эталоны»: загруженные маркировки, галочки «сравнивать с этой», порог похожести и исправление по эталону.

Эталоны нужны, когда на линии бывает несколько разных маркировок (разные сечения, партии, заказчики), и каждую прочитанную нужно найти в списке.

  • 📂 Загрузить JSON — список из файла: наш JSON, массив строк, объекты с полем text или просто текст по строке на маркировку. Повторы убираются.
  • ✓ Отметить все, ☐ Снять все, галочка у каждой строки — с какими эталонами сравнивать. ✖ Очистить эталоны — убрать список.
  • Похожесть для совпадения, % — 100 значит знак в знак (без учёта пробелов и регистра). Ниже — допускаются ошибки печати и чтения.
  • Исправлять по эталону от … % — если прочитанное похоже на отмеченный эталон не меньше указанного, маркировка записывается текстом эталона (исходное прочтение остаётся в журнале).

Вкладка «Начало и конец» — где кончается одна маркировка

engiAI — ТЕКСТ: вкладка Начало и конец
Вкладка «Начало и конец»: текст начала и конца, пауза после конца, время пустоты и наибольшая длительность записи.

Эти правила работают в режиме последовательной склейки (без образца), когда программа сама решает, где начинается и кончается маркировка:

  • Текст начала — запись начинается, когда в зоне прочитан этот текст (например UTCAB). Пусто — с любого текста. Если надпись идёт по кругу, второе появление текста начала завершает маркировку. Включать текст начала в маркировку — оставлять его в результате.
  • Пауза после конца, мс — столько ничего не записывать после готовой маркировки.
  • Текст конца — маркировка заканчивается, когда прочитан этот текст (например BY или 2026).
  • Время пустоты, мс — если столько в зоне нет текста, маркировка закончилась и сохраняется.
  • Наибольшая длительность, с — для сплошной надписи без промежутков: каждые столько секунд — отдельная маркировка. 0 — без ограничения.

Пример: начало «UTCAB», конец «BY» — запишется «UTCAB … BY», дальше программа ждёт следующее «UTCAB». Сравнение без учёта регистра, похожие русские и латинские буквы считаются одинаковыми.

Вкладка «Распознавание» — зона, поворот, модели

engiAI — ТЕКСТ: вкладка Распознавание
Вкладка «Распознавание»: точные координаты зоны, поворот и увеличение, пороги, ожидание новых знаков образца, направление конвейера, видеокарта, разрешённые буквы и знаки, словарь.
  • Зона на кадре, пиксели — X, Y, ширина и высота зоны на исходном кадре: подправить рамку точно, без мыши.
  • Поворот текста в зоне — как повернуть зону, чтобы текст стал прямым. Текст идёт сверху вниз — «90° против часовой», снизу вверх — «90° по часовой». Повернуть само видео на экране можно на вкладке Video («Поворот видео»).
  • Увеличение — мелкий текст читается лучше, если зону увеличить; «Авто» подбирает само.
  • Наименьшая уверенность, % — строки, прочитанные с меньшей уверенностью, отбрасываются (блики, края букв).
  • Наименьшая длина маркировки, знаков — более короткие результаты не сохраняются.
  • Образец: нет новых знаков, мс — выдать итог — сколько ждать, если новых знаков образца не приходит (конвейер встал, зона пустая, текст не читается). По истечении итог выдаётся по прочитанному, и начинается новый анализ.
  • Откуда приходит текст — с какой стороны зоны появляется новый текст. «Авто» определяет по кадрам, с подсказкой склейка надёжнее.
  • Использовать видеокарту (GPU) — на NVIDIA с CUDA чтение идёт в разы быстрее.
  • Буквы и Знаки — что может быть в маркировке: английские и русские слова, только английские или любые знаки; цифры и пробел — всегда, знаки (точка, тире, косая черта, № и др.) отмечаются галочками. Модель выбирает знак только из разрешённых — лишние не появляются, похожие угадываются точнее.
  • Подбирать слова по словарю — распознанное слово (от 3 букв, не число и не код), похожее на слово из словаря не меньше заданного процента, заменяется правильным. Словарь — свои слова (по одному в строке) и, по галочке, слова из эталонов.

Ниже на этой вкладке — выбор моделей: Поиск строк (v3 — быстрая, v5 server — точнее, для видеокарты) и Чтение текста (кириллица, латиница и цифры; только латиница и цифры; латиница европейских языков; точная server-модель; или две модели сразу — строку читают обе, берётся более уверенный вариант). Недостающая модель скачивается кнопкой ⬇ Скачать. Кнопка ⚖ Сравнить модели на текущей зоне прогоняет последнюю вырезку зоны через все варианты — сразу видно, какая модель лучше читает именно вашу маркировку и сколько миллисекунд на это уходит.

Модель обучать не нужно. Распознавание построено на PaddleOCR и читает латиницу, кириллицу и цифры сразу после установки. Настройка сводится к зоне, повороту и списку разрешённых знаков.

Вкладка «База данных» — все маркировки хранятся

engiAI — ТЕКСТ: вкладка База данных
Вкладка «База данных»: сколько маркировок накоплено, выгрузка в JSON, загрузка выгрузки как эталонов и очистка.

Каждая распознанная маркировка сохраняется в базе программы с датой, временем, камерой, текстом и результатом сравнения — независимо от того, что показано в списке на экране.

  • 📤 Выгрузить базу (JSON) — все маркировки в файл для отчёта или передачи в учётную систему.
  • 📥 Загрузить базу (маркировки → эталоны) — из выгрузки берутся только тексты маркировок, они становятся эталонами. Так проверенную смену можно сделать образцом для следующих.
  • 🗑 Очистить базу — удалить все записи.

Вкладка «Сеть» — результат в браузере и в JSON

engiAI — ТЕКСТ: вкладка Сеть
Вкладка «Сеть»: встроенный HTTP-сервер, адреса для подключения по всем сетевым адаптерам ПК и список адресов API.

Отметьте Отправлять данные по сети — engiAI запустит HTTP-сервер (по умолчанию порт 8096). Любой компьютер или планшет в сети открывает страницу с маркировками, сравнением и эталонами в обычном браузере; ничего устанавливать не нужно. Кнопки 📋 Копировать и 🌐 Открыть в браузере берут адрес из списка.

АдресЧто отдаёт
/страница: маркировки, сравнение, эталоны, JSON
/api/marksмаркировки — все или последняя, с датой или без (как выбрано в окне)
/api/marks?show=last&format=textпоследняя маркировка простым текстом
/api/lastпоследняя маркировка
/api/stateсостояние и текст в зоне прямо сейчас
/api/refsэталоны; POST /api/refs — загрузить эталоны (JSON)
/api/exportвся база маркировок

При первом запуске брандмауэр Windows может спросить разрешение для engiAI — разрешите доступ в нужных сетях.

Вкладка «Вход» — снимок по сигналу контроллера

engiAI — ТЕКСТ: вкладка Вход
Вкладка «Вход»: TCP-сервер для сигнала от ПЛК или датчика — сеть, порт, значение сигнала, ответ клиенту и проверка «Снимок сейчас».

Когда изделие приходит под камеру по сигналу (датчик, ПЛК, робот), отметьте Распознавать по сигналу входа (TCP). engiAI открывает TCP-сервер; каждый сигнал — один снимок зоны: текст распознаётся, сравнивается и сохраняется в базу так же, как в непрерывном режиме.

  • Сеть — на каком сетевом адаптере ждать сигнал («Все сети» — на любом); можно вписать IP вручную. Порт — по умолчанию 8097.
  • Сигнал — что считать командой. По умолчанию 1: текстом («1», «1\r\n») или байтом 0x01.
  • Отвечать клиенту распознанным текстом — в ответ приходит строка с маркировкой, при сравнении — ещё OK или NG через табуляцию; NO TEXT — текст не найден, ERROR … — нет зоны или кадра.
  • 📸 Снимок сейчас (проверка) — то же, что сигнал, но с кнопки. Проверить без контроллера можно программой TCP-UDP (клиент): адрес, порт, значение «1», «Отправить».

Вход и непрерывное распознавание работают одновременно: если отмечено и «Распознавание текста», программа продолжает следить за конвейером, а по каждому сигналу дополнительно делает снимок.

Быстрая настройка за 5 минут

1
Нажмите ТЕКСТ, затем ▭ Выделить зону и протяните рамку вдоль надписи на видео.
2
На вкладке «Распознавание» выберите поворот, чтобы текст в превью стал прямым, увеличение ×2–×4 для мелкого шрифта и направление движения конвейера.
3
На вкладке «Маркировки» отметьте Сравнивать всё в зоне с образцом, впишите фразу и порог.
4
Включите Распознавание текста. Каждая проехавшая фраза появится в списке зелёной («Распознало») или красной («Не распознало») строкой.
5
При необходимости включите «Сеть» для браузера и JSON и «Вход» для сигнала от контроллера.