# copyright (c) 2024 PaddlePaddle Authors. All Rights Reserve. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import os from ....utils.misc import abspath from ..text_rec.config import TextRecConfig class TableRecConfig(TextRecConfig): """ Table Recognition Config """ def update_dataset(self, dataset_path: str, dataset_type: str=None): """update dataset settings Args: dataset_path (str): the root path of dataset. dataset_type (str, optional): dataset type. Defaults to None. Raises: ValueError: the dataset_type error. """ dataset_path = abspath(dataset_path) if dataset_type is None: dataset_type = 'PubTabTableRecDataset' if dataset_type == 'PubTabTableRecDataset': _cfg = { 'Train.dataset.name': dataset_type, 'Train.dataset.data_dir': dataset_path, 'Train.dataset.label_file_list': [os.path.join(dataset_path, 'train.txt')], 'Eval.dataset.name': dataset_type, 'Eval.dataset.data_dir': dataset_path, 'Eval.dataset.label_file_list': [os.path.join(dataset_path, 'val.txt')] } self.update(_cfg) else: raise ValueError(f"{repr(dataset_type)} is not supported.") def _get_infer_shape(self): """get resize scale of ResizeImg operation in the evaluation Returns: str: resize scale, i.e. `Eval.dataset.transforms.ResizeTableImage.max_len` """ size = None transforms = self.dict['Eval']['dataset']['transforms'] for op in transforms: if list(op)[0] == 'ResizeTableImage': size = op['ResizeTableImage']['max_len'] return size