"""FastAPI application entry point — ISP Handbook OCR Engine.""" from __future__ import annotations import logging from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.api.routes import router from app.core.config import get_settings from app.core.logging import setup_logging settings = get_settings() setup_logging(settings.debug) logger = logging.getLogger(__name__) app = FastAPI( title=settings.app_name, version=settings.app_version, description="OCR extraction, editing, and export for ISP handbooks.", docs_url="/docs", redoc_url="/redoc", openapi_url="/openapi.json", ) # CORS — allow configured origins app.add_middleware( CORSMiddleware, allow_origins=settings.cors_origins_list, allow_credentials=False, allow_methods=["GET", "POST", "OPTIONS"], allow_headers=["*"], expose_headers=["Content-Disposition", "Content-Length", "Content-Type"], ) app.include_router(router) @app.on_event("startup") async def startup_event(): # Configure tesseract path if set if settings.tesseract_cmd: from app.services.ocr_extractor import configure_tesseract configure_tesseract(settings.tesseract_cmd) logger.info( "%s v%s starting on port %d (debug=%s)", settings.app_name, settings.app_version, settings.port, settings.debug, )