Как мы научили нейросеть читать технические схемы и сразу считать их стоимость. computer vision.. computer vision. ocr.. computer vision. ocr. paddleocr.. computer vision. ocr. paddleocr. yolov8.. computer vision. ocr. paddleocr. yolov8. автоматизация.. computer vision. ocr. paddleocr. yolov8. автоматизация. машинное+обучение.. computer vision. ocr. paddleocr. yolov8. автоматизация. машинное+обучение. нейросети.. computer vision. ocr. paddleocr. yolov8. автоматизация. машинное+обучение. нейросети. Обработка изображений.. computer vision. ocr. paddleocr. yolov8. автоматизация. машинное+обучение. нейросети. Обработка изображений. промышленность.. computer vision. ocr. paddleocr. yolov8. автоматизация. машинное+обучение. нейросети. Обработка изображений. промышленность. цифровая трансформация.

Танцы с YOLO, OCR и пятнами от кофе

Когда думаешь о «цифровой трансформации» в промышленности, в голове обычно всплывают роботы, датчики, большие экраны и дроны, которые сами разносят детали по цеху. В реальности всё часто упирается в куда более прозаичные вещи.

Например — технические схемы. Представьте: целые шкафы с папками, где вперемешку свежие CAD-чертежи и сканы пожелтевших листов А3 с подписями от руки: «Смотри сюда», «замени резистор». Чтобы собрать спецификацию и посчитать стоимость, инженеру приходилось садиться с карандашом и Excel — и часами переписывать резисторы, транзисторы, конденсаторы, их номиналы и количество. Ошибся в одной букве или не заметил мелкий элемент — и вся цепочка снабжения поехала.

В какой-то момент мы, как разработчики, задали себе вопрос: «А почему в 2025 году до сих пор человек должен глазами считать резисторы на сканах, если есть компьютерное зрение и OCR?» Так и стартовал проект: сделать систему, которая за полминуты превратит «кривой скан схемы из прошлого века» в таблицу компонентов с готовой сметой.

Как мы научили нейросеть читать технические схемы и сразу считать их стоимость - 1

Как мы подошли к задаче

Мы решили собрать полноценный ML-пайплайн: сначала детектим элементы на схеме, потом распознаём их подписи, далее нормализуем параметры и связываем всё с прайс-листом поставщика.

То есть по сути у нас должно было получиться:
[скан] → [YOLO детектит компоненты] → [OCR вытаскивает текст] → [маппинг текста к компонентам] → [смета с ценой].

На слайде это выглядит красиво, а на практике — как всегда: куча нюансов, неочевидные баги и регулярки, которые внезапно стали нашими лучшими друзьями.

Подводные камни

Проект быстро отрезвил наши радужные ожидания.

Во-первых, мелкие элементы. YOLO не любит микроскопические «палки» среди сотен линий. Пришлось искусственно увеличивать их долю в обучающей выборке.

Во-вторых, фотографии. В архивах попадались такие ракурсы, что схема выглядела как абстрактная живопись. Здесь спасли алгоритмы deskew и perspective transform — научили систему выпрямлять кривые сканы.

И наконец, человеческий фактор. Один из инженеров зачем-то подписал рядом с резистором «Привет, Петя». OCR честно распознал, классификатор запутался, и мы долго смеялись. В итоге добавили правило: если в строке нет чисел или единиц измерения — это комментарий, а не спецификация.

Ниже  рассказываем подробнее. 

Как мы научили нейросеть читать технические схемы и сразу считать их стоимость - 2

Детекция компонентов: YOLO против чернильных пятен

Для распознавания графических элементов мы взяли YOLOv8. Ставка была на её скорость (на RTX 3090 мы получали ~35 FPS даже на больших схемах) и умение видеть маленькие объекты.

Датасет.
Мы собрали около 15 тысяч фрагментов схем. Разметку делали вручную — прямоугольники вокруг резисторов, диодов, транзисторов. Самая больная часть — старые чертежи. На одном листе мы всерьёз спорили: «Это проводка или это след от кружки?». В итоге размечали даже «анти-примеры» — кружки и пятна шли в отдельный класс «мусор», чтобы модель перестала путаться.

Аугментации.
Чтобы сеть меньше пугалась реальных сканов:
– крутили схемы под разными углами,
– добавляли Gaussian noise и blur,
– инвертировали цвета (многие фото были сняты на телефон с черным фоном).

Метрики.
На первых итерациях mAP@0.5 был ~0.82. На бумаге неплохо, но recall на реальных схемах падал — мелкие элементы терялись. Мы применили oversampling на редкие классы (например, крошечные конденсаторы) и докрутили гиперпараметры (augment=0.6, mosaic=0.5). Итог — mAP@0.5 ~0.91, recall ~0.88.

Как мы научили нейросеть читать технические схемы и сразу считать их стоимость - 3

Проблема масштаба: как подать большие схемы в YOLO.

YOLO «любит» картинки до 640–1280 px. Схема А1 или А0 туда не влезет, и просто уменьшить — значит потерять мелкие элементы. Решение → резка на тайлы: схему бьем на тайлы фиксированных размеров, делаем overlap (обычно 10–20%), чтобы объект на границе точно попал хотя бы в один тайл полностью.

Объекты на стыках.

Типичный баг: резистор попал на разрез → YOLO видит только половинку и теряет его. Мы дублируем разметку: если объект оказался на границе тайла, его метка копируется в оба тайла (но с урезанной частью). На инференсе, когда собираем предсказания обратно в «большую схему», используем NMS на глобальном уровне (по всей схеме). Дубликаты схлопываются. Если объект полностью распилило и он оказался меньше min_size — мы его удаляли из разметки на этом тайле (иначе сеть учится на «половинках»).

Баланс классов.

Редкие элементы (например, конденсаторы 1 мм) почти всегда «теряются». Использовали oversampling редких классов при тренировке. Иногда помогал copy-paste augmentation — вырезаем редкий компонент и вставляем в разные места схемы, но аккуратно (чтобы не получилось «нереалистично»).

OCR: расшифровка инженерных каракулей

Дальше нужно было «прочитать», что написано рядом с компонентами. Тут оказалось, что OCR — это отдельный ад.

Мы прогнали три движка:

  • Tesseract — быстро, но путал «О» и «0»;

  • EasyOCR — хорошо с латиницей, но хуже с кириллицей;

  • PaddleOCR — неожиданно отлично справился с инженерными шрифтами и не терял точек и запятых.

Выбрали PaddleOCR.

Ассоциатор текста и объектов.
OCR возвращает просто куски строк. Чтобы привязать «10k» к конкретному резистору R1, мы строили граф: каждая bbox-рамка текста и каждый найденный элемент — вершины. Связывали их по правилу «ближайший сосед + приоритет справа/сверху». Если рядом несколько подписей — выбирали ту, что содержит числовое значение или стандартные единицы (Ом, В, µF).

Нормализация параметров

Инженеры любят креативить в обозначениях. На схемах мы встречали «10k», «10к», «R=10k», «10kOhm», «10K0». Для компьютера это пять разных строк, для инженера — одно и то же.

Как мы научили нейросеть читать технические схемы и сразу считать их стоимость - 4

Мы собрали модуль нормализации: регулярки + словарь сокращений + простые эвристики. Теперь любая вариация превращается в каноническую форму, например:

  • 10k → 10000 Ω

  • 0.1uF → 1e-7 F

  • 47мкФ 16В → 47e-6 F, 16 V

Без этого шага связывать с прайс-листом было бы невозможно — система просто не поняла бы, что искать.

Маппинг и расчёт

Когда у нас есть список «компонент — параметр — количество», пора переходить к экономике.

Мы сделали гибридный модуль:

  1. Векторизуем описание (embedding номиналов, мощности, типа).

  2. Делаем fuzzy-matching по базе закупок.

  3. ML-классификатор ранжирует кандидатов.

Пример: «R1 10k ±5% 0.25W» сеть сопоставляет с конкретной строчкой в базе — «Резистор плёночный 10kΩ 0.25W ±5%, цена 0.03$».

Если совпадения нет, система показывает инженеру топ-3 варианта. В среднем 8 из 10 деталей подбираются автоматически. Оставшиеся 2 — уточняются вручную.

Что в итоге

Сегодня система выглядит так: вы загружаете чертеж, ждёте 30 секунд, и получаете на выходе Excel-спецификацию: что за детали, сколько штук и сколько это стоит по вашей закупочной базе.

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

Планы на будущее

Мы уже готовим следующие шаги:

  • Поддержка 3D-моделей компонентов, чтобы работать не только со схемами, но и с полноценными проектами.

  • Автоматическая проверка схем на ошибки: замыкания, несоответствие стандартам.

  • Интеграция с ERP — чтобы спецификация сразу превращалась в заявку на закупку.

Немного философии

В начале проекта инженеры откровенно скептически улыбались: «Посмотрим, как ваш ИИ отличит резистор от таракана на скане».

Через пару месяцев те же люди радовались, что скучная рутина ушла в прошлое. Теперь они проектируют, а не считают одинаковые резисторы.

Мы же получили редкий опыт: когда ML-решение работает не ради красивой демки, а действительно облегчает жизнь в цеху.

Автор: alexsphera

Источник

Rambler's Top100