"""LLM-based extraction (Phase 5).

The hybrid extractor first runs the deterministic regex layer and then —
only for fields that came back missing or low-confidence — calls a local
Ollama model with a Pydantic-typed prompt. Everything is gated by
``LLM_ENABLED``; if the flag is off or the Ollama server is unreachable,
the pipeline degrades gracefully back to the regex result.
"""

from ocr_sprint.llm.client import LLMUnavailableError, OllamaClient
from ocr_sprint.llm.extractor import LLMHeaderResult, llm_fill_header

__all__ = [
    "LLMHeaderResult",
    "LLMUnavailableError",
    "OllamaClient",
    "llm_fill_header",
]
