Spaces:
Running
Running
| from fastapi import FastAPI, Header, HTTPException, Depends | |
| from pydantic import BaseModel | |
| from cin_validator import CINValidator | |
| import os | |
| app = FastAPI( | |
| title="Sahl Express CIN Validation Service", | |
| description="Microservice de validation et détection de carte d'identité (CIN)", | |
| version="1.0.0" | |
| ) | |
| # API key for security, default provided for local development, should be overridden in HF space settings | |
| API_KEY = os.getenv("CIN_API_KEY", "sahl_express_secret_key_123") | |
| def verify_api_key(x_api_key: str = Header(None, alias="X-API-Key")): | |
| if x_api_key != API_KEY: | |
| raise HTTPException(status_code=401, detail="Invalid API Key") | |
| return x_api_key | |
| # Instantiate validator globally to load YOLO model once at startup | |
| validator = CINValidator() | |
| class CINRequest(BaseModel): | |
| imageUrl: str | |
| side: str = "recto" # "recto" or "verso" | |
| def validate_cin(data: CINRequest, api_key: str = Depends(verify_api_key)): | |
| """ | |
| Télécharge l'image depuis Cloudinary, détecte la CIN et vérifie sa netteté et ses ancres visuelles. | |
| """ | |
| result = validator.validate(data.imageUrl, data.side) | |
| return result | |
| def read_root(): | |
| return { | |
| "status": "active", | |
| "service": "Sahl Express CIN Validation Microservice", | |
| "info": "Consultez /docs pour l'interface Swagger." | |
| } | |