Spaces:
Sleeping
Sleeping
File size: 4,491 Bytes
86c402d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# Универсальный парсер документов
Библиотека `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 .
```
|