""" Модуль содержит базовый интерфейс для всех структурных элементов документа. """ from abc import ABC, abstractmethod from dataclasses import dataclass from typing import Any, Callable @dataclass class ParsedStructure(ABC): """ Базовый абстрактный класс для всех структурных элементов документа. """ @abstractmethod def to_string(self) -> str: """ Преобразует структуру в строковое представление. Returns: str: Строковое представление структуры. """ pass @abstractmethod def apply(self, func: Callable[[str], str]) -> None: """ Применяет трансформации к строковым элементам, аналогично функции apply в pandas. Args: func (Callable[[str], str]): Функция для применения к строковым элементам. """ pass @abstractmethod def to_dict(self) -> dict[str, Any]: """ Преобразует структуру в словарь. Returns: dict[str, Any]: Словарное представление структуры. """ pass @dataclass class DocumentElement(ParsedStructure): """ Базовый класс для всех элементов документа (параграфы, таблицы, изображения, формулы). """ # Номер страницы, на которой находится элемент page_number: int | None = None # Индекс элемента в документе (порядковый номер) index_in_document: int | None = None