""" Base Document Parser interface. """ from abc import ABC, abstractmethod from dataclasses import dataclass from typing import Dict, List, Optional, Any @dataclass class ParsedPage: page_number: int markdown_content: str image_path: Optional[str] = None bbox_metadata: List[Dict[str, Any]] = None @dataclass class ParsedDocument: source_path: str total_pages: int full_markdown: str pages: List[ParsedPage] metadata: Dict[str, Any] class BaseDocumentParser(ABC): """Abstract base class for converting document files to structured Markdown.""" @abstractmethod def parse(self, file_path: str) -> ParsedDocument: """Parses a PDF or document into a ParsedDocument.""" pass