OpenOCR-Demo / tools /utility.py
topdu's picture
openocr demo
29f689c
raw
history blame
1.55 kB
from argparse import ArgumentParser, RawDescriptionHelpFormatter
import yaml
class ArgsParser(ArgumentParser):
def __init__(self):
super(ArgsParser,
self).__init__(formatter_class=RawDescriptionHelpFormatter)
self.add_argument('-c', '--config', help='configuration file to use')
self.add_argument('-o',
'--opt',
nargs='*',
help='set configuration options')
self.add_argument('--local_rank')
self.add_argument('--local-rank')
def parse_args(self, argv=None):
args = super(ArgsParser, self).parse_args(argv)
assert args.config is not None, 'Please specify --config=configure_file_path.'
args.opt = self._parse_opt(args.opt)
return args
def _parse_opt(self, opts):
config = {}
if not opts:
return config
for s in opts:
s = s.strip()
k, v = s.split('=', 1)
if '.' not in k:
config[k] = yaml.load(v, Loader=yaml.Loader)
else:
keys = k.split('.')
if keys[0] not in config:
config[keys[0]] = {}
cur = config[keys[0]]
for idx, key in enumerate(keys[1:]):
if idx == len(keys) - 2:
cur[key] = yaml.load(v, Loader=yaml.Loader)
else:
cur[key] = {}
cur = cur[key]
return config