> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
Универсальный декодер документов, работающий на базе `unstructured` — извлекает любые распространенные форматы документов через единый сервис, обеспечивая полную отслеживаемость и интеграцию с библиотекой, регистрируя позиции источника в качестве метаданных графа знаний для обеспечения полной отслеживаемости.
## Проблема
В настоящее время TrustGraph имеет декодер, специфичный для PDF. Поддержка дополнительных форматов (DOCX, XLSX, PPTX и т.д.) требует значительных изменений.
## Решение
Мы предлагаем универсальный декодер, который будет поддерживать широкий спектр форматов документов. Этот декодер будет использовать библиотеку `unstructured` для извлечения текста и метаданных из документов.
## Архитектура
Универсальный декодер будет состоять из следующих компонентов:
***Входной компонент:** Принимает документ в качестве входных данных.
***Компонент извлечения:** Использует библиотеку `unstructured` для извлечения текста и метаданных из документа.
***Компонент формирования provenance:** Генерирует provenance-данные, которые содержат информацию о том, откуда взялся каждый фрагмент текста.
***Компонент выходных данных:** Выдает извлеченные данные и provenance-данные.
## Процесс
1. Декодер получает документ в качестве входных данных.
2. Декодер использует библиотеку `unstructured` для извлечения текста и метаданных из документа.
3. Декодер генерирует provenance-данные, которые содержат информацию о том, откуда взялся каждый фрагмент текста.
4. Декодер выдает извлеченные данные и provenance-данные.
## Форматы Документов
| Формат | MIME-тип | Поддержка страниц | Примечания |
|---|---|---|---|
| PDF | application/pdf | Да | Группировка по страницам |
| DOCX | application/vnd.openxmlformats... | Нет | Использование стратегии секций |
| PPTX | application/vnd.openxmlformats... | Да | Группировка по слайдам |
| XLSX/XLS | application/vnd.openxmlformats... | Да | Группировка по листам |
| HTML | text/html | Нет | Использование стратегии секций |
| Markdown | text/markdown | Нет | Использование стратегии секций |
| Plain | text/plain | Нет | Использование стратегии секций |
| CSV | text/csv | Нет | Использование стратегии секций |
| RST | text/x-rst | Нет | Использование стратегии секций |
| RTF | application/rtf | Нет | Использование стратегии секций |
| ODT | application/vnd.oasis... | Нет | Использование стратегии секций |
| TSV | text/tab-separated-values | Нет | Использование стратегии секций |
## Метаданные Provenance
Каждая сущность страницы/секции регистрирует метаданные о позиции в виде triple в `GRAPH_SOURCE`, обеспечивая полную отслеживаемость от triple в графе знаний обратно к исходным позициям в документе.
#### Существующие поля (уже в `derived_entity_triples`)
*`page_number` — номер страницы/листа/слайда (1-indexed, только для страниц)
*`char_offset` — смещение символов для этой страницы/секции в полном тексте
*`char_length` — длина текста для этой страницы/секции в документе
#### Новые поля (расширяем `derived_entity_triples`)
*`mime_type` — исходный формат документа (например, `application/pdf`)
*`element_types` — список категорий элементов `unstructured`, найденных на этой странице/секции (например, "Title,NarrativeText,Table")
*`table_count` — количество таблиц на этой странице/секции
*`image_count` — количество изображений на этой странице/секции
| Section | `tg:Section` | Для не-page форматов (DOCX, HTML, MD и т.д.) |
| Image | `tg:Image` | Встроенные изображения (сохранены, не обрабатываются) |
| Chunk | `tg:Chunk` | Выход из chunker |
| Subgraph | `tg:Subgraph` | Выход из extraции KG |
Тип устанавливается декодером в зависимости от группировки по страницам или выдачи всей документа в виде одной сущности. `derived_entity_triples` добавляет необязательный параметр `section` — если он установлен, сущность имеет тип `tg:Section` вместо `tg:Page`.
#### Полная цепочка provenance
```
Triple KG
→ subgraph (provenance)
→ chunk (char_offset, char_length within page)
→ page/section (page_number, char_offset, char_length within doc, mime_type, element_types)
→ document (оригинальный файл в librarian)
```
Каждый линк — это набор triple в графе `GRAPH_SOURCE`.
## Конфигурация Сервиса
Аргументы командной строки:
```
--strategy Стратегия партиционирования: auto, hi_res, fast (по умолчанию: auto)
--languages Разделенные кодами OCR (по умолчанию: eng)
Предлагаемая архитектура универсального декодера представляет собой мощное решение для обработки широкого спектра форматов документов. Она обеспечивает гибкость, масштабируемость и возможность интеграции с существующими системами. При правильной реализации и тестировании, эта архитектура позволит эффективно извлекать данные из различных источников и использовать их в аналитических целях.