Implement OCR engine architecture with base, factory, and specific engines
This commit is contained in:
24
app/ocr/factory.py
Normal file
24
app/ocr/factory.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
from app.ocr.base import OcrEngine
|
||||
from app.ocr.none import NoOcrEngine
|
||||
from app.ocr.paddle import PaddleOcrEngine
|
||||
from app.ocr.tesseract import TesseractOcrEngine
|
||||
|
||||
|
||||
def create_ocr_engine(config: dict[str, Any]) -> OcrEngine:
|
||||
ocr_cfg = config.get("ocr", {})
|
||||
if not ocr_cfg.get("enabled", True):
|
||||
return NoOcrEngine(ocr_cfg)
|
||||
|
||||
engine = str(ocr_cfg.get("engine", "tesseract")).lower()
|
||||
if engine in {"none", "off", "disabled"}:
|
||||
return NoOcrEngine(ocr_cfg)
|
||||
if engine == "tesseract":
|
||||
return TesseractOcrEngine(ocr_cfg)
|
||||
if engine == "paddle":
|
||||
return PaddleOcrEngine(ocr_cfg)
|
||||
|
||||
raise ValueError(f"Nieznany silnik OCR: {engine}")
|
||||
Reference in New Issue
Block a user