muryshev's picture
update
86c402d
|
raw
history blame
4.49 kB

Универсальный парсер документов

Библиотека ntr_fileparser предоставляет универсальный интерфейс для извлечения структурированных данных из документов различных форматов.

Возможности

  • Извлечение текстовых блоков, таблиц, изображений и формул из документов
  • Поддержка различных форматов файлов:
    • XML (реализовано)
    • DOCX (реализовано)
    • PDF (в разработке)
    • HTML (в разработке)
    • Markdown (в разработке)
    • Email (в разработке)
    • DOC (в разработке)
  • Единый интерфейс для работы со всеми форматами
  • Расширяемая архитектура для добавления новых парсеров

Установка

pip install git+ssh://[email protected]:textai/parsers/parser.git

Использование

Базовый пример

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)}")

Работа с содержимым файла

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)

Применение функций к документу

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 и т.д.).

Диаграмма архитектуры

Диаграмма архитектуры ntr_fileparser

Требования

  • Python 3.11+
  • Зависимости автоматически устанавливаются при установке библиотеки

Разработка

Для разработки и тестирования:

git clone [email protected]:textai/parsers/parser.git
cd parser
pip install -e .