Spaces:
Running on Zero
Running on Zero
| """Adaptive extraction backend selection.""" | |
| from __future__ import annotations | |
| import os | |
| from src.extraction.base import Extractor | |
| from src.extraction.zerogpu_transformers import ZeroGPUTransformersExtractor | |
| class AutoExtractor: | |
| """Use the local Transformers MiniCPM-V path.""" | |
| def __init__(self, model_id: str | None = None) -> None: | |
| self.model_id = model_id | |
| self._selected: Extractor | None = None | |
| def extract(self, file_path: str, max_pages: int = 3): | |
| return self._backend().extract(file_path, max_pages=max_pages) | |
| def _backend(self) -> Extractor: | |
| if self._selected is None: | |
| from src.model_paths import resolve_transformers_model_source | |
| source = resolve_transformers_model_source(self.model_id) | |
| print( | |
| "[Blood Test Explainer] using Transformers extractor " | |
| f"(origin={source.origin}, model={source.model_id})", | |
| flush=True, | |
| ) | |
| self._selected = ZeroGPUTransformersExtractor(model_id=self.model_id) | |
| return self._selected | |