From 44f90d42f8d40d60ae43be5b0e4e8117b27aef0b Mon Sep 17 00:00:00 2001 From: mertalev <101130780+mertalev@users.noreply.github.com> Date: Wed, 15 Oct 2025 14:35:52 -0400 Subject: [PATCH] linting --- machine-learning/immich_ml/models/ocr/recognition.py | 9 +++++---- machine-learning/immich_ml/models/ocr/schemas.py | 6 +++--- machine-learning/uv.lock | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/machine-learning/immich_ml/models/ocr/recognition.py b/machine-learning/immich_ml/models/ocr/recognition.py index 0f1394304c..0138ff9bdb 100644 --- a/machine-learning/immich_ml/models/ocr/recognition.py +++ b/machine-learning/immich_ml/models/ocr/recognition.py @@ -2,6 +2,7 @@ from typing import Any import cv2 import numpy as np +from numpy.typing import NDArray from PIL.Image import Image from rapidocr.ch_ppocr_rec import TextRecInput from rapidocr.ch_ppocr_rec import TextRecognizer as RapidTextRecognizer @@ -84,7 +85,7 @@ class TextRecognizer(InferenceModel): "textScore": text_scores[valid_text_score_idx], } - def get_crop_img_list(self, img: np.ndarray, boxes: np.ndarray) -> list[np.ndarray]: + def get_crop_img_list(self, img: NDArray[np.float32], boxes: NDArray[np.float32]) -> list[NDArray[np.float32]]: img_crop_width = np.maximum( np.linalg.norm(boxes[:, 1] - boxes[:, 0], axis=1), np.linalg.norm(boxes[:, 2] - boxes[:, 3], axis=1) ).astype(np.int32) @@ -96,16 +97,16 @@ class TextRecognizer(InferenceModel): pts_std[:, 2:4, 1] = img_crop_height[:, None] img_crop_sizes = np.stack([img_crop_width, img_crop_height], axis=1).tolist() - imgs = [] + imgs: list[NDArray[np.float32]] = [] for box, pts_std, dst_size in zip(list(boxes), list(pts_std), img_crop_sizes): M = cv2.getPerspectiveTransform(box, pts_std) - dst_img = cv2.warpPerspective( + dst_img: NDArray[np.float32] = cv2.warpPerspective( img, M, dst_size, borderMode=cv2.BORDER_REPLICATE, flags=cv2.INTER_CUBIC, - ) + ) # type: ignore dst_height, dst_width = dst_img.shape[0:2] if dst_height * 1.0 / dst_width >= 1.5: dst_img = np.rot90(dst_img) diff --git a/machine-learning/immich_ml/models/ocr/schemas.py b/machine-learning/immich_ml/models/ocr/schemas.py index 4acf1b1eb9..14a7d3cea0 100644 --- a/machine-learning/immich_ml/models/ocr/schemas.py +++ b/machine-learning/immich_ml/models/ocr/schemas.py @@ -1,4 +1,4 @@ -from typing import Iterable +from typing import Any, Iterable import numpy as np import numpy.typing as npt @@ -20,8 +20,8 @@ class TextRecognitionOutput(TypedDict): # RapidOCR expects `engine_type`, `lang_type`, and `font_path` to be attributes -class OcrOptions(dict): - def __init__(self, **options): +class OcrOptions(dict[str, Any]): + def __init__(self, **options: Any) -> None: super().__init__(**options) self.engine_type = EngineType.ONNXRUNTIME self.lang_type = LangRec.CH diff --git a/machine-learning/uv.lock b/machine-learning/uv.lock index 9dcc58684c..caaa1e4467 100644 --- a/machine-learning/uv.lock +++ b/machine-learning/uv.lock @@ -1082,7 +1082,7 @@ wheels = [ [[package]] name = "immich-ml" -version = "1.129.0" +version = "2.0.1" source = { editable = "." } dependencies = [ { name = "aiocache" },