Структура распознанного документа

Возвращается структура ParsedDocument, структура возвращается в виде Json.

Dedoc поддерживает линейную и древовидную структуру. В случае линейной структуры все строки документа являются наследниками корня дерева. В случае древовидной структуры (tree) dedoc пытается восстановить логическую структуру документа в виде дерева.

ParsedDocument

  1. version: str (обязательное поле) - версия Dedoc
  2. warnings: List[str] (обязательное поле) - любые ворнинги, возникшие в процессе обработки документа
  3. metadata: DocumentMetadata (обязательное поле) - метаинформация документа
  4. content: DocumentContent (обязательное поле) - разобранная структура документа
  5. attachments: List[ ParsedDocument ] (необязательное поле) - вложенные документы, возвращается только если задано условие обработки вложенных файлов.

DocumentMetadata. Метаинформация документа

  1. uid: str (обязательное поле) - уникальный идентификатор документа (пример: "doc_uid_auto_ba73d76a-326a-11ec-8092-417272234cb0")
  2. file_name: str (обязательное поле) - имя файла (пример: "example.pdf")
  3. size: int (обязательное поле) - размер файла в байтах (пример: 20060)
  4. modified_time: int (обязательное поле) - дата модификации документа в формате UnixTime (пример: 1590579805)
  5. created_time: int (обязательное поле) - дата создания документа в формате UnixTime (пример: 1590579805)
  6. access_time: int (обязательное поле) - дата доступа к файло в формате UnixTime (пример: 1590579805)
  7. file_type: str (необязательное поле) - mime-тип файла (пример: "application/pdf")
  8. other_fields: dict (необязательное поле) - у каждого типа файла свой набор метаинформации, здесь представлено подробное описание поля other_fields

DocumentContent. Структура содержимого документа

  1. tables: List[Table] (обязательное поле) - список таблиц
  2. structure: TreeNode (обязательное поле) - древовидная структура документа

Table. Разобранные таблицы.

  1. cells: List[List[str]] (обязательное поле) - список списков строк таблицы, строка таблицы представляет из себя списко содержимого ячеек. Ячейка содрежит текст,
  2. metadata: TableMetadata (обязательное поле) - метаинформация о таблице

TableMetadata. Метаинформация таблицы.

  1. uid: str (обязательное поле) - уникальный идентификатор таблицы.
  2. page_id: int (необязательное поле) - номер страницы на которой начинается таблица.
  3. is_inserted: bool (необязательное поле) - была ли таблица встроена в тело документа.

TreeNode. Древовидная структура документа.

  1. node_id : str (обязательное поле) - идентификатор элемента документа. Уникален в рамках одного дерева (т.е. в этом дереве не будет другого такого node_id, а в attachment может встретиться) Идентификатор имеет вид 0.2.1 где каждое число символизирует порядковый номер на соотвтетствующем уровне иерархии.
    Например node_id 0.2.1 означает что этот элемент это вторая подглова третьей главы (нумерация с 0, первое число это корень документа);
  2. text: str (обязательное поле) - текст элемента;
  3. annotations: List[ Annotation ] (обязательное поле) - поле описывает какие-либо свойства текста, например жирность, размер шрифта etc.
  4. metadata: ParagraphMetadata (обязательное поле) - метоинформация, относящаяся ко всему субпараграфу, например номер страницы и положение на этой странице.
  5. subparagraphs: List[ TreeNode ] (обязательное поле) - "дети" текущего элемента (например подглавы для главы). Структура "детей" аналогична текущей.

Annotation. Аннотации текста.

  1. start : int (обязательное поле) - индекс начала аннотации.
  2. end : int (обязательное поле) - индекс конца аннотации. Равен индексу последнего символа (относящегося к данной аннотации) + 1. Например, если в строке проаннотирован только первый символ, то start = 0, end = 1; если проаннотирована вся строка s, то start = 0, end = длина s.
  3. name : string (обязательное поле) - тип аннотации (размер шрифта, курсив и т.д.).
  4. value : str (обязательное поле) - значение аннотации (подробнее в ConcreteAnnotations).

Concrete annotations. Конкретные виды аннотаций.

ParagraphMetadata. Метаинформация, относящаяся к параграфу.

  1. paragraph_type : str (обязательное поле) - тип параграфа (заголовок, элемент списка и так далее). Возможные значения зависят от типа документа. Значения по умолчанию: ['root', 'paragraph', 'raw_text', 'list', 'list_item', 'named_header'] Значения для типа документа='law': ['root', 'raw_text', 'struct_unit', 'item', 'article', 'subitem', 'footer', 'header', 'title', 'part']
  2. predicted_classes : Dict[str -> float] (необязательное поле) - результаты работы классификатора, тип параграфа -> вероятность того, что параграф относится к такому типу, список ключей зависит от типа документа.
  3. page_id : int (необязательное поле) - страница на которой начинается этот параграф.
  4. line_id : int (необязательное поле) - номер строки, на которой начинается этот параграф.