from __future__ import annotations class OcrError(ValueError): """User-facing validation or processing error.""" def __init__(self, message: str, *, key: str | None = None, **params: object) -> None: super().__init__(message) self.key = key self.params = params def localized(self, locale: str | None = None) -> str: if not self.key: return str(self) from ocr_studio.i18n import t return t(locale, self.key, **self.params)