Проект ScanToNeutral, описанный автором на Habr, решает задачу, которая на первый взгляд кажется простой: взять отсканированный бумажный чертёж и получить параметрическую 3D-модель. Однако на практике между «увидеть линии» и «понять деталь» лежит весь тот контекст, который инженер-конструктор считывает автоматически: отличает контур от размерной линии, основной вид от разреза, реальную длину от изображения с разрывом, а одну деталь от нескольких исполнений на одном листе. ScanToNeutral вырос именно из этой разницы — это не один алгоритм, а конвейер, где компьютерное зрение, OCR, правила, ручная проверка и CAD-адаптеры разделены на самостоятельные уровни.

Ключевая проблема, с которой столкнулись авторы, — чертёж для человека является языком, а для алгоритма на входе это растр: чёрные штрихи, текст, пятна, шум сканера. Ошибка первых версий была в том, что хотелось слишком рано перейти от пикселей к геометрии. На листе одинаково «линейно» выглядят принципиально разные сущности: контур детали, осевая линия, размерные и выносные линии, штриховка разреза, граница местного вида, линия разрыва, рамка таблицы. Даже если OCR идеально прочитал «Ø30d11», остаётся вопрос: к какому виду и к какому исполнению относятся эти данные. Поэтому в Dataset появился объект WorkingView — у каждого вида есть роль, тип, геометрия, ось или центр и признак участия в восстановлении 3D. Именно на этом уровне удобно объяснять систему неспециалисту: прежде чем «рисовать 3D», программа должна понять, на какую часть листа вообще стоит смотреть.

ПараметрСостояние
Цель и фокусСкан/PDF → Neutral Schema → параметрическая модель; сейчас — тела вращения
CADAutodesk Inventor и КОМПАС-3D через отдельные адаптеры
Dataset229 активных чертежей; в текущем аудите 29 проверено, 200 ожидают проверки
Исполнения и разрывы2 групповых чертежа и 2 таблицы исполнений; 5 чертежей с разрывами, 6 областей
Working View DetectormAP@0.50 = 0,7834; Recall@0.50 = 0,85; mean best IoU = 0,694
NVIDIA NemotronR&D-контур, не production

Первый MVP был намеренно узким: автор взял класс деталей, где путь к 3D понятен — тела вращения. Для втулки или ступенчатого вала можно восстановить половину продольного профиля относительно оси и выполнить вращение на 360°. Начальный прототип управлял Autodesk Inventor через API, но геометрия профиля была почти жёстко задана — это был способ проверить не ML, а конечную часть маршрута. Здесь обнаружился первый неприятный факт: CAD API сам по себе требует строгой инженерной дисциплины. Неправильно замкнутый профиль, неверная ориентация эскиза или неоднозначная операция ломают модель независимо от качества распознавания. Отсюда выросло важное разделение: распознавание не должно напрямую «тыкать кнопки» CAD. Сначала оно формирует описание того, что поняло, и только потом другой модуль пытается построить модель.

Архитектура использует Neutral Schema — промежуточное описание, не зависящее от конкретного CAD.

Архитектурный перелом произошёл, когда появился второй целевой CAD — КОМПАС-3D. Прежняя схема «распознали размер → сразу вызвали Inventor API» перестала масштабироваться. Так возникла Neutral Schema — промежуточное описание детали, не привязанное к конкретному API. В нейтральный слой постепенно попадают ось, профиль, отверстия, фаски, роли видов, исполнения, признаки разрывов и другие сущности. После этого два независимых адаптера строят модель в своих CAD. Это не только архитектурная аккуратность: два адаптера дают полезный тест. Если одна и та же Neutral Schema приводит к разной геометрии в Inventor и КОМПАС-3D, значит, где-то ошибка — либо в адаптере, либо в самой схеме.

На текущий момент в Dataset 229 активных чертежей, из которых в аудите проверено 29, остальные 200 ожидают проверки. Распознавание работает с двумя групповыми чертежами и двумя таблицами исполнений, пятью чертежами с разрывами и шестью областями. Working View Detector, baseline для детектора рабочей области и базовых линий, показывает mAP@0.50 = 0,7834, Recall@0.50 = 0,85 и mean best IoU = 0,694. NVIDIA Nemotron рассматривается как дополнение в проект, но вынесен в экспериментальную ветку и не может обойти валидатор — это R&D-контур, а не production.

Три вывода, к которым проект пришёл довольно быстро: чертёж приходится понимать иерархически; результаты распознавания лучше хранить в CAD-независимой Neutral Schema; ML полезен там, где правила хрупкие, а инженерные ограничения и финальная проверка должны оставаться детерминированными. Эта архитектура — не история «нейросеть всё решила», а инженерный разбор того, что сработало, что не сработало и почему архитектура проекта стала важнее конкретной модели ML.