Генератор веб-интерфейсов - это инструмент для создания UI форм из шаблонов и генерации аннотированных скриншотов для наборов данных машинного обучения. Он предназначен для обучения нейронных сетей распознавать элементы интерфейса в приложениях с похожими UI. Формы создаются с использованием веб-технологий (HTML/CSS) и рендерятся с помощью ChromeDriver.
- Генерация веб-форм на основе JSON шаблонов с использованием HTML/CSS
- Создание скриншотов сгенерированных форм
- Аннотирование скриншотов с указанием позиций и типов элементов
- Поддержка различных типов виджетов и макетов
- Настройка через JSON файлы
Система состоит из:
-
Конфигурация - JSON файлы, определяющие:
- Свойства и стили виджетов
- Правила композиции
- Ограничения макета
- Визуальные стили
-
Ядро генератора - Создает веб-формы (HTML/CSS) путем:
- Парсинга конфигурационных файлов
- Построения деревьев виджетов
- Генерации HTML шаблонов
- Создания скриншотов
-
Интерфейс командной строки - Позволяет управлять процессом генерации HTML форм и их рендеринга:
- Указывать количество генерируемых форм
- Задавать выходные директории
- Настраивать параметры скриншотов
Генератор использует следующие JSON файлы:
Определяет атомарные (неделимые) виджеты, такие как кнопки и метки. Каждый виджет имеет:
name: Тип виджетаprob: Вероятность появленияstyle: Список применимых стилейsolo: Может ли виджет появляться только один раз
Определяет составные виджеты из других виджетов. Содержит:
name: Тип составного виджетаcontent: Список дочерних виджетов с позициямиgroup: Группы виджетов для альтернативного выбораrow/col: Позиции в сетке
Определяет контейнерные виджеты, содержащие другие виджеты. Включает:
name: Тип контейнераchildren: Разрешенные дочерние виджетыdirection: Направление компоновки (вертикальное/горизонтальное)nrows/ncols: Размеры сетки
Задает общие параметры формы:
root: Корневой контейнерный виджетmin/max_nwidgets: Диапазон количества виджетов на форму
Определяет визуальные стили для виджетов:
name: Идентификатор стиляwidget: Тип виджета, к которому применяетсяprops: Свойства стиля (цвета, шрифты и т.д.)
- Установить зависимости:
pip install -r requirements.txt-
Загрузить chromedriver и сохранить его в директорию
./driver -
Запустите генератор:
python -m web_gui_generator.main --count 100 --output ./screenshots- Просмотрите сгенерированные скриншоты и аннотации в выходной директории
--count: Количество генерируемых форм (обязательно)--output: Выходная директория для скриншотов--config: Путь к директории с конфигурацией--driver: Путь к исполняемому файлу ChromeDriver--help: Показать справку
Пример:
python -m web_gui_generator.main --count 50 --output ./dataset --config ./custom_configsГенератор создает:
- HTML/CSS файлы для каждой сгенерированной веб-формы
- Скриншоты в формате PNG
- JSON аннотации с:
- Позициями и размерами виджетов
- Типами виджетов
- Иерархической информацией
Пример аннотации:
{
"form_id": "12345",
"widgets": [
{
"type": "Button",
"position": [
100,
200
],
"size": [
80,
30
],
"text": "Submit"
},
{
"type": "Label",
"position": [
50,
100
],
"size": [
200,
20
],
"text": "Enter your name:"
}
]
}