Настройка шаблонов сегментации

segmentation

Параметры сегментации

Шаблоны настраиваются в проекте на вкладке Интерфейс. Общие параметры настройки интерфейса описаны в разделе Блок Config. Также в блоке Config есть специфические параметры для шаблонов сегментации:

Параметр Обязательность Тип Описание

groupsEnabled

Нет

boolean

Возможность разметчикам группировать фрагменты. Значение по умолчанию — false

rotationEnabled

Нет

boolean

Возможность поворота изображения во время разметки. Доступно для сегментации изображений и PDF. Значение по умолчанию — false

expandWord

Нет

boolean

Если true, то выделяется все слово. Доступно для сегментации текста. Значение по умолчанию — false

expandWordRegExp

Нет

string

Регулярное выражение для определения границы слова. Доступно для сегментации текста. Значение по умолчанию — "[^\\s.,]

entities

Да

object

Классы для сегментации

onthologyStructure

Нет

object

Структура онтологии

customEntitiesEnabled

Нет

boolean

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

stepSize

Нет

number

Размер шага перемотки для сегментаций видео и аудио. Значение по умолчанию для сегментации аудио — 0.01, для сегментации видео — 0.0333

searchAutoFocus

Нет

boolean

Возможность автофокусировки на поле поиска классов при загрузке задания

annotationAutoOpen

Нет

boolean

Возможность автоматического отображения аннотаций при выделении фрагмента или выборе класса

entityChangeIcon

Нет

boolean

Возможность разметчикам изменить класс фрагмента на другой с таким же инструемнтом

Настройка классов

Классы настраиваются в объекте entities:

Параметр Обязательность Тип Описание

id

Да

string

Идентификатор класса

name

Да

string

Название класса

tooltip

Нет

string

Подсказка к классу. Можно использовать HTML-разметку для оформления текста

color

Нет

string

Цвет класса

type

Да

string

Тип инструмента выделения фрагментов. Используется для сегментации изображений, аудио и видео

hotKey

Нет

string

Горячая клавиша для класса. Можно использовать цифры и буквы

maxAmount

Нет

number

Максимальное количество фрагментов данного класса. Используется во вложенных классах.

options

Нет

object

Объект, в котором можно указать дополнительные настройки. Используется в сегментации изображений для настройки инструмента Прямоугольник. Подробнее — в пункте Поворот фрагмента.

fields

Нет

array

Массив для настройки аннотации класса

{
    "id": "entity-1",
    "name": "Первый класс",
    "tooltip": "Подсказка к классу",
    "type": "polygon",
    "hotKey": "1"
}

Результат разметки

Параметр Обязательность Тип Описание

marks

Да

array

Массив размеченных фрагментов

meta

Нет

object

Метаинформация об объектах разметки. Например в сегментации изображений imageWidth и imageHeight

Аннотация

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

Чтобы аннотация автоматически отображалась разметчикам, используйте параметр annotationAutoOpen в блоке Config.

Аннотация для каждого класса настраивается в объекте fields.

example annotation
Параметр Обязательность Тип Описание

type

Да

string

Тип элемента. Возможные значения:

input — поле для ввода однострочного текста;

textarea — поле для ввода многострочного текста;

checkbox — чекбокс;

radio — радиокнопка;

select — поле с выбором значения;

name

Да

string

Ключ элемента, должен быть уникальным в рамках класса. Отображается в результатах разметки

title

Нет

string

Заголовок элемента

placeholder

Нет

string

Подсказка в полях для ввода текста

options

Нет

array

Массив с вариантами ответов для типов radio, checkbox и select. Содержит параметры:

title — отображается разметчикам; — value — отображается в результатах разметки

"entities": [
    {
      "id": "entity-1",
      "name": "1. Первый класс",
      "tooltip": "Подсказка к классу",
      "hotKey": "1",
      "entities": [
        {
          "id": "entity-12",
          "name": "Подкласс",
          "tooltip": "Подсказка к классу",
          "color": "red",
          "hotKey": "A"
        }
      ],
      "fields": [
        {
          "type": "input",
          "name": "input",
          "title": "Название объекта",
          "placeholder": "Объект"
        },
        {
          "type": "textarea",
          "name": "textarea",
          "title": "Описание",
          "placeholder": "Одно или два предложения об объекте"
        },
        {
          "type": "checkbox",
          "name": "checkbox",
          "title": "Объект правильный",
          "options": [
            {
              "title": "Да",
              "value": "yes"
            },
            {
              "title": "Нет",
              "value": "no"
            }
          ]
        },
        {
          "type": "radio",
          "name": "radio",
          "title": "Объект правильный",
          "options": [
            {
              "title": "Да",
              "value": "yes"
            },
            {
              "title": "Нет",
              "value": "no"
            }
          ]
        },
        {
          "type": "select",
          "name": "select",
          "title": "Цвет объекта",
          "options": [
            {
              "title": "Красный",
              "value": "red"
            },
            {
              "title": "Желтый",
              "value": "yellow"
            },
            {
              "title": "Зеленый",
              "value": "green"
            }
          ]
        }
      ]
    }
]

Подсказки

Чтобы разметчики не запутались в классах сегментации, добавьте всплывающие подсказки в параметре tooltip в блоке Config.

При верстке подсказки вы можете использовать основные инструменты оформления текста:

  • \n — перенос на новую строку.

  • \t — табуляция.

  • <b> — жирный текст.

  • <i> — курсив.

  • <u> — подчеркнутый текст.

Вы также можете настроить ширину окна всплывающей подсказки в блоке CSS. Например:

Ширина окна подсказки
.tooltip-container {
    max-width: 500px;
    width: 500px;
}

Группировка фрагментов

Если нужно, чтобы разметчики дополнительно группировали фрагменты размеченных объектов, добавьте в блоке Config параметр "groupsEnabled": true.

Функция доступна в следующих шаблонах:

  • Сегментация текста.

  • Сегментация изображений.

  • Шаблоны раздела Диалоги.

  • Шаблоны раздела Дополнительные.

Режим Read only

Шаблоны сегментации аудио, видео, изображений поддерживают режим "read only". В этом режиме будут отключены любые действия, направленные на редактирование результатов разметки или создание новых элементов. Интерактивность и вся функциональность, нужная для просмотра и валидации разметки, сохранится.

Панель онтологии в режиме "read only" продолжает быть доступной для редактирования.

Для включения режима "read only" необходимо в теге нужного компонента указать атрибут readOnly="true".

Пример. Блок HTML
----
<tm-forms-audio src="{{audio}}" readOnly="true"></tm-forms-audio>
----

Сегментация текста

Онтология

Онтология — это вкладка в задачах сегментации текста, где разметчики могут указать дополнительную информацию о тексте.

Например, если объект разметки — юридический документ, то для него можно указать тип документа, реквизиты заказчика и исполнителя и т. д. Также можно добавить в онтологию выделенный фрагмент текста, например, дату или сумму договора.

Онтология настраивается в блоке Config в параметре onthologyStructure. Здесь вы можете добавлять элементы онтологии и настраивать их формат с помощью параметра type. Возможные значения параметра:

  • node — раздел;

  • dynamicNode — раздел с возможностью удаления. Для dynamicNode можно задать количество дублирующих разделов с помощью атрибутов min и max;

  • textField — поле для ввода однострочного текста;

  • textArea — поле для ввода многострочного текста;

  • checkbox — чекбокс;

  • radio — радиокнопка;

  • select — поле с выбором значения;

  • fragment — добавление фрагмента текста с классом.

Параметры:

Параметр Обязательность Тип Описание

name

Да

string

Заголовок раздела или элемента

type

Да

string

Тип элемента. Возможные значения см. выше

fields

Нет

array

Массив с вложенными элементами. Используется в элементах: node, dynamicNode

required

Нет

boolean

Признак обязательности элемента

availableClasses

Нет

string[]

Доступные для выбора id классов. При отсутствии этой опции разрешается выбирать любой.

Используется в элементах: fragment

min

Да — для dynamicNode

number

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

Используется в элементах: fragment и dynamicNode

max

Да — для dynamicNode

number

Максимальное количество фрагментов, которые пользователь может выделить в тексте.

Используется в элементах: fragment и dynamicNode

values

Да — для checkbox, radio, select

array

Массив с вариантами ответа. Содержит параметры:

* key — ключ варианта;

* value — название варианта.

Используется в элементах: checkbox, radio, select

Пример:

"onthologyStructure": {
        "name": "Реквизиты документа",
        "type": "node",
        "fields": [
            {
                "name": "Общие реквизиты",
                "type": "node",
                "fields": [
                    {
                        "name": "Номер и дата",
                        "type": "textField",
                        "required": false
                    },
                    {
                        "name": "Тип документа",
                        "type": "select",
                        "values": [
                            {
                                "key": "1",
                                "value": "Договор"
                            },
                            {
                                "key": "2",
                                "value": "Соглашение"
                            },
                            {
                                "key": "3",
                                "value": "Уведомление"
                            }
                        ]
                    }
                ]
            },
            {
                "name": "Заказчик",
                "type": "dynamicNode",
                "min": 1,
                "max": 7,
                "fields": [
                    {
                        "name": "Название организации",
                        "type": "textField",
                        "required": true
                    },
                    {
                        "name": "Реквизиты организации",
                        "type": "fragment",
                        "availableClasses": ["entity-1", "entity-2"]
                        "min": 0,
                        "max": 7
                    }
                ]
            },
            {
                "name": "Исполнитель",
                "type": "dynamicNode",
                "min": 1,
                "max": 7,
                "fields": [
                    {
                        "name": "Название организации",
                        "type": "textField",
                        "required": true
                    },
                    {
                        "name": "Реквизиты организации",
                        "type": "fragment",
                        "min": 1,
                        "max": 7
                    }
                ]
            }
        ]
    }

Вложенность классов

Вы можете настроить связь между классами типа «родитель-ребенок». Например, разметчик должен выделить в тексте фрагмент с классом «Адрес», и только после этого ему станут доступны дочерние классы «Город» и «Улица».

Чтобы вложить один класс в другой, добавьте в родительский класс массив entities. Например:

"entities": [
    {
      "id": "entity-1",
      "name": "1. Первый класс",
      "tooltip": "Подсказка к классу",
      "hotKey": "1",
      "entities": [
        {
          "id": "entity-12",
          "name": "Подкласс",
          "tooltip": "Подсказка к классу",
          "color": "red",
          "hotKey": "A"
        }
      ]
    }
]

Сегментация изображений

Вы также можете загрузить отдельные классы для каждой задачи, используя SDK. Пример смотрите в разделе Примеры запросов.

Инструменты выделения

Если вы выбрали шаблон Сегментация изображений, настройте в каждом классе инструмент выделения фрагментов. Для этого укажите название инструмента в параметре type в блоке Config:

  • polygon — многоугольник.

  • bbox — прямоугольник.

  • ellipse — эллипс.

  • brush — кисть.

  • smart_brush - умная кисть

  • keypoint — ключевые точки.

Поворот изображения

Что бы включить возможность поворота изображения во время разметки, укажите параметр "rotationEnabled": true в CONFIG секции настройки интерфейса.

Поворот изображения осуществляется на 90, 180 и 270 градусов. Угол поворота не влияет на результат разметки и применяется только к отображению в интерфейсе.

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

Пример ответа разметчика:

{
  "marks": [],
  "rotation": 90,
  "imageMeta": {
    "width": 654,
    "height": 846
  }
}

Поворот фрагмента

Чтобы настроить возможность поворота выделенного фрагмента для инструмента Прямоугольник, укажите в нужном классе параметр "rotated": true в объекте options. Например:

{
  "id": "entity-2",
  "name": "Второй класс",
  "color": "green",
  "type": "bbox",
  "options": {"rotated": true}
},

Штриховка и заливка фрагментов

Чтобы сделать фрагменты более заметными на изображении, настройте штриховку и заливку. Для этого добавьте в класс объект fill с параметрами:

  • stripesSize — толщина линий штриховки.

  • backgroundEnabled — признак того, требуется ли заливка фрагмента.

Пример:

"fill": {
    "stripesSize": 4,
    "backgroundEnabled": true
},

Функция доступна для инструментов:

  • многоугольник (polygon),

  • прямоугольник (bbox),

  • эллипс (ellipse).

Ограничение количества keypoint

У инструмента keypoint есть возможность ограничить количество точек, которые сможет проставить разметчик в одном классе Для этого в конфигурации класса необходимо добавить аттрибут "max":

Пример:

{
    "id": "keypoint-entity-id",
    "name": "Углы треугольника",
    "max": 3,
    "color": "red",
    "type": "keypoint"
}