muryshev's picture
update
86c402d
raw
history blame
1.96 kB
"""
Модуль содержит базовый интерфейс для всех структурных элементов документа.
"""
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