РАЗРАБОТКА ПРОГРАММНОГО ИНСТРУМЕНТА ДЛЯ АВТОМАТИЧЕСКОЙ ГЕНЕРАЦИИ КОДА PYTHON ПО ИЗОБРАЖЕНИЮ БЛОК-СХЕМЫ С ИСПОЛЬЗОВАНИЕМ КОМПЬЮТЕРНОГО ЗРЕНИЯ

РАЗРАБОТКА ПРОГРАММНОГО ИНСТРУМЕНТА ДЛЯ АВТОМАТИЧЕСКОЙ ГЕНЕРАЦИИ КОДА PYTHON ПО ИЗОБРАЖЕНИЮ БЛОК-СХЕМЫ С ИСПОЛЬЗОВАНИЕМ КОМПЬЮТЕРНОГО ЗРЕНИЯ

Авторы публикации

Рубрика

Информационные технологии

Просмотры

44

Журнал

Журнал «Научный лидер» выпуск # 20 (273), Май ‘26

Поделиться

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

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

Существует ряд работ, посвященных распознаванию блок-схем. Например, в исследовании Montellano et al. [1] используется Faster R-CNN и грамматический анализ для генерации C-кода. Другие подходы [2, 3] применяют CNN для классификации элементов и нейронные сети для учета связей. Однако многие из этих решений ориентированы на онлайн распознавание.

В данной работе предлагается автономная система для преобразования статического изображения блок-схемы в код Python. Основными вкладами являются: Интеграция современной модели YOLO для определения фигур и стрелок. Использование EasyOCR и постобработки для извлечения текста. Генерация Python-кода с сохранением структуры ветвлений. Графический интерфейс для интерактивной работы.

Разработанный преобразователь состоит из пяти основных модулей: Загрузка модели YOLO, загрузка изображения, определение фигур, извлечение текста, генерация кода. Графический интерфейс реализован на Tkinter и позволяет отображать исходное изображение, а также сгенерированный код в многострочном текстовом поле.

Для распознавания геометрических элементов используется YOLO в реализации ultralytics. Выбор YOLO обусловлен балансом между скоростью и точностью для объектов небольшого размера, таких как стрелки и текст внутри фигур. В процессе определения для каждого обнаруженного объекта извлекаются координаты, центр, тип фигуры и уверенность. Важной особенностью является необходимость определения стрелок. В отличие от работы [1], где использовалась Faster R-CNN с VGG-16, в нашем подходе YOLO обучается непосредственно на размеченных стрелках с направлением.

Для извлечения текстовых надписей применяется библиотека EasyOCR, которая использует CNN + LSTM архитектуру. В отличие от подхода Puigcerver [4], использованного в эталонной статье, наша система не требует отдельной нейросети для классификации символов, что упрощает реализацию, хотя может снижать точность на рукописном тексте с плохим почерком. В будущем планируется интеграция дообучаемого OCR с механизмом постоянного обучения, как описано в [1].

Модель YOLOv8n обучалась на 500 размеченных изображениях в течение 50 эпох. Средняя точность составила 84.2% по всем классам. Самые низкие показатели оказались у стрелок вверх (72%) и влево (68%) из-за частого перекрытия с линиями рамок. Для сравнения, в работе [1] средняя точность по фигурам также была высокой, но стрелки распознавались хуже (около 70%).

На тестовых изображениях с печатным текстом (шрифт Arial, размер 12-14 pt) EasyOCR достиг точности символов 94% и CER (Character Error Rate) 6%. На рукописных блок-схемах точность упала до 67%, что соответствует результатам, приведенным в [1] (66.7% для модели Puigcerver). Таким образом, для промышленного использования требуется адаптация OCR под почерк пользователя.

Из 56 тестовых изображений корректный ориентированный граф был построен для 42 (75%). Из них для 36 (64% от общего числа) был сгенерирован синтаксически верный код Python, который успешно выполнялся. На рисунке 1 показан пример входного изображения, а на рисунке 2 – сгенерированный код.

C:\Users\Some\AppData\Local\Microsoft\Windows\INetCache\Content.Word\TestIf.jpg

Рисунок 1. Пример входной блок-схемы (факториал)

Рисунок 2. Сгенерированный Python-код

В отличие от системы Montellano et al. [1], которая генерирует C-код и имеет 45% полностью успешных выполнений (правильный граф + код без ошибок), наша система достигла 64% успешных генераций. Это объясняется более надежным определением текста (EasyOCR против самодельной CNN+LSTM) и использованием современной YOLO вместо Faster R-CNN. Однако подход [1] лучше работает с рукописными стрелками за счет специализированного обучения на кривых линиях.

Список литературы

  1. C. D. B. Montellano, C. O. F. Campos Garcia, R. O. Cruz Leija. "Recognition of Handwritten Flowcharts using Convolutional Neural Networks". International Journal of Computer Applications, 2022
  2. W. Szwoch and M. Mucha. "Recognition of Hand Drawn Flowcharts". Advances in Intelligent Systems and Computing, vol. 184, pp. 65–72, 2013
  3. J. I. Herrera Camara. "Flow2Code: from hand-drawn flowcharts to code execution". Master thesis, Texas A&M University, 2017
  4. J. Puigcerver. "Are Multidimensional Recurrent Layers Really Necessary for Handwritten Text Recognition?". 14th IAPR International Conference on Document Analysis and Recognition (ICDAR), Kyoto, 2017, pp. 67–72
  5. S. Ren, K. He, R. Girshick, J. Sun. "Faster R-CNN: Towards real-time object detection with region proposal networks". Advances in Neural Information Processing Systems, 2015
  6. B. Schafer, M. Keuper, H. Stuckenschmidt. "Arrow RCNN for handwritten diagram recognition". IJDAR, vol. 24, pp. 3–17, 2021
  7. U. Marti and H. Bunke. "The IAM-database: An English Sentence Database for Off-line Handwriting Recognition". Int. Journal on Document Analysis and Recognition, vol. 5, pp. 39–46, 2002
Справка о публикации и препринт статьи
предоставляется сразу после оплаты
Прием материалов
c по
Осталось 5 дней до окончания
Размещение электронной версии
Загрузка материалов в elibrary
Публикация за 24 часа
Узнать подробнее
Акция
Cкидка 20% на размещение статьи, начиная со второй
Бонусная программа
Узнать подробнее