Приложение для разметки извлекаемых пар "ключ-значение" из изображений. Позволяет настроить набор полей, значения которых нужно извлекать из изображений и запустить web интерфейс для выполнения разметки.
Все настройки задаются в файле config.json
. Пример конфигурационного файла:
{
"title": "Заголовок страницы",
"keys": [
{"name": "oneline_key", "type": "str", "title": "Однострочное поле: "},
{"name": "multiline_key", "type": "multiline_str", "title": "Многострочное поле: "},
{"name": "checkbox_key", "type": "checkbox", "title": "Чекбокс"},
{"name": "select_key", "type": "select", "options": ["value1", "value2", "value3"], "title": "Поле с выбором: "}
],
"sampling": "sequential",
"images_path": "images",
"output_path": "labeled",
"output_name": "labeled.json"
}
Используемые в разметке ключевые поля описываются в поле key
в виде списка словарей следующего вида:
{
"name": "идентификатор_ключа",
"type": "тип_ключа",
"title": "название_для_пользователя"
}
Поле name
используется в формируемом в результате разметке словаре. Поле title
можно не указывать, тогда оно будет совпадать с name
.
- Однострочное текстовое поле: тип
str
, можно не указывать - Многострочное текстовое поле: тип
multiline_str
- Чекбокс: тип
checkbox
- Поле с выбором: тип
select
, опции выбора задаются в полеoptions
Изображения, которые необходимо разметить должны находиться в папке, задаваемой параметром images_path
(по умолчанию images
). После разметки очередного изображения оно будет перемещаться в папку с размеченными изображениями, задаваемую параметром output_path
(по умолчанию labeled
, автоматически создаётся, если не существует при первом запуске). В этой же папке будет располагаться json файл, содержащий разметку. Имя файла с разметкой соответствует параметру output_name
(по умолчанию labeled.json
).
Разметкой является словарь, ключами в котором являются имена размеченных изображений, а значениями словари, с ключами, соответствующими полю name
в конфигурации ключевых полей. Результатом разметки изображения image.png
с описанным выше конфигом может быть такой файл:
{
"image.png": {
"oneline_key": "Одна единственная строка",
"multiline_key": "Первая строка\nВторая строка",
"checkbox_key": true,
"select_key": "value3"
}
}
Доступны два режима разметки, задаваемые с помощью параметра sampling
:
sequential
- изображения выбираются последовательно, упорядоченно по имени (используется по умолчанию)random
- изображения выбираются в случайном порядке
Перед первым запуском установите все зависимости:
pip install -r requirements.txt
После этого запустите систему разметки:
uvicorn main:app --reload