feat: add support for additional parameters in RapidOcrOptions and fix RapidOcr font_path

This commit is contained in:
David Morady
2025-09-15 10:51:47 +02:00
parent 10bb0aee2d
commit 133d989060
2 changed files with 37 additions and 26 deletions

View File

@@ -114,7 +114,10 @@ class RapidOcrOptions(OcrOptions):
cls_model_path: Optional[str] = None # same default as rapidocr cls_model_path: Optional[str] = None # same default as rapidocr
rec_model_path: Optional[str] = None # same default as rapidocr rec_model_path: Optional[str] = None # same default as rapidocr
rec_keys_path: Optional[str] = None # same default as rapidocr rec_keys_path: Optional[str] = None # same default as rapidocr
rec_font_path: Optional[str] = None # same default as rapidocr font_path: Optional[str] = None # same default as rapidocr
# Dictionary to overwrite or pass-through additional parameters
rapidocr_params: Dict[str, Any] = Field(default_factory=dict)
model_config = ConfigDict( model_config = ConfigDict(
extra="forbid", extra="forbid",

View File

@@ -62,10 +62,10 @@ class RapidOcrModel(BaseOcrModel):
} }
backend_enum = _ALIASES.get(self.options.backend, EngineType.ONNXRUNTIME) backend_enum = _ALIASES.get(self.options.backend, EngineType.ONNXRUNTIME)
self.reader = RapidOCR( params = {
params={
# Global settings (these are still correct) # Global settings (these are still correct)
"Global.text_score": self.options.text_score, "Global.text_score": self.options.text_score,
"Global.font_path": self.options.font_path,
# "Global.verbose": self.options.print_verbose, # "Global.verbose": self.options.print_verbose,
# Detection model settings # Detection model settings
"Det.model_path": self.options.det_model_path, "Det.model_path": self.options.det_model_path,
@@ -88,6 +88,14 @@ class RapidOcrModel(BaseOcrModel):
"Cls.engine_type": backend_enum, "Cls.engine_type": backend_enum,
"Rec.engine_type": backend_enum, "Rec.engine_type": backend_enum,
} }
user_params = self.options.rapidocr_params
if user_params:
_log.debug("Overwriting RapidOCR params with user-provided values.")
params.update(user_params)
self.reader = RapidOCR(
params=params,
) )
def __call__( def __call__(