Spaces:
Runtime error
Runtime error
| # Универсальный парсер документов | |
| Библиотека `ntr_fileparser` предоставляет универсальный интерфейс для извлечения структурированных данных из документов различных форматов. | |
| ## Возможности | |
| - Извлечение текстовых блоков, таблиц, изображений и формул из документов | |
| - Поддержка различных форматов файлов: | |
| - XML (реализовано) | |
| - DOCX (реализовано) | |
| - PDF (в разработке) | |
| - HTML (в разработке) | |
| - Markdown (в разработке) | |
| - Email (в разработке) | |
| - DOC (в разработке) | |
| - Единый интерфейс для работы со всеми форматами | |
| - Расширяемая архитектура для добавления новых парсеров | |
| ## Установка | |
| ```bash | |
| pip install git+ssh://git@gitlab.ntrlab.ru:textai/parsers/parser.git | |
| ``` | |
| ## Использование | |
| ### Базовый пример | |
| ```python | |
| from ntr_fileparser import UniversalParser | |
| # Создание экземпляра парсера | |
| parser = UniversalParser() | |
| # Парсинг документа по пути к файлу | |
| document = parser.parse_by_path("path/to/document.xml") | |
| # Доступ к данным | |
| print(f"Название документа: {document.name}") | |
| print(f"Количество параграфов: {len(document.paragraphs)}") | |
| print(f"Количество таблиц: {len(document.tables)}") | |
| ``` | |
| ### Работа с содержимым файла | |
| ```python | |
| from ntr_fileparser import UniversalParser, FileType | |
| # Создание экземпляра парсера | |
| parser = UniversalParser() | |
| # Открытие файла | |
| with open("path/to/document.xml", "rb") as f: | |
| # Парсинг содержимого файла с указанием типа файла | |
| # Тип файла можно указать как объект FileType или как строку расширения | |
| document = parser.parse(f, FileType.XML) | |
| # Или | |
| document = parser.parse(f, ".xml") | |
| if document: | |
| # Работа с документом | |
| for paragraph in document.paragraphs: | |
| print(paragraph.text) | |
| ``` | |
| ### Применение функций к документу | |
| ```python | |
| from ntr_fileparser import UniversalParser | |
| # Создание экземпляра парсера | |
| parser = UniversalParser() | |
| # Парсинг документа | |
| document = parser.parse_by_path("path/to/document.xml") | |
| # Применение функции ко всем текстовым элементам документа | |
| document.apply(lambda text: text.upper()) | |
| ``` | |
| ## Архитектура | |
| Система построена на основе следующих компонентов: | |
| 1. **UniversalParser** - основной класс, предоставляющий единый интерфейс для работы со всеми форматами документов. | |
| 2. **AbstractParser** - абстрактный класс парсера, определяющий интерфейс для всех конкретных парсеров. | |
| 3. **ParserFactory** - фабрика парсеров, отвечающая за выбор подходящего парсера для конкретного документа. | |
| 4. **FileType** - перечисление поддерживаемых типов файлов. | |
| 5. **Специализированные парсеры** - классы для работы с конкретными форматами документов (XMLParser, PDFParser и т.д.). | |
| 6. **Структуры данных** - классы для представления структуры документа (ParsedDocument, ParsedTextBlock, ParsedTable и т.д.). | |
| ### Диаграмма архитектуры | |
|  | |
| ## Требования | |
| - Python 3.11+ | |
| - Зависимости автоматически устанавливаются при установке библиотеки | |
| ## Разработка | |
| Для разработки и тестирования: | |
| ```bash | |
| git clone git@gitlab.ntrlab.ru:textai/parsers/parser.git | |
| cd parser | |
| pip install -e . | |
| ``` | |