Spaces:
Sleeping
Sleeping
# Универсальный парсер документов | |
Библиотека `ntr_fileparser` предоставляет универсальный интерфейс для извлечения структурированных данных из документов различных форматов. | |
## Возможности | |
- Извлечение текстовых блоков, таблиц, изображений и формул из документов | |
- Поддержка различных форматов файлов: | |
- XML (реализовано) | |
- DOCX (реализовано) | |
- PDF (в разработке) | |
- HTML (в разработке) | |
- Markdown (в разработке) | |
- Email (в разработке) | |
- DOC (в разработке) | |
- Единый интерфейс для работы со всеми форматами | |
- Расширяемая архитектура для добавления новых парсеров | |
## Установка | |
```bash | |
pip install git+ssh://[email protected]: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 [email protected]:textai/parsers/parser.git | |
cd parser | |
pip install -e . | |
``` | |