Структура распознанного документа
Возвращается структура ParsedDocument, структура возвращается в виде Json.
Dedoc поддерживает линейную и древовидную структуру. В случае линейной структуры все строки документа являются
наследниками корня дерева. В случае древовидной структуры (tree) dedoc пытается восстановить логическую структуру
документа в виде дерева.
ParsedDocument
- version: str (обязательное поле) -
версия Dedoc
- warnings: List[str] (обязательное поле) -
любые ворнинги, возникшие в процессе обработки документа
- metadata: DocumentMetadata (обязательное поле) -
метаинформация документа
- content: DocumentContent (обязательное поле) - разобранная
структура документа
- attachments: List[ ParsedDocument ] (необязательное поле) -
вложенные документы, возвращается только
если задано условие обработки вложенных файлов.
- uid: str (обязательное поле) - уникальный идентификатор документа (пример: "doc_uid_auto_ba73d76a-326a-11ec-8092-417272234cb0")
- file_name: str (обязательное поле) - имя файла (пример: "example.pdf")
- size: int (обязательное поле) - размер файла в байтах (пример: 20060)
- modified_time: int (обязательное поле) - дата модификации документа в формате UnixTime (пример: 1590579805)
- created_time: int (обязательное поле) - дата создания документа в формате UnixTime (пример: 1590579805)
- access_time: int (обязательное поле) - дата доступа к файло в формате UnixTime (пример: 1590579805)
- file_type: str (необязательное поле) - mime-тип файла (пример:
"application/pdf")
- other_fields: dict (необязательное поле) - у каждого типа файла свой набор метаинформации,
здесь представлено подробное описание поля other_fields
DocumentContent. Структура содержимого документа
- tables: List[Table] (обязательное поле) - список таблиц
- structure: TreeNode (обязательное поле) - древовидная структура
документа
Table. Разобранные таблицы.
- cells: List[List[str]] (обязательное поле) - список списков строк таблицы, строка
таблицы представляет из себя списко содержимого ячеек. Ячейка содрежит текст,
- metadata: TableMetadata (обязательное поле) - метаинформация о
таблице
- uid: str (обязательное поле) - уникальный идентификатор таблицы.
- page_id: int (необязательное поле) - номер страницы на которой начинается таблица.
- is_inserted: bool (необязательное поле) - была ли таблица встроена в тело документа.
TreeNode. Древовидная структура документа.
- node_id : str (обязательное поле) - идентификатор элемента документа. Уникален в рамках одного
дерева (т.е. в этом дереве не будет другого такого node_id, а в attachment может встретиться)
Идентификатор имеет вид 0.2.1 где каждое число символизирует порядковый номер на соотвтетствующем уровне
иерархии.
Например node_id 0.2.1 означает что этот элемент это вторая подглова третьей главы
(нумерация с 0, первое число это корень документа);
- text: str (обязательное поле) - текст элемента;
- annotations: List[ Annotation ] (обязательное поле) - поле описывает
какие-либо свойства текста, например жирность, размер шрифта etc.
- metadata: ParagraphMetadata (обязательное поле) -
метоинформация, относящаяся ко всему субпараграфу, например номер страницы и положение на этой странице.
- subparagraphs: List[ TreeNode ] (обязательное поле) -
"дети" текущего элемента (например подглавы для главы). Структура "детей" аналогична текущей.
Annotation. Аннотации текста.
- start : int (обязательное поле) - индекс начала аннотации.
- end : int (обязательное поле) - индекс конца аннотации.
Равен индексу последнего символа (относящегося к данной аннотации) + 1.
Например, если в строке проаннотирован только первый символ, то start = 0, end = 1;
если проаннотирована вся строка s, то start = 0, end = длина s.
- name : string (обязательное поле) - тип аннотации (размер шрифта, курсив и т.д.).
- value : str (обязательное поле) - значение аннотации
(подробнее в ConcreteAnnotations).
Concrete annotations. Конкретные виды аннотаций.
- AlignmentAnnotation : выравнивание текста. Значение поля name = "alignment".
Значением поля value может быть "left" (выравнивание по левому краю), "right" (выравнивание по правому краю),
"both" (выравнивание по обоим краям), "center" (выравнивание по центру).
- BoldAnnotation : жирность текста. Значение поля name = "bold".
Значением поля value может быть "True", если шрифт жирный и "False" иначе.
- IndentationAnnotation : отступ от левого края страницы.
Для документов в формате docx хранится отступ от внутренних границ документа
(не учитывается отступ от края страницы). Значение поля name = "indentation".
Значением поля value может быть любое действительное число, сконвертированное в строку.
Для документов в формате docx отступ измеряется в двадцатых пункта (1/1440 дюйма).
- ItalicAnnotation : выделен ли текст курсивом. Значение поля name = "italic".
Значением поля value может быть "True", если текст выделен курсивом и "False" иначе.
- SizeAnnotation : размер шрифта в пунктах (1/72 дюйма). Значение поля name = "size".
Значением поля value может быть любое действительное число, сконвертированное в строку.
- StyleAnnotation : название стиля, примененного к тексту, например, "heading 1".
Значение поля name = "style".
Значением поля value может быть любая строка.
- Table Annotation : является ли строка ссылкой на таблицу. Значение поля name = "table".
Значение поля value = уникальный идентификатор таблицы.
- UnderlinedAnnotation : выделен ли текст подчеркиванием. Значение поля name = "underlined".
Значением поля value может быть "True", если текст выделен подчеркиванием и "False" иначе.
- 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']
- predicted_classes : Dict[str -> float] (необязательное поле) - результаты работы
классификатора,
тип параграфа -> вероятность того, что параграф относится к такому типу, список ключей зависит от типа
документа.
- page_id : int (необязательное поле) - страница на которой начинается этот параграф.
- line_id : int (необязательное поле) - номер строки, на которой начинается этот параграф.