"""
OCR Services Module

Provides persistent OCR worker pool with job queue for efficient processing.

Components:
- ocr_worker_pool: Manages ProcessPoolExecutor with persistent PaddleOCR
- job_queue: SQLite-based job queue for async processing
- job_worker: Background task that processes queued jobs
- tesseract_engine: Optimized Tesseract with multi-PSM and polarity fix

Architecture:
    FastAPI → job_queue.create_job() → SQLite
                                          ↓
    job_worker loop → ocr_worker_pool.submit_task() → Worker Process
                                                          ↓
                                                    PaddleOCR/Tesseract
"""

from .ocr_worker_pool import ocr_worker_pool, OCRWorkerPool
from .job_queue import job_queue, OCRJobQueue, OCRJob, OCRJobStatus
from .job_worker import start_job_worker, stop_job_worker
from .tesseract_engine import TesseractEngine
from .validation import OCRValidationEngine

__all__ = [
    # Worker pool
    "ocr_worker_pool",
    "OCRWorkerPool",
    # Job queue
    "job_queue",
    "OCRJobQueue",
    "OCRJob",
    "OCRJobStatus",
    # Job worker
    "start_job_worker",
    "stop_job_worker",
    # Engines
    "TesseractEngine",
    # Validation
    "OCRValidationEngine",
]
