| """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",
|
| )
|
|
|
|
|
| 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():
|
|
|
| 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,
|
| )
|
|
|