Как мы за месяц создали приложение распознавания электрических схем

В кейсе рассказываем о том, как разработали ПО для распознавания отсканированных электрических схем и обеспечения их хранения в архиве

Задача и причина

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


 

Предыстория

Работая на предприятии, производящем электронное оборудование на должности инженера третьей категории, один наш коллега неоднократно запрашивал электрические схемы из архива. Чаще всего это были плохо читаемые схемы на бумаге разного качества, частично износившиеся со временем. Потом начали создавать электронные архивы, где все схемы хранятся в удобном виде, могут быть взяты одновременно несколькими людьми и даже переделаны при изменении элементной базы. В те времена переносом электрических схем с бумаги в электронный архив занимались начинающие разработчики либо действующие схемотехники. 

С тех пор прошло достаточно много времени, специалист стал все глубже погружаться в разработку решений в области компьютерного зрения, успел несколько лет поработать в SimbirSoft. И в один прекрасный день пришел заказчик, которому нужно быстро и качественно перенести электрические схемы из бумажного вида в электронный. Руководителю предприятия не хотелось тратить время опытных схемотехников, он мог выделить только несколько человек на проверку результата распознавания, а сам процесс должен был выполняться либо автоматически, либо сопровождаться инженерами более низкой категории.

Так мы и начали проект по разработке ПО с удобным интерфейсом для распознавания отсканированных электрических схем и обеспечения их хранения в архиве.

С чего начали

Сначала мы декомпозировали задачу и сформулировали вопросы, которые нужно было обсудить с заказчиком, в частности:

  • Какие типы схем мы будем распознавать?
  • Где взять данные?
  • Как будет выглядеть интерфейс для пользователя?
  • Для какой среды проектирования будем создавать файлы?

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

Чтобы решить вопрос с данными, мы обратились к открытым наборам размеченных изображений (датасетам) и нашли несколько открытых баз схем, размеченных для задачи детектирования (идентификации и определения расположения) объектов.

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

После согласования метода работы выбрали язык программирования Python и среду проектирования LTSpice из-за ее универсальности и возможности последующего экспорта в более сложные среды проектирования.

Как решали задачу

Сначала нам нужно было найти электрическую схему на изображении, ее границы.
 

Как мы за месяц создали приложение распознавания электрических схем
Рисунок 1. Исходная схема 

Для этого мы применили стандартные функции компьютерного зрения для поиска линий и контуров предполагаемых дефектов.

Путем подбора фильтров и различных алгоритмов предварительной обработки изображения пришли к компромиссному решению по удалению лишних объектов, а также поняли, что восстанавливать разрывы на схемах мы пока не можем, но можем настроить оповещение для пользователя, который запустил процесс распознавания.

Как мы за месяц создали приложение распознавания электрических схем
Рисунок 2. Результат первого этапа

После первого этапа приступили к детектированию элементов и надписей на схеме. Благодаря открытым дата-сетам и библиотекам по детектированию объектов и распознаванию символов мы приступили к обучению детектора электронных компонентов, распознаванию названий и номиналов (цифр, единиц измерений и пр).

В качестве классов детектируемых объектов выбрали стандартный список электронных компонентов. Точность обученного детектора на валидационном датасете составляла 95,3%. Предусмотрели и такой момент, что при усложнении схем будет увеличиваться список классов и размер дата-сета.

Как мы за месяц создали приложение распознавания электрических схем
Рисунок 3. Результат второго этапа



Для распознавания наименования компонента и номиналов применили стандартные OCR фреймворки — Tesseract и EasyOCR.

По результатам двух этапов мы получили список компонентов, их наименования и номиналы. Далее на основе этого списка сформировали .asc-файл для последующего использования в LTspice. Так как формат .asc является текстовым файлом с определенной структурой, это упрощает сохранение схемы без использования дополнительных библиотек и зависимостей. 

Как мы за месяц создали приложение распознавания электрических схем
Рисунок 3. Распознанная электрическая схема

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

Какие результаты получили

Мы научили алгоритм распознавать электрические схемы. Он может в десятки раз ускорять и упрощать работу опытных сотрудников, которые вместо творческой работы занимались рутиной. Более того, инструмент позволил заказчику сэкономить, ведь теперь работу по распознаванию можно поручить более низкоквалифицированному персоналу, задача которого будет состоять лишь в проверке и редактировании схем.

Саму систему спроектировали и разработали за 1 месяц. Большая часть времени ушла на создание дата-сета и проектирование удобного интерфейса. В итоге — цель разработки выполнена: загружая серию изображений чертежей в систему, пользователь тратил меньше времени на оцифровку документов. Его задачей было только проверять результат. Таким образом, за счет снижения загрузки схемотехников компания смогла увеличить прибыль, ускоряя процесс разработки приборов.

В будущем проект можно масштабировать до восстановления разрывов на схемах, проверки электрических схем на качество путем моделирования, проверки схем на соответствие ГОСТ, помощи схемотехнику при разработке электрических схем с помощью генеративных моделей.

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

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

Результат

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