# Copyright (c) OpenMMLab. All rights reserved. from typing import Dict from mmocr.structures import TextSpottingDataSample from .base_mmocr_inferencer import BaseMMOCRInferencer class TextSpotInferencer(BaseMMOCRInferencer): """Text Spotting inferencer. Args: model (str, optional): Path to the config file or the model name defined in metafile. For example, it could be "dbnet_resnet18_fpnc_1200e_icdar2015" or "configs/textdet/dbnet/dbnet_resnet18_fpnc_1200e_icdar2015.py". If model is not specified, user must provide the `weights` saved by MMEngine which contains the config string. Defaults to None. weights (str, optional): Path to the checkpoint. If it is not specified and model is a model name of metafile, the weights will be loaded from metafile. Defaults to None. device (str, optional): Device to run inference. If None, the available device will be automatically used. Defaults to None. scope (str, optional): The scope of the model. Defaults to "mmocr". """ def pred2dict(self, data_sample: TextSpottingDataSample) -> Dict: """Extract elements necessary to represent a prediction into a dictionary. It's better to contain only basic data elements such as strings and numbers in order to guarantee it's json-serializable. Args: data_sample (TextSpottingDataSample): The data sample to be converted. Returns: dict: The output dictionary. """ result = {} pred_instances = data_sample.pred_instances if 'polygons' in pred_instances: result['polygons'] = self._array2list(pred_instances.polygons) if 'bboxes' in pred_instances: result['bboxes'] = self._array2list(pred_instances.bboxes) result['scores'] = self._array2list(pred_instances.scores) result['texts'] = pred_instances.texts return result