← Назад до портфоліо

AI Vision — УЗТ формиПриватний

AI Vision — УЗТ форми main image

Опис та деталі проекту

Задача

Потрібно було прибрати ручний перенос даних з паперових черновиків УЗТ (ультразвуковий контроль товщини) в цифровий контур. Оператори заповнюють шапку, таблицю та сітку вимірювань I–IV від руки; помилки та неоднозначні цифри дорого обходяться при передачі в ERP.

Мета проекту — локальний пайплайн: фото/скан форми → структурований result.json з полями та confidence, плюс звіт для людини (review.html / review.csv), а не «магічний» end-to-end без контролю.

Критерії готовності: відтворюваний прогон на одному файлі та на batch, статуси полів (ok / review / error / empty), оцінка на golden set, заділ під legacy-payload для інтеграції з внутрішнім контуром (фаза 2).

Рішення

Зібрано гібридний контур CV + OCR + vision LLM:

  1. Python CV-пайплайн — препроцесинг, QR, детекція таблиці та чорнил, PaddleOCR для друкованого тексту, EasyOCR для рукописних вимірювань.
  2. TypeScript-оркестрація — виклики API, нормалізація схеми (zod), збір артефактів у data/output/{imageId}/.
  3. Vision LLM (OpenRouter) — три проходи: шапка, рядки таблиці, сітка вимірювань.
  4. Confidence engine — злиття сигналів OCR + LLM + CV, доменна валідація та verify-pass другою моделлю.
  5. Golden set та бенчмарки — редактор golden у браузері, evaluate, порівняння моделей за точністю/часом/вартістю; окремий шлях fine-tune TrOCR (датасет, notebook, документація).

Оператор бачить підсвічування сумнівних полів і виправляє до вивантаження, а не приймає «сирий» OCR як істину.

Архітектура і стек

Оркестрація: TypeScript, Node (tsx), sharp, zod, dotenv / undici.

Розпізнавання: Python (requirements.txt), PaddleOCR, EasyOCR, опціонально TrOCR + Jupyter notebook для дообучення.

LLM-слой: OpenRouter (ключі в .env), багатопрохідні промпти під структуру форми УЗТ.

Дані: data/golden (шаблони, labels, jsonl), data/erp-cache, вихідні preprocessed.jpg, cv.json, result.json, review.html, review.csv, заглушка legacy-payload.json.

Документація: пілот, hardware requirements, порівняння OCR vs ERP, runbooks по TrOCR та lab-eval loop.

Розподіл мов у репозиторії: TypeScript (48%), Python (37%), HTML (15%), Jupyter (1%).

Ключові функції

  • Розпізнавання одного файлу та пакетний режим (recognize, recognize:batch, recognize:cv-only).
  • Звіт для перевірки з кольоровою кодуванням за порогами CONFIDENCE_OK / CONFIDENCE_REVIEW.
  • Оцінка на golden set і bootstrap датасету для TrOCR.
  • Браузерний редактор golden (golden:edit) для розмітки еталонів.
  • Бенчмарк моделей: точність, час, вартість API.
  • Документований шлях до ERP-інтеграції без змішування пілота та прод-контракту.

Результат

Пілот закриває ключовий сценарій: з фото черновика УЗТ отримується перевіряємий структурований результат та артефакти для оператора. Є контур якості (golden / evaluate / benchmark) та план fine-tune TrOCR під доменні рукописні цифри. Проект в активній розробці; вивантаження в ERP винесено на другу фазу через legacy-payload.

Репозиторій закритий — в портфоліо зафіксовані архітектура та стек без публікації сирих форм і моделей замовника.

Що б покращив

Довів би verify-pass і пороги confidence до калібровки на більшому golden set, додав би e2e на CI з фікстурами без секретів API і стабілізував би контракт legacy-payload з власниками ERP до широкого rollout.

Часті запитання

Що розпізнає ai-vision?

Рукописні чернетки форм ультразвукового контролю товщини (УЗТ) — структурований JSON з оцінкою впевненості.

Який стек?

TypeScript-оркестрація, Python CV/OCR, vision LLM через OpenRouter, golden set і TrOCR fine-tune.

Інформація про проект

CommercialIn Development

  • Створено: 25 Jun 2026
  • Оновлено: 12 Sep 2026

Використані технології

TypeScriptPythonPaddleOCREasyOCRTrOCROpenRoutersharpzodJupyter

Мови

TypeScript (47.8%)Python (36.6%)HTML (14.6%)Jupyter Notebook (1%)