polish mult-lang doc and whl
This commit is contained in:
parent
1b6657164f
commit
94474e40fc
|
@ -4,4 +4,5 @@ include README.md
|
||||||
recursive-include ppocr/utils *.txt utility.py logging.py
|
recursive-include ppocr/utils *.txt utility.py logging.py
|
||||||
recursive-include ppocr/data/ *.py
|
recursive-include ppocr/data/ *.py
|
||||||
recursive-include ppocr/postprocess *.py
|
recursive-include ppocr/postprocess *.py
|
||||||
recursive-include tools/infer *.py
|
recursive-include tools/infer *.py
|
||||||
|
recursive-include ppocr/utils/e2e_utils/ *.py
|
|
@ -19,21 +19,56 @@ import logging
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
|
||||||
support_list = {
|
support_list = {
|
||||||
'it':'italian', 'xi':'spanish', 'pu':'portuguese', 'ru':'russian', 'ar':'arabic',
|
'it': 'italian',
|
||||||
'ta':'tamil', 'ug':'uyghur', 'fa':'persian', 'ur':'urdu', 'rs':'serbian latin',
|
'xi': 'spanish',
|
||||||
'oc':'occitan', 'rsc':'serbian cyrillic', 'bg':'bulgarian', 'uk':'ukranian', 'be':'belarusian',
|
'pu': 'portuguese',
|
||||||
'te':'telugu', 'ka':'kannada', 'chinese_cht':'chinese tradition','hi':'hindi','mr':'marathi',
|
'ru': 'russian',
|
||||||
'ne':'nepali',
|
'ar': 'arabic',
|
||||||
|
'ta': 'tamil',
|
||||||
|
'ug': 'uyghur',
|
||||||
|
'fa': 'persian',
|
||||||
|
'ur': 'urdu',
|
||||||
|
'rs': 'serbian latin',
|
||||||
|
'oc': 'occitan',
|
||||||
|
'rsc': 'serbian cyrillic',
|
||||||
|
'bg': 'bulgarian',
|
||||||
|
'uk': 'ukranian',
|
||||||
|
'be': 'belarusian',
|
||||||
|
'te': 'telugu',
|
||||||
|
'ka': 'kannada',
|
||||||
|
'chinese_cht': 'chinese tradition',
|
||||||
|
'hi': 'hindi',
|
||||||
|
'mr': 'marathi',
|
||||||
|
'ne': 'nepali',
|
||||||
}
|
}
|
||||||
assert(
|
|
||||||
os.path.isfile("./rec_multi_language_lite_train.yml")
|
latin_lang = [
|
||||||
),"Loss basic configuration file rec_multi_language_lite_train.yml.\
|
'af', 'az', 'bs', 'cs', 'cy', 'da', 'de', 'es', 'et', 'fr', 'ga', 'hr',
|
||||||
|
'hu', 'id', 'is', 'it', 'ku', 'la', 'lt', 'lv', 'mi', 'ms', 'mt', 'nl',
|
||||||
|
'no', 'oc', 'pi', 'pl', 'pt', 'ro', 'rs_latin', 'sk', 'sl', 'sq', 'sv',
|
||||||
|
'sw', 'tl', 'tr', 'uz', 'vi', 'latin'
|
||||||
|
]
|
||||||
|
arabic_lang = ['ar', 'fa', 'ug', 'ur']
|
||||||
|
cyrillic_lang = [
|
||||||
|
'ru', 'rs_cyrillic', 'be', 'bg', 'uk', 'mn', 'abq', 'ady', 'kbd', 'ava',
|
||||||
|
'dar', 'inh', 'che', 'lbe', 'lez', 'tab', 'cyrillic'
|
||||||
|
]
|
||||||
|
devanagari_lang = [
|
||||||
|
'hi', 'mr', 'ne', 'bh', 'mai', 'ang', 'bho', 'mah', 'sck', 'new', 'gom',
|
||||||
|
'sa', 'bgc', 'devanagari'
|
||||||
|
]
|
||||||
|
multi_lang = latin_lang + arabic_lang + cyrillic_lang + devanagari_lang
|
||||||
|
|
||||||
|
assert (os.path.isfile("./rec_multi_language_lite_train.yml")
|
||||||
|
), "Loss basic configuration file rec_multi_language_lite_train.yml.\
|
||||||
You can download it from \
|
You can download it from \
|
||||||
https://github.com/PaddlePaddle/PaddleOCR/tree/dygraph/configs/rec/multi_language/"
|
https://github.com/PaddlePaddle/PaddleOCR/tree/dygraph/configs/rec/multi_language/"
|
||||||
|
|
||||||
global_config = yaml.load(open("./rec_multi_language_lite_train.yml", 'rb'), Loader=yaml.Loader)
|
global_config = yaml.load(
|
||||||
|
open("./rec_multi_language_lite_train.yml", 'rb'), Loader=yaml.Loader)
|
||||||
project_path = os.path.abspath(os.path.join(os.getcwd(), "../../../"))
|
project_path = os.path.abspath(os.path.join(os.getcwd(), "../../../"))
|
||||||
|
|
||||||
|
|
||||||
class ArgsParser(ArgumentParser):
|
class ArgsParser(ArgumentParser):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(ArgsParser, self).__init__(
|
super(ArgsParser, self).__init__(
|
||||||
|
@ -41,15 +76,30 @@ class ArgsParser(ArgumentParser):
|
||||||
self.add_argument(
|
self.add_argument(
|
||||||
"-o", "--opt", nargs='+', help="set configuration options")
|
"-o", "--opt", nargs='+', help="set configuration options")
|
||||||
self.add_argument(
|
self.add_argument(
|
||||||
"-l", "--language", nargs='+', help="set language type, support {}".format(support_list))
|
"-l",
|
||||||
|
"--language",
|
||||||
|
nargs='+',
|
||||||
|
help="set language type, support {}".format(support_list))
|
||||||
self.add_argument(
|
self.add_argument(
|
||||||
"--train",type=str,help="you can use this command to change the train dataset default path")
|
"--train",
|
||||||
|
type=str,
|
||||||
|
help="you can use this command to change the train dataset default path"
|
||||||
|
)
|
||||||
self.add_argument(
|
self.add_argument(
|
||||||
"--val",type=str,help="you can use this command to change the eval dataset default path")
|
"--val",
|
||||||
|
type=str,
|
||||||
|
help="you can use this command to change the eval dataset default path"
|
||||||
|
)
|
||||||
self.add_argument(
|
self.add_argument(
|
||||||
"--dict",type=str,help="you can use this command to change the dictionary default path")
|
"--dict",
|
||||||
|
type=str,
|
||||||
|
help="you can use this command to change the dictionary default path"
|
||||||
|
)
|
||||||
self.add_argument(
|
self.add_argument(
|
||||||
"--data_dir",type=str,help="you can use this command to change the dataset default root path")
|
"--data_dir",
|
||||||
|
type=str,
|
||||||
|
help="you can use this command to change the dataset default root path"
|
||||||
|
)
|
||||||
|
|
||||||
def parse_args(self, argv=None):
|
def parse_args(self, argv=None):
|
||||||
args = super(ArgsParser, self).parse_args(argv)
|
args = super(ArgsParser, self).parse_args(argv)
|
||||||
|
@ -68,21 +118,38 @@ class ArgsParser(ArgumentParser):
|
||||||
return config
|
return config
|
||||||
|
|
||||||
def _set_language(self, type):
|
def _set_language(self, type):
|
||||||
assert(type),"please use -l or --language to choose language type"
|
print("type:", type)
|
||||||
|
lang = type[0]
|
||||||
|
assert (type), "please use -l or --language to choose language type"
|
||||||
assert(
|
assert(
|
||||||
type[0] in support_list.keys()
|
lang in support_list.keys() or lang in multi_lang
|
||||||
),"the sub_keys(-l or --language) can only be one of support list: \n{},\nbut get: {}, " \
|
),"the sub_keys(-l or --language) can only be one of support list: \n{},\nbut get: {}, " \
|
||||||
"please check your running command".format(support_list, type)
|
"please check your running command".format(multi_lang, type)
|
||||||
global_config['Global']['character_dict_path'] = 'ppocr/utils/dict/{}_dict.txt'.format(type[0])
|
if lang in latin_lang:
|
||||||
global_config['Global']['save_model_dir'] = './output/rec_{}_lite'.format(type[0])
|
lang = "latin"
|
||||||
global_config['Train']['dataset']['label_file_list'] = ["train_data/{}_train.txt".format(type[0])]
|
elif lang in arabic_lang:
|
||||||
global_config['Eval']['dataset']['label_file_list'] = ["train_data/{}_val.txt".format(type[0])]
|
lang = "arabic"
|
||||||
global_config['Global']['character_type'] = type[0]
|
elif lang in cyrillic_lang:
|
||||||
assert(
|
lang = "cyrillic"
|
||||||
os.path.isfile(os.path.join(project_path,global_config['Global']['character_dict_path']))
|
elif lang in devanagari_lang:
|
||||||
),"Loss default dictionary file {}_dict.txt.You can download it from \
|
lang = "devanagari"
|
||||||
https://github.com/PaddlePaddle/PaddleOCR/tree/dygraph/ppocr/utils/dict/".format(type[0])
|
global_config['Global'][
|
||||||
return type[0]
|
'character_dict_path'] = 'ppocr/utils/dict/{}_dict.txt'.format(lang)
|
||||||
|
global_config['Global'][
|
||||||
|
'save_model_dir'] = './output/rec_{}_lite'.format(lang)
|
||||||
|
global_config['Train']['dataset'][
|
||||||
|
'label_file_list'] = ["train_data/{}_train.txt".format(lang)]
|
||||||
|
global_config['Eval']['dataset'][
|
||||||
|
'label_file_list'] = ["train_data/{}_val.txt".format(lang)]
|
||||||
|
global_config['Global']['character_type'] = lang
|
||||||
|
assert (
|
||||||
|
os.path.isfile(
|
||||||
|
os.path.join(project_path, global_config['Global'][
|
||||||
|
'character_dict_path']))
|
||||||
|
), "Loss default dictionary file {}_dict.txt.You can download it from \
|
||||||
|
https://github.com/PaddlePaddle/PaddleOCR/tree/dygraph/ppocr/utils/dict/".format(
|
||||||
|
lang)
|
||||||
|
return lang
|
||||||
|
|
||||||
|
|
||||||
def merge_config(config):
|
def merge_config(config):
|
||||||
|
@ -110,43 +177,51 @@ def merge_config(config):
|
||||||
cur[sub_key] = value
|
cur[sub_key] = value
|
||||||
else:
|
else:
|
||||||
cur = cur[sub_key]
|
cur = cur[sub_key]
|
||||||
|
|
||||||
def loss_file(path):
|
|
||||||
assert(
|
|
||||||
os.path.exists(path)
|
|
||||||
),"There is no such file:{},Please do not forget to put in the specified file".format(path)
|
|
||||||
|
|
||||||
|
|
||||||
|
def loss_file(path):
|
||||||
|
assert (
|
||||||
|
os.path.exists(path)
|
||||||
|
), "There is no such file:{},Please do not forget to put in the specified file".format(
|
||||||
|
path)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
FLAGS = ArgsParser().parse_args()
|
FLAGS = ArgsParser().parse_args()
|
||||||
merge_config(FLAGS.opt)
|
merge_config(FLAGS.opt)
|
||||||
save_file_path = 'rec_{}_lite_train.yml'.format(FLAGS.language)
|
save_file_path = 'rec_{}_lite_train.yml'.format(FLAGS.language)
|
||||||
if os.path.isfile(save_file_path):
|
if os.path.isfile(save_file_path):
|
||||||
os.remove(save_file_path)
|
os.remove(save_file_path)
|
||||||
|
|
||||||
if FLAGS.train:
|
if FLAGS.train:
|
||||||
global_config['Train']['dataset']['label_file_list'] = [FLAGS.train]
|
global_config['Train']['dataset']['label_file_list'] = [FLAGS.train]
|
||||||
train_label_path = os.path.join(project_path,FLAGS.train)
|
train_label_path = os.path.join(project_path, FLAGS.train)
|
||||||
loss_file(train_label_path)
|
loss_file(train_label_path)
|
||||||
if FLAGS.val:
|
if FLAGS.val:
|
||||||
global_config['Eval']['dataset']['label_file_list'] = [FLAGS.val]
|
global_config['Eval']['dataset']['label_file_list'] = [FLAGS.val]
|
||||||
eval_label_path = os.path.join(project_path,FLAGS.val)
|
eval_label_path = os.path.join(project_path, FLAGS.val)
|
||||||
loss_file(eval_label_path)
|
loss_file(eval_label_path)
|
||||||
if FLAGS.dict:
|
if FLAGS.dict:
|
||||||
global_config['Global']['character_dict_path'] = FLAGS.dict
|
global_config['Global']['character_dict_path'] = FLAGS.dict
|
||||||
dict_path = os.path.join(project_path,FLAGS.dict)
|
dict_path = os.path.join(project_path, FLAGS.dict)
|
||||||
loss_file(dict_path)
|
loss_file(dict_path)
|
||||||
if FLAGS.data_dir:
|
if FLAGS.data_dir:
|
||||||
global_config['Eval']['dataset']['data_dir'] = FLAGS.data_dir
|
global_config['Eval']['dataset']['data_dir'] = FLAGS.data_dir
|
||||||
global_config['Train']['dataset']['data_dir'] = FLAGS.data_dir
|
global_config['Train']['dataset']['data_dir'] = FLAGS.data_dir
|
||||||
data_dir = os.path.join(project_path,FLAGS.data_dir)
|
data_dir = os.path.join(project_path, FLAGS.data_dir)
|
||||||
loss_file(data_dir)
|
loss_file(data_dir)
|
||||||
|
|
||||||
with open(save_file_path, 'w') as f:
|
with open(save_file_path, 'w') as f:
|
||||||
yaml.dump(dict(global_config), f, default_flow_style=False, sort_keys=False)
|
yaml.dump(
|
||||||
|
dict(global_config), f, default_flow_style=False, sort_keys=False)
|
||||||
logging.info("Project path is :{}".format(project_path))
|
logging.info("Project path is :{}".format(project_path))
|
||||||
logging.info("Train list path set to :{}".format(global_config['Train']['dataset']['label_file_list'][0]))
|
logging.info("Train list path set to :{}".format(global_config['Train'][
|
||||||
logging.info("Eval list path set to :{}".format(global_config['Eval']['dataset']['label_file_list'][0]))
|
'dataset']['label_file_list'][0]))
|
||||||
logging.info("Dataset root path set to :{}".format(global_config['Eval']['dataset']['data_dir']))
|
logging.info("Eval list path set to :{}".format(global_config['Eval'][
|
||||||
logging.info("Dict path set to :{}".format(global_config['Global']['character_dict_path']))
|
'dataset']['label_file_list'][0]))
|
||||||
logging.info("Config file set to :configs/rec/multi_language/{}".format(save_file_path))
|
logging.info("Dataset root path set to :{}".format(global_config['Eval'][
|
||||||
|
'dataset']['data_dir']))
|
||||||
|
logging.info("Dict path set to :{}".format(global_config['Global'][
|
||||||
|
'character_dict_path']))
|
||||||
|
logging.info("Config file set to :configs/rec/multi_language/{}".
|
||||||
|
format(save_file_path))
|
||||||
|
|
|
@ -0,0 +1,111 @@
|
||||||
|
Global:
|
||||||
|
use_gpu: true
|
||||||
|
epoch_num: 500
|
||||||
|
log_smooth_window: 20
|
||||||
|
print_batch_step: 10
|
||||||
|
save_model_dir: ./output/rec_arabic_lite
|
||||||
|
save_epoch_step: 3
|
||||||
|
eval_batch_step:
|
||||||
|
- 0
|
||||||
|
- 2000
|
||||||
|
cal_metric_during_train: true
|
||||||
|
pretrained_model: null
|
||||||
|
checkpoints: null
|
||||||
|
save_inference_dir: null
|
||||||
|
use_visualdl: false
|
||||||
|
infer_img: null
|
||||||
|
character_dict_path: ppocr/utils/dict/arabic_dict.txt
|
||||||
|
character_type: arabic
|
||||||
|
max_text_length: 25
|
||||||
|
infer_mode: false
|
||||||
|
use_space_char: true
|
||||||
|
Optimizer:
|
||||||
|
name: Adam
|
||||||
|
beta1: 0.9
|
||||||
|
beta2: 0.999
|
||||||
|
lr:
|
||||||
|
name: Cosine
|
||||||
|
learning_rate: 0.001
|
||||||
|
regularizer:
|
||||||
|
name: L2
|
||||||
|
factor: 1.0e-05
|
||||||
|
Architecture:
|
||||||
|
model_type: rec
|
||||||
|
algorithm: CRNN
|
||||||
|
Transform: null
|
||||||
|
Backbone:
|
||||||
|
name: MobileNetV3
|
||||||
|
scale: 0.5
|
||||||
|
model_name: small
|
||||||
|
small_stride:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 2
|
||||||
|
- 2
|
||||||
|
Neck:
|
||||||
|
name: SequenceEncoder
|
||||||
|
encoder_type: rnn
|
||||||
|
hidden_size: 48
|
||||||
|
Head:
|
||||||
|
name: CTCHead
|
||||||
|
fc_decay: 1.0e-05
|
||||||
|
Loss:
|
||||||
|
name: CTCLoss
|
||||||
|
PostProcess:
|
||||||
|
name: CTCLabelDecode
|
||||||
|
Metric:
|
||||||
|
name: RecMetric
|
||||||
|
main_indicator: acc
|
||||||
|
Train:
|
||||||
|
dataset:
|
||||||
|
name: SimpleDataSet
|
||||||
|
data_dir: train_data/
|
||||||
|
label_file_list:
|
||||||
|
- train_data/arabic_train.txt
|
||||||
|
transforms:
|
||||||
|
- DecodeImage:
|
||||||
|
img_mode: BGR
|
||||||
|
channel_first: false
|
||||||
|
- RecAug: null
|
||||||
|
- CTCLabelEncode: null
|
||||||
|
- RecResizeImg:
|
||||||
|
image_shape:
|
||||||
|
- 3
|
||||||
|
- 32
|
||||||
|
- 320
|
||||||
|
- KeepKeys:
|
||||||
|
keep_keys:
|
||||||
|
- image
|
||||||
|
- label
|
||||||
|
- length
|
||||||
|
loader:
|
||||||
|
shuffle: true
|
||||||
|
batch_size_per_card: 256
|
||||||
|
drop_last: true
|
||||||
|
num_workers: 8
|
||||||
|
Eval:
|
||||||
|
dataset:
|
||||||
|
name: SimpleDataSet
|
||||||
|
data_dir: train_data/
|
||||||
|
label_file_list:
|
||||||
|
- train_data/arabic_val.txt
|
||||||
|
transforms:
|
||||||
|
- DecodeImage:
|
||||||
|
img_mode: BGR
|
||||||
|
channel_first: false
|
||||||
|
- CTCLabelEncode: null
|
||||||
|
- RecResizeImg:
|
||||||
|
image_shape:
|
||||||
|
- 3
|
||||||
|
- 32
|
||||||
|
- 320
|
||||||
|
- KeepKeys:
|
||||||
|
keep_keys:
|
||||||
|
- image
|
||||||
|
- label
|
||||||
|
- length
|
||||||
|
loader:
|
||||||
|
shuffle: false
|
||||||
|
drop_last: false
|
||||||
|
batch_size_per_card: 256
|
||||||
|
num_workers: 8
|
|
@ -0,0 +1,111 @@
|
||||||
|
Global:
|
||||||
|
use_gpu: true
|
||||||
|
epoch_num: 500
|
||||||
|
log_smooth_window: 20
|
||||||
|
print_batch_step: 10
|
||||||
|
save_model_dir: ./output/rec_cyrillic_lite
|
||||||
|
save_epoch_step: 3
|
||||||
|
eval_batch_step:
|
||||||
|
- 0
|
||||||
|
- 2000
|
||||||
|
cal_metric_during_train: true
|
||||||
|
pretrained_model: null
|
||||||
|
checkpoints: null
|
||||||
|
save_inference_dir: null
|
||||||
|
use_visualdl: false
|
||||||
|
infer_img: null
|
||||||
|
character_dict_path: ppocr/utils/dict/cyrillic_dict.txt
|
||||||
|
character_type: cyrillic
|
||||||
|
max_text_length: 25
|
||||||
|
infer_mode: false
|
||||||
|
use_space_char: true
|
||||||
|
Optimizer:
|
||||||
|
name: Adam
|
||||||
|
beta1: 0.9
|
||||||
|
beta2: 0.999
|
||||||
|
lr:
|
||||||
|
name: Cosine
|
||||||
|
learning_rate: 0.001
|
||||||
|
regularizer:
|
||||||
|
name: L2
|
||||||
|
factor: 1.0e-05
|
||||||
|
Architecture:
|
||||||
|
model_type: rec
|
||||||
|
algorithm: CRNN
|
||||||
|
Transform: null
|
||||||
|
Backbone:
|
||||||
|
name: MobileNetV3
|
||||||
|
scale: 0.5
|
||||||
|
model_name: small
|
||||||
|
small_stride:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 2
|
||||||
|
- 2
|
||||||
|
Neck:
|
||||||
|
name: SequenceEncoder
|
||||||
|
encoder_type: rnn
|
||||||
|
hidden_size: 48
|
||||||
|
Head:
|
||||||
|
name: CTCHead
|
||||||
|
fc_decay: 1.0e-05
|
||||||
|
Loss:
|
||||||
|
name: CTCLoss
|
||||||
|
PostProcess:
|
||||||
|
name: CTCLabelDecode
|
||||||
|
Metric:
|
||||||
|
name: RecMetric
|
||||||
|
main_indicator: acc
|
||||||
|
Train:
|
||||||
|
dataset:
|
||||||
|
name: SimpleDataSet
|
||||||
|
data_dir: train_data/
|
||||||
|
label_file_list:
|
||||||
|
- train_data/cyrillic_train.txt
|
||||||
|
transforms:
|
||||||
|
- DecodeImage:
|
||||||
|
img_mode: BGR
|
||||||
|
channel_first: false
|
||||||
|
- RecAug: null
|
||||||
|
- CTCLabelEncode: null
|
||||||
|
- RecResizeImg:
|
||||||
|
image_shape:
|
||||||
|
- 3
|
||||||
|
- 32
|
||||||
|
- 320
|
||||||
|
- KeepKeys:
|
||||||
|
keep_keys:
|
||||||
|
- image
|
||||||
|
- label
|
||||||
|
- length
|
||||||
|
loader:
|
||||||
|
shuffle: true
|
||||||
|
batch_size_per_card: 256
|
||||||
|
drop_last: true
|
||||||
|
num_workers: 8
|
||||||
|
Eval:
|
||||||
|
dataset:
|
||||||
|
name: SimpleDataSet
|
||||||
|
data_dir: train_data/
|
||||||
|
label_file_list:
|
||||||
|
- train_data/cyrillic_val.txt
|
||||||
|
transforms:
|
||||||
|
- DecodeImage:
|
||||||
|
img_mode: BGR
|
||||||
|
channel_first: false
|
||||||
|
- CTCLabelEncode: null
|
||||||
|
- RecResizeImg:
|
||||||
|
image_shape:
|
||||||
|
- 3
|
||||||
|
- 32
|
||||||
|
- 320
|
||||||
|
- KeepKeys:
|
||||||
|
keep_keys:
|
||||||
|
- image
|
||||||
|
- label
|
||||||
|
- length
|
||||||
|
loader:
|
||||||
|
shuffle: false
|
||||||
|
drop_last: false
|
||||||
|
batch_size_per_card: 256
|
||||||
|
num_workers: 8
|
|
@ -0,0 +1,111 @@
|
||||||
|
Global:
|
||||||
|
use_gpu: true
|
||||||
|
epoch_num: 500
|
||||||
|
log_smooth_window: 20
|
||||||
|
print_batch_step: 10
|
||||||
|
save_model_dir: ./output/rec_devanagari_lite
|
||||||
|
save_epoch_step: 3
|
||||||
|
eval_batch_step:
|
||||||
|
- 0
|
||||||
|
- 2000
|
||||||
|
cal_metric_during_train: true
|
||||||
|
pretrained_model: null
|
||||||
|
checkpoints: null
|
||||||
|
save_inference_dir: null
|
||||||
|
use_visualdl: false
|
||||||
|
infer_img: null
|
||||||
|
character_dict_path: ppocr/utils/dict/devanagari_dict.txt
|
||||||
|
character_type: devanagari
|
||||||
|
max_text_length: 25
|
||||||
|
infer_mode: false
|
||||||
|
use_space_char: true
|
||||||
|
Optimizer:
|
||||||
|
name: Adam
|
||||||
|
beta1: 0.9
|
||||||
|
beta2: 0.999
|
||||||
|
lr:
|
||||||
|
name: Cosine
|
||||||
|
learning_rate: 0.001
|
||||||
|
regularizer:
|
||||||
|
name: L2
|
||||||
|
factor: 1.0e-05
|
||||||
|
Architecture:
|
||||||
|
model_type: rec
|
||||||
|
algorithm: CRNN
|
||||||
|
Transform: null
|
||||||
|
Backbone:
|
||||||
|
name: MobileNetV3
|
||||||
|
scale: 0.5
|
||||||
|
model_name: small
|
||||||
|
small_stride:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 2
|
||||||
|
- 2
|
||||||
|
Neck:
|
||||||
|
name: SequenceEncoder
|
||||||
|
encoder_type: rnn
|
||||||
|
hidden_size: 48
|
||||||
|
Head:
|
||||||
|
name: CTCHead
|
||||||
|
fc_decay: 1.0e-05
|
||||||
|
Loss:
|
||||||
|
name: CTCLoss
|
||||||
|
PostProcess:
|
||||||
|
name: CTCLabelDecode
|
||||||
|
Metric:
|
||||||
|
name: RecMetric
|
||||||
|
main_indicator: acc
|
||||||
|
Train:
|
||||||
|
dataset:
|
||||||
|
name: SimpleDataSet
|
||||||
|
data_dir: train_data/
|
||||||
|
label_file_list:
|
||||||
|
- train_data/devanagari_train.txt
|
||||||
|
transforms:
|
||||||
|
- DecodeImage:
|
||||||
|
img_mode: BGR
|
||||||
|
channel_first: false
|
||||||
|
- RecAug: null
|
||||||
|
- CTCLabelEncode: null
|
||||||
|
- RecResizeImg:
|
||||||
|
image_shape:
|
||||||
|
- 3
|
||||||
|
- 32
|
||||||
|
- 320
|
||||||
|
- KeepKeys:
|
||||||
|
keep_keys:
|
||||||
|
- image
|
||||||
|
- label
|
||||||
|
- length
|
||||||
|
loader:
|
||||||
|
shuffle: true
|
||||||
|
batch_size_per_card: 256
|
||||||
|
drop_last: true
|
||||||
|
num_workers: 8
|
||||||
|
Eval:
|
||||||
|
dataset:
|
||||||
|
name: SimpleDataSet
|
||||||
|
data_dir: train_data/
|
||||||
|
label_file_list:
|
||||||
|
- train_data/devanagari_val.txt
|
||||||
|
transforms:
|
||||||
|
- DecodeImage:
|
||||||
|
img_mode: BGR
|
||||||
|
channel_first: false
|
||||||
|
- CTCLabelEncode: null
|
||||||
|
- RecResizeImg:
|
||||||
|
image_shape:
|
||||||
|
- 3
|
||||||
|
- 32
|
||||||
|
- 320
|
||||||
|
- KeepKeys:
|
||||||
|
keep_keys:
|
||||||
|
- image
|
||||||
|
- label
|
||||||
|
- length
|
||||||
|
loader:
|
||||||
|
shuffle: false
|
||||||
|
drop_last: false
|
||||||
|
batch_size_per_card: 256
|
||||||
|
num_workers: 8
|
|
@ -15,11 +15,11 @@ Global:
|
||||||
use_visualdl: False
|
use_visualdl: False
|
||||||
infer_img:
|
infer_img:
|
||||||
# for data or label process
|
# for data or label process
|
||||||
character_dict_path: ppocr/utils/dict/en_dict.txt
|
character_dict_path: ppocr/utils/en_dict.txt
|
||||||
character_type: EN
|
character_type: EN
|
||||||
max_text_length: 25
|
max_text_length: 25
|
||||||
infer_mode: False
|
infer_mode: False
|
||||||
use_space_char: False
|
use_space_char: True
|
||||||
|
|
||||||
|
|
||||||
Optimizer:
|
Optimizer:
|
||||||
|
|
|
@ -0,0 +1,111 @@
|
||||||
|
Global:
|
||||||
|
use_gpu: true
|
||||||
|
epoch_num: 500
|
||||||
|
log_smooth_window: 20
|
||||||
|
print_batch_step: 10
|
||||||
|
save_model_dir: ./output/rec_latin_lite
|
||||||
|
save_epoch_step: 3
|
||||||
|
eval_batch_step:
|
||||||
|
- 0
|
||||||
|
- 2000
|
||||||
|
cal_metric_during_train: true
|
||||||
|
pretrained_model: null
|
||||||
|
checkpoints: null
|
||||||
|
save_inference_dir: null
|
||||||
|
use_visualdl: false
|
||||||
|
infer_img: null
|
||||||
|
character_dict_path: ppocr/utils/dict/latin_dict.txt
|
||||||
|
character_type: latin
|
||||||
|
max_text_length: 25
|
||||||
|
infer_mode: false
|
||||||
|
use_space_char: true
|
||||||
|
Optimizer:
|
||||||
|
name: Adam
|
||||||
|
beta1: 0.9
|
||||||
|
beta2: 0.999
|
||||||
|
lr:
|
||||||
|
name: Cosine
|
||||||
|
learning_rate: 0.001
|
||||||
|
regularizer:
|
||||||
|
name: L2
|
||||||
|
factor: 1.0e-05
|
||||||
|
Architecture:
|
||||||
|
model_type: rec
|
||||||
|
algorithm: CRNN
|
||||||
|
Transform: null
|
||||||
|
Backbone:
|
||||||
|
name: MobileNetV3
|
||||||
|
scale: 0.5
|
||||||
|
model_name: small
|
||||||
|
small_stride:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 2
|
||||||
|
- 2
|
||||||
|
Neck:
|
||||||
|
name: SequenceEncoder
|
||||||
|
encoder_type: rnn
|
||||||
|
hidden_size: 48
|
||||||
|
Head:
|
||||||
|
name: CTCHead
|
||||||
|
fc_decay: 1.0e-05
|
||||||
|
Loss:
|
||||||
|
name: CTCLoss
|
||||||
|
PostProcess:
|
||||||
|
name: CTCLabelDecode
|
||||||
|
Metric:
|
||||||
|
name: RecMetric
|
||||||
|
main_indicator: acc
|
||||||
|
Train:
|
||||||
|
dataset:
|
||||||
|
name: SimpleDataSet
|
||||||
|
data_dir: train_data/
|
||||||
|
label_file_list:
|
||||||
|
- train_data/latin_train.txt
|
||||||
|
transforms:
|
||||||
|
- DecodeImage:
|
||||||
|
img_mode: BGR
|
||||||
|
channel_first: false
|
||||||
|
- RecAug: null
|
||||||
|
- CTCLabelEncode: null
|
||||||
|
- RecResizeImg:
|
||||||
|
image_shape:
|
||||||
|
- 3
|
||||||
|
- 32
|
||||||
|
- 320
|
||||||
|
- KeepKeys:
|
||||||
|
keep_keys:
|
||||||
|
- image
|
||||||
|
- label
|
||||||
|
- length
|
||||||
|
loader:
|
||||||
|
shuffle: true
|
||||||
|
batch_size_per_card: 256
|
||||||
|
drop_last: true
|
||||||
|
num_workers: 8
|
||||||
|
Eval:
|
||||||
|
dataset:
|
||||||
|
name: SimpleDataSet
|
||||||
|
data_dir: train_data/
|
||||||
|
label_file_list:
|
||||||
|
- train_data/latin_val.txt
|
||||||
|
transforms:
|
||||||
|
- DecodeImage:
|
||||||
|
img_mode: BGR
|
||||||
|
channel_first: false
|
||||||
|
- CTCLabelEncode: null
|
||||||
|
- RecResizeImg:
|
||||||
|
image_shape:
|
||||||
|
- 3
|
||||||
|
- 32
|
||||||
|
- 320
|
||||||
|
- KeepKeys:
|
||||||
|
keep_keys:
|
||||||
|
- image
|
||||||
|
- label
|
||||||
|
- length
|
||||||
|
loader:
|
||||||
|
shuffle: false
|
||||||
|
drop_last: false
|
||||||
|
batch_size_per_card: 256
|
||||||
|
num_workers: 8
|
|
@ -104,27 +104,16 @@ python3 generate_multi_language_configs.py -l it \
|
||||||
| german_mobile_v2.0_rec |德文识别|[rec_german_lite_train.yml](../../configs/rec/multi_language/rec_german_lite_train.yml)|2.65M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/german_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/german_mobile_v2.0_rec_train.tar) |
|
| german_mobile_v2.0_rec |德文识别|[rec_german_lite_train.yml](../../configs/rec/multi_language/rec_german_lite_train.yml)|2.65M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/german_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/german_mobile_v2.0_rec_train.tar) |
|
||||||
| korean_mobile_v2.0_rec |韩文识别|[rec_korean_lite_train.yml](../../configs/rec/multi_language/rec_korean_lite_train.yml)|3.9M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/korean_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/korean_mobile_v2.0_rec_train.tar) |
|
| korean_mobile_v2.0_rec |韩文识别|[rec_korean_lite_train.yml](../../configs/rec/multi_language/rec_korean_lite_train.yml)|3.9M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/korean_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/korean_mobile_v2.0_rec_train.tar) |
|
||||||
| japan_mobile_v2.0_rec |日文识别|[rec_japan_lite_train.yml](../../configs/rec/multi_language/rec_japan_lite_train.yml)|4.23M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/japan_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/japan_mobile_v2.0_rec_train.tar) |
|
| japan_mobile_v2.0_rec |日文识别|[rec_japan_lite_train.yml](../../configs/rec/multi_language/rec_japan_lite_train.yml)|4.23M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/japan_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/japan_mobile_v2.0_rec_train.tar) |
|
||||||
| it_mobile_v2.0_rec |意大利文识别|rec_it_lite_train.yml|2.53M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/it_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/it_mobile_v2.0_rec_train.tar) |
|
|
||||||
| xi_mobile_v2.0_rec |西班牙文识别|rec_xi_lite_train.yml|2.53M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/xi_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/xi_mobile_v2.0_rec_train.tar) |
|
|
||||||
| pu_mobile_v2.0_rec |葡萄牙文识别|rec_pu_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/pu_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/pu_mobile_v2.0_rec_train.tar) |
|
|
||||||
| ru_mobile_v2.0_rec |俄罗斯文识别|rec_ru_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ru_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ru_mobile_v2.0_rec_train.tar) |
|
|
||||||
| ar_mobile_v2.0_rec |阿拉伯文识别|rec_ar_lite_train.yml|2.53M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ar_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ar_mobile_v2.0_rec_train.tar) |
|
|
||||||
| hi_mobile_v2.0_rec |印地文识别|rec_hi_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/hi_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/hi_mobile_v2.0_rec_train.tar) |
|
|
||||||
| chinese_cht_mobile_v2.0_rec |中文繁体识别|rec_chinese_cht_lite_train.yml|5.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/chinese_cht_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/chinese_cht_mobile_v2.0_rec_train.tar) |
|
| chinese_cht_mobile_v2.0_rec |中文繁体识别|rec_chinese_cht_lite_train.yml|5.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/chinese_cht_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/chinese_cht_mobile_v2.0_rec_train.tar) |
|
||||||
| ug_mobile_v2.0_rec |维吾尔文识别|rec_ug_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ug_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ug_mobile_v2.0_rec_train.tar) |
|
|
||||||
| fa_mobile_v2.0_rec |波斯文识别|rec_fa_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/fa_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/fa_mobile_v2.0_rec_train.tar) |
|
|
||||||
| ur_mobile_v2.0_rec |乌尔都文识别|rec_ur_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ur_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ur_mobile_v2.0_rec_train.tar) |
|
|
||||||
| rs_mobile_v2.0_rec |塞尔维亚文(latin)识别|rec_rs_lite_train.yml|2.53M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/rs_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/rs_mobile_v2.0_rec_train.tar) |
|
|
||||||
| oc_mobile_v2.0_rec |欧西坦文识别|rec_oc_lite_train.yml|2.53M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/oc_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/oc_mobile_v2.0_rec_train.tar) |
|
|
||||||
| mr_mobile_v2.0_rec |马拉地文识别|rec_mr_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/mr_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/mr_mobile_v2.0_rec_train.tar) |
|
|
||||||
| ne_mobile_v2.0_rec |尼泊尔文识别|rec_ne_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ne_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ne_mobile_v2.0_rec_train.tar) |
|
|
||||||
| rsc_mobile_v2.0_rec |塞尔维亚文(cyrillic)识别|rec_rsc_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/rsc_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/rsc_mobile_v2.0_rec_train.tar) |
|
|
||||||
| bg_mobile_v2.0_rec |保加利亚文识别|rec_bg_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/bg_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/bg_mobile_v2.0_rec_train.tar) |
|
|
||||||
| uk_mobile_v2.0_rec |乌克兰文识别|rec_uk_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/uk_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/uk_mobile_v2.0_rec_train.tar) |
|
|
||||||
| be_mobile_v2.0_rec |白俄罗斯文识别|rec_be_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/be_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/be_mobile_v2.0_rec_train.tar) |
|
|
||||||
| te_mobile_v2.0_rec |泰卢固文识别|rec_te_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/te_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/te_mobile_v2.0_rec_train.tar) |
|
| te_mobile_v2.0_rec |泰卢固文识别|rec_te_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/te_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/te_mobile_v2.0_rec_train.tar) |
|
||||||
| ka_mobile_v2.0_rec |卡纳达文识别|rec_ka_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ka_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ka_mobile_v2.0_rec_train.tar) |
|
| ka_mobile_v2.0_rec |卡纳达文识别|rec_ka_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ka_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ka_mobile_v2.0_rec_train.tar) |
|
||||||
| ta_mobile_v2.0_rec |泰米尔文识别|rec_ta_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ta_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ta_mobile_v2.0_rec_train.tar) |
|
| ta_mobile_v2.0_rec |泰米尔文识别|rec_ta_lite_train.yml|2.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ta_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ta_mobile_v2.0_rec_train.tar) |
|
||||||
|
| latin_mobile_v2.0_rec | 拉丁文识别 | [rec_latin_lite_train.yml](../../configs/rec/multi_language/rec_latin_lite_train.yml) |2.6M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/latin_ppocr_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/latin_ppocr_mobile_v2.0_rec_train.tar) |
|
||||||
|
| arabic_mobile_v2.0_rec | 阿拉伯字母 | [rec_arabic_lite_train.yml](../../configs/rec/multi_language/rec_arabic_lite_train.yml) |2.6M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/arabic_ppocr_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/arabic_ppocr_mobile_v2.0_rec_train.tar) |
|
||||||
|
| cyrillic_mobile_v2.0_rec | 斯拉夫字母 | [rec_cyrillic_lite_train.yml](../../configs/rec/multi_language/rec_cyrillic_lite_train.yml) |2.6M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/cyrillic_ppocr_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/cyrillic_ppocr_mobile_v2.0_rec_train.tar) |
|
||||||
|
| devanagari_mobile_v2.0_rec | 梵文字母 | [rec_devanagari_lite_train.yml](../../configs/rec/multi_language/rec_devanagari_lite_train.yml) |2.6M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/devanagari_ppocr_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/devanagari_ppocr_mobile_v2.0_rec_train.tar) |
|
||||||
|
|
||||||
|
更多支持语种请参考: [多语言模型](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.1/doc/doc_ch/multi_languages.md#%E8%AF%AD%E7%A7%8D%E7%BC%A9%E5%86%99)
|
||||||
|
|
||||||
|
|
||||||
<a name="文本方向分类模型"></a>
|
<a name="文本方向分类模型"></a>
|
||||||
|
|
|
@ -59,7 +59,7 @@ pip instll paddlepaddle-gpu
|
||||||
|
|
||||||
pip 安装
|
pip 安装
|
||||||
```
|
```
|
||||||
pip install "paddleocr>=2.0.4" # 推荐使用2.0.4版本
|
pip install "paddleocr>=2.0.6" # 推荐使用2.0.6版本
|
||||||
```
|
```
|
||||||
本地构建并安装
|
本地构建并安装
|
||||||
```
|
```
|
||||||
|
|
|
@ -138,7 +138,7 @@ PaddleOCR内置了一部分字典,可以按需使用。
|
||||||
|
|
||||||
`ppocr/utils/dict/german_dict.txt` 是一个包含131个字符的德文字典
|
`ppocr/utils/dict/german_dict.txt` 是一个包含131个字符的德文字典
|
||||||
|
|
||||||
`ppocr/utils/dict/en_dict.txt` 是一个包含63个字符的英文字典
|
`ppocr/utils/en_dict.txt` 是一个包含96个字符的英文字典
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -285,7 +285,7 @@ Eval:
|
||||||
<a name="小语种"></a>
|
<a name="小语种"></a>
|
||||||
#### 2.3 小语种
|
#### 2.3 小语种
|
||||||
|
|
||||||
PaddleOCR目前已支持26种(除中文外)语种识别,`configs/rec/multi_languages` 路径下提供了一个多语言的配置文件模版: [rec_multi_language_lite_train.yml](../../configs/rec/multi_language/rec_multi_language_lite_train.yml)。
|
PaddleOCR目前已支持80种(除中文外)语种识别,`configs/rec/multi_languages` 路径下提供了一个多语言的配置文件模版: [rec_multi_language_lite_train.yml](../../configs/rec/multi_language/rec_multi_language_lite_train.yml)。
|
||||||
|
|
||||||
您有两种方式创建所需的配置文件:
|
您有两种方式创建所需的配置文件:
|
||||||
|
|
||||||
|
@ -368,26 +368,12 @@ PaddleOCR目前已支持26种(除中文外)语种识别,`configs/rec/multi
|
||||||
| rec_ger_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 德语 | german |
|
| rec_ger_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 德语 | german |
|
||||||
| rec_japan_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 日语 | japan |
|
| rec_japan_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 日语 | japan |
|
||||||
| rec_korean_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 韩语 | korean |
|
| rec_korean_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 韩语 | korean |
|
||||||
| rec_it_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 意大利语 | it |
|
| rec_latin_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 拉丁字母 | latin |
|
||||||
| rec_xi_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 西班牙语 | xi |
|
| rec_arabic_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 阿拉伯字母 | ar |
|
||||||
| rec_pu_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 葡萄牙语 | pu |
|
| rec_cyrillic_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 斯拉夫字母 | cyrillic |
|
||||||
| rec_ru_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 俄罗斯语 | ru |
|
| rec_devanagari_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 梵文字母 | devanagari |
|
||||||
| rec_ar_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 阿拉伯语 | ar |
|
|
||||||
| rec_hi_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 印地语 | hi |
|
更多支持语种请参考: [多语言模型](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.1/doc/doc_ch/multi_languages.md#%E8%AF%AD%E7%A7%8D%E7%BC%A9%E5%86%99)
|
||||||
| rec_ug_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 维吾尔语 | ug |
|
|
||||||
| rec_fa_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 波斯语 | fa |
|
|
||||||
| rec_ur_ite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 乌尔都语 | ur |
|
|
||||||
| rec_rs_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 塞尔维亚(latin)语 | rs |
|
|
||||||
| rec_oc_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 欧西坦语 | oc |
|
|
||||||
| rec_mr_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 马拉地语 | mr |
|
|
||||||
| rec_ne_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 尼泊尔语 | ne |
|
|
||||||
| rec_rsc_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 塞尔维亚(cyrillic)语 | rsc |
|
|
||||||
| rec_bg_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 保加利亚语 | bg |
|
|
||||||
| rec_uk_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 乌克兰语 | uk |
|
|
||||||
| rec_be_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 白俄罗斯语 | be |
|
|
||||||
| rec_te_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 泰卢固语 | te |
|
|
||||||
| rec_ka_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 卡纳达语 | ka |
|
|
||||||
| rec_ta_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | 泰米尔语 | ta |
|
|
||||||
|
|
||||||
多语言模型训练方式与中文模型一致,训练数据集均为100w的合成数据,少量的字体可以在 [百度网盘](https://pan.baidu.com/s/1bS_u207Rm7YbY33wOECKDA) 上下载,提取码:frgi。
|
多语言模型训练方式与中文模型一致,训练数据集均为100w的合成数据,少量的字体可以在 [百度网盘](https://pan.baidu.com/s/1bS_u207Rm7YbY33wOECKDA) 上下载,提取码:frgi。
|
||||||
|
|
||||||
|
|
|
@ -102,27 +102,16 @@ python3 generate_multi_language_configs.py -l it \
|
||||||
| german_mobile_v2.0_rec |Lightweight model for German recognition|[rec_german_lite_train.yml](../../configs/rec/multi_language/rec_german_lite_train.yml)|2.65M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/german_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/german_mobile_v2.0_rec_train.tar) |
|
| german_mobile_v2.0_rec |Lightweight model for German recognition|[rec_german_lite_train.yml](../../configs/rec/multi_language/rec_german_lite_train.yml)|2.65M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/german_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/german_mobile_v2.0_rec_train.tar) |
|
||||||
| korean_mobile_v2.0_rec |Lightweight model for Korean recognition|[rec_korean_lite_train.yml](../../configs/rec/multi_language/rec_korean_lite_train.yml)|3.9M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/korean_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/korean_mobile_v2.0_rec_train.tar) |
|
| korean_mobile_v2.0_rec |Lightweight model for Korean recognition|[rec_korean_lite_train.yml](../../configs/rec/multi_language/rec_korean_lite_train.yml)|3.9M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/korean_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/korean_mobile_v2.0_rec_train.tar) |
|
||||||
| japan_mobile_v2.0_rec |Lightweight model for Japanese recognition|[rec_japan_lite_train.yml](../../configs/rec/multi_language/rec_japan_lite_train.yml)|4.23M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/japan_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/japan_mobile_v2.0_rec_train.tar) |
|
| japan_mobile_v2.0_rec |Lightweight model for Japanese recognition|[rec_japan_lite_train.yml](../../configs/rec/multi_language/rec_japan_lite_train.yml)|4.23M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/japan_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/japan_mobile_v2.0_rec_train.tar) |
|
||||||
| it_mobile_v2.0_rec |Lightweight model for Italian recognition|rec_it_lite_train.yml|2.53M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/it_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/it_mobile_v2.0_rec_train.tar) |
|
| chinese_cht_mobile_v2.0_rec |Lightweight model for chinese cht recognition|rec_chinese_cht_lite_train.yml|5.63M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/chinese_cht_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/chinese_cht_mobile_v2.0_rec_train.tar) |
|
||||||
| xi_mobile_v2.0_rec |Lightweight model for Spanish recognition|rec_xi_lite_train.yml|2.53M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/xi_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/xi_mobile_v2.0_rec_train.tar) |
|
|
||||||
| pu_mobile_v2.0_rec |Lightweight model for Portuguese recognition|rec_pu_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/pu_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/pu_mobile_v2.0_rec_train.tar) |
|
|
||||||
| ru_mobile_v2.0_rec |Lightweight model for Russia recognition|rec_ru_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ru_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ru_mobile_v2.0_rec_train.tar) |
|
|
||||||
| ar_mobile_v2.0_rec |Lightweight model for Arabic recognition|rec_ar_lite_train.yml|2.53M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ar_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ar_mobile_v2.0_rec_train.tar) |
|
|
||||||
| hi_mobile_v2.0_rec |Lightweight model for Hindi recognition|rec_hi_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/hi_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/hi_mobile_v2.0_rec_train.tar) |
|
|
||||||
| chinese_cht_mobile_v2.0_rec |Lightweight model for chinese traditional recognition|rec_chinese_cht_lite_train.yml|5.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/chinese_cht_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/chinese_cht_mobile_v2.0_rec_train.tar) |
|
|
||||||
| ug_mobile_v2.0_rec |Lightweight model for Uyghur recognition|rec_ug_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ug_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ug_mobile_v2.0_rec_train.tar) |
|
|
||||||
| fa_mobile_v2.0_rec |Lightweight model for Persian recognition|rec_fa_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/fa_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/fa_mobile_v2.0_rec_train.tar) |
|
|
||||||
| ur_mobile_v2.0_rec |Lightweight model for Urdu recognition|rec_ur_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ur_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ur_mobile_v2.0_rec_train.tar) |
|
|
||||||
| rs_mobile_v2.0_rec |Lightweight model for Serbian(latin) recognition|rec_rs_lite_train.yml|2.53M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/rs_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/rs_mobile_v2.0_rec_train.tar) |
|
|
||||||
| oc_mobile_v2.0_rec |Lightweight model for Occitan recognition|rec_oc_lite_train.yml|2.53M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/oc_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/oc_mobile_v2.0_rec_train.tar) |
|
|
||||||
| mr_mobile_v2.0_rec |Lightweight model for Marathi recognition|rec_mr_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/mr_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/mr_mobile_v2.0_rec_train.tar) |
|
|
||||||
| ne_mobile_v2.0_rec |Lightweight model for Nepali recognition|rec_ne_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ne_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ne_mobile_v2.0_rec_train.tar) |
|
|
||||||
| rsc_mobile_v2.0_rec |Lightweight model for Serbian(cyrillic) recognition|rec_rsc_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/rsc_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/rsc_mobile_v2.0_rec_train.tar) |
|
|
||||||
| bg_mobile_v2.0_rec |Lightweight model for Bulgarian recognition|rec_bg_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/bg_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/bg_mobile_v2.0_rec_train.tar) |
|
|
||||||
| uk_mobile_v2.0_rec |Lightweight model for Ukranian recognition|rec_uk_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/uk_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/uk_mobile_v2.0_rec_train.tar) |
|
|
||||||
| be_mobile_v2.0_rec |Lightweight model for Belarusian recognition|rec_be_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/be_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/be_mobile_v2.0_rec_train.tar) |
|
|
||||||
| te_mobile_v2.0_rec |Lightweight model for Telugu recognition|rec_te_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/te_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/te_mobile_v2.0_rec_train.tar) |
|
| te_mobile_v2.0_rec |Lightweight model for Telugu recognition|rec_te_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/te_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/te_mobile_v2.0_rec_train.tar) |
|
||||||
| ka_mobile_v2.0_rec |Lightweight model for Kannada recognition|rec_ka_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ka_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ka_mobile_v2.0_rec_train.tar) |
|
| ka_mobile_v2.0_rec |Lightweight model for Kannada recognition|rec_ka_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ka_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ka_mobile_v2.0_rec_train.tar) |
|
||||||
| ta_mobile_v2.0_rec |Lightweight model for Tamil recognition|rec_ta_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ta_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ta_mobile_v2.0_rec_train.tar) |
|
| ta_mobile_v2.0_rec |Lightweight model for Tamil recognition|rec_ta_lite_train.yml|2.63M|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ta_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/ta_mobile_v2.0_rec_train.tar) |
|
||||||
|
| latin_mobile_v2.0_rec | Lightweight model for latin recognition | [rec_latin_lite_train.yml](../../configs/rec/multi_language/rec_latin_lite_train.yml) |2.6M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/latin_ppocr_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/latin_ppocr_mobile_v2.0_rec_train.tar) |
|
||||||
|
| arabic_mobile_v2.0_rec | Lightweight model for arabic recognition | [rec_arabic_lite_train.yml](../../configs/rec/multi_language/rec_arabic_lite_train.yml) |2.6M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/arabic_ppocr_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/arabic_ppocr_mobile_v2.0_rec_train.tar) |
|
||||||
|
| cyrillic_mobile_v2.0_rec | Lightweight model for cyrillic recognition | [rec_cyrillic_lite_train.yml](../../configs/rec/multi_language/rec_cyrillic_lite_train.yml) |2.6M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/cyrillic_ppocr_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/cyrillic_ppocr_mobile_v2.0_rec_train.tar) |
|
||||||
|
| devanagari_mobile_v2.0_rec | Lightweight model for devanagari recognition | [rec_devanagari_lite_train.yml](../../configs/rec/multi_language/rec_devanagari_lite_train.yml) |2.6M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/devanagari_ppocr_mobile_v2.0_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/devanagari_ppocr_mobile_v2.0_rec_train.tar) |
|
||||||
|
|
||||||
|
For more supported languages, please refer to : [Multi-language model](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.1/doc/doc_en/multi_languages_en.md#4-support-languages-and-abbreviations)
|
||||||
|
|
||||||
|
|
||||||
<a name="Angle"></a>
|
<a name="Angle"></a>
|
||||||
|
|
|
@ -60,7 +60,7 @@ pip instll paddlepaddle-gpu
|
||||||
|
|
||||||
pip install
|
pip install
|
||||||
```
|
```
|
||||||
pip install "paddleocr>=2.0.4" # 2.0.4 version is recommended
|
pip install "paddleocr>=2.0.6" # 2.0.6 version is recommended
|
||||||
```
|
```
|
||||||
Build and install locally
|
Build and install locally
|
||||||
```
|
```
|
||||||
|
|
|
@ -131,7 +131,7 @@ PaddleOCR has built-in dictionaries, which can be used on demand.
|
||||||
|
|
||||||
`ppocr/utils/dict/german_dict.txt` is a German dictionary with 131 characters
|
`ppocr/utils/dict/german_dict.txt` is a German dictionary with 131 characters
|
||||||
|
|
||||||
`ppocr/utils/dict/en_dict.txt` is a English dictionary with 63 characters
|
`ppocr/utils/en_dict.txt` is a English dictionary with 96 characters
|
||||||
|
|
||||||
|
|
||||||
The current multi-language model is still in the demo stage and will continue to optimize the model and add languages. **You are very welcome to provide us with dictionaries and fonts in other languages**,
|
The current multi-language model is still in the demo stage and will continue to optimize the model and add languages. **You are very welcome to provide us with dictionaries and fonts in other languages**,
|
||||||
|
@ -279,7 +279,7 @@ Eval:
|
||||||
<a name="Multi_language"></a>
|
<a name="Multi_language"></a>
|
||||||
#### 2.3 Multi-language
|
#### 2.3 Multi-language
|
||||||
|
|
||||||
PaddleOCR currently supports 26 (except Chinese) language recognition. A multi-language configuration file template is
|
PaddleOCR currently supports 80 (except Chinese) language recognition. A multi-language configuration file template is
|
||||||
provided under the path `configs/rec/multi_languages`: [rec_multi_language_lite_train.yml](../../configs/rec/multi_language/rec_multi_language_lite_train.yml)。
|
provided under the path `configs/rec/multi_languages`: [rec_multi_language_lite_train.yml](../../configs/rec/multi_language/rec_multi_language_lite_train.yml)。
|
||||||
|
|
||||||
There are two ways to create the required configuration file::
|
There are two ways to create the required configuration file::
|
||||||
|
@ -368,27 +368,12 @@ Currently, the multi-language algorithms supported by PaddleOCR are:
|
||||||
| rec_ger_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | German | german |
|
| rec_ger_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | German | german |
|
||||||
| rec_japan_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Japanese | japan |
|
| rec_japan_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Japanese | japan |
|
||||||
| rec_korean_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Korean | korean |
|
| rec_korean_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Korean | korean |
|
||||||
| rec_it_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Italian | it |
|
| rec_latin_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Latin | latin |
|
||||||
| rec_xi_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Spanish | xi |
|
| rec_arabic_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | arabic | ar |
|
||||||
| rec_pu_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Portuguese | pu |
|
| rec_cyrillic_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | cyrillic | cyrillic |
|
||||||
| rec_ru_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Russia | ru |
|
| rec_devanagari_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | devanagari | devanagari |
|
||||||
| rec_ar_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Arabic | ar |
|
|
||||||
| rec_hi_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Hindi | hi |
|
|
||||||
| rec_ug_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Uyghur | ug |
|
|
||||||
| rec_fa_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Persian(Farsi) | fa |
|
|
||||||
| rec_ur_ite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Urdu | ur |
|
|
||||||
| rec_rs_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Serbian(latin) | rs |
|
|
||||||
| rec_oc_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Occitan | oc |
|
|
||||||
| rec_mr_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Marathi | mr |
|
|
||||||
| rec_ne_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Nepali | ne |
|
|
||||||
| rec_rsc_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Serbian(cyrillic) | rsc |
|
|
||||||
| rec_bg_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Bulgarian | bg |
|
|
||||||
| rec_uk_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Ukranian | uk |
|
|
||||||
| rec_be_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Belarusian | be |
|
|
||||||
| rec_te_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Telugu | te |
|
|
||||||
| rec_ka_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Kannada | ka |
|
|
||||||
| rec_ta_lite_train.yml | CRNN | Mobilenet_v3 small 0.5 | None | BiLSTM | ctc | Tamil | ta |
|
|
||||||
|
|
||||||
|
For more supported languages, please refer to : [Multi-language model](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.1/doc/doc_en/multi_languages_en.md#4-support-languages-and-abbreviations)
|
||||||
|
|
||||||
The multi-language model training method is the same as the Chinese model. The training data set is 100w synthetic data. A small amount of fonts and test data can be downloaded on [Baidu Netdisk](https://pan.baidu.com/s/1bS_u207Rm7YbY33wOECKDA),Extraction code:frgi.
|
The multi-language model training method is the same as the Chinese model. The training data set is 100w synthetic data. A small amount of fonts and test data can be downloaded on [Baidu Netdisk](https://pan.baidu.com/s/1bS_u207Rm7YbY33wOECKDA),Extraction code:frgi.
|
||||||
|
|
||||||
|
|
37
paddleocr.py
37
paddleocr.py
|
@ -34,8 +34,12 @@ from ppocr.utils.utility import check_and_read_gif, get_image_file_list
|
||||||
__all__ = ['PaddleOCR']
|
__all__ = ['PaddleOCR']
|
||||||
|
|
||||||
model_urls = {
|
model_urls = {
|
||||||
'det':
|
'det': {
|
||||||
'https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_det_infer.tar',
|
'ch':
|
||||||
|
'https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_det_infer.tar',
|
||||||
|
'en':
|
||||||
|
'https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/en_ppocr_mobile_v2.0_det_infer.tar'
|
||||||
|
},
|
||||||
'rec': {
|
'rec': {
|
||||||
'ch': {
|
'ch': {
|
||||||
'url':
|
'url':
|
||||||
|
@ -45,7 +49,7 @@ model_urls = {
|
||||||
'en': {
|
'en': {
|
||||||
'url':
|
'url':
|
||||||
'https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/en_number_mobile_v2.0_rec_infer.tar',
|
'https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/en_number_mobile_v2.0_rec_infer.tar',
|
||||||
'dict_path': './ppocr/utils/dict/en_dict.txt'
|
'dict_path': './ppocr/utils/en_dict.txt'
|
||||||
},
|
},
|
||||||
'french': {
|
'french': {
|
||||||
'url':
|
'url':
|
||||||
|
@ -113,7 +117,7 @@ model_urls = {
|
||||||
}
|
}
|
||||||
|
|
||||||
SUPPORT_DET_MODEL = ['DB']
|
SUPPORT_DET_MODEL = ['DB']
|
||||||
VERSION = 2.0
|
VERSION = 2.1
|
||||||
SUPPORT_REC_MODEL = ['CRNN']
|
SUPPORT_REC_MODEL = ['CRNN']
|
||||||
BASE_DIR = os.path.expanduser("~/.paddleocr/")
|
BASE_DIR = os.path.expanduser("~/.paddleocr/")
|
||||||
|
|
||||||
|
@ -199,7 +203,7 @@ def parse_args(mMain=True, add_help=True):
|
||||||
parser.add_argument("--rec_model_dir", type=str, default=None)
|
parser.add_argument("--rec_model_dir", type=str, default=None)
|
||||||
parser.add_argument("--rec_image_shape", type=str, default="3, 32, 320")
|
parser.add_argument("--rec_image_shape", type=str, default="3, 32, 320")
|
||||||
parser.add_argument("--rec_char_type", type=str, default='ch')
|
parser.add_argument("--rec_char_type", type=str, default='ch')
|
||||||
parser.add_argument("--rec_batch_num", type=int, default=30)
|
parser.add_argument("--rec_batch_num", type=int, default=6)
|
||||||
parser.add_argument("--max_text_length", type=int, default=25)
|
parser.add_argument("--max_text_length", type=int, default=25)
|
||||||
parser.add_argument("--rec_char_dict_path", type=str, default=None)
|
parser.add_argument("--rec_char_dict_path", type=str, default=None)
|
||||||
parser.add_argument("--use_space_char", type=bool, default=True)
|
parser.add_argument("--use_space_char", type=bool, default=True)
|
||||||
|
@ -209,7 +213,7 @@ def parse_args(mMain=True, add_help=True):
|
||||||
parser.add_argument("--cls_model_dir", type=str, default=None)
|
parser.add_argument("--cls_model_dir", type=str, default=None)
|
||||||
parser.add_argument("--cls_image_shape", type=str, default="3, 48, 192")
|
parser.add_argument("--cls_image_shape", type=str, default="3, 48, 192")
|
||||||
parser.add_argument("--label_list", type=list, default=['0', '180'])
|
parser.add_argument("--label_list", type=list, default=['0', '180'])
|
||||||
parser.add_argument("--cls_batch_num", type=int, default=30)
|
parser.add_argument("--cls_batch_num", type=int, default=6)
|
||||||
parser.add_argument("--cls_thresh", type=float, default=0.9)
|
parser.add_argument("--cls_thresh", type=float, default=0.9)
|
||||||
|
|
||||||
parser.add_argument("--enable_mkldnn", type=bool, default=False)
|
parser.add_argument("--enable_mkldnn", type=bool, default=False)
|
||||||
|
@ -243,7 +247,7 @@ def parse_args(mMain=True, add_help=True):
|
||||||
rec_model_dir=None,
|
rec_model_dir=None,
|
||||||
rec_image_shape="3, 32, 320",
|
rec_image_shape="3, 32, 320",
|
||||||
rec_char_type='ch',
|
rec_char_type='ch',
|
||||||
rec_batch_num=30,
|
rec_batch_num=6,
|
||||||
max_text_length=25,
|
max_text_length=25,
|
||||||
rec_char_dict_path=None,
|
rec_char_dict_path=None,
|
||||||
use_space_char=True,
|
use_space_char=True,
|
||||||
|
@ -251,7 +255,7 @@ def parse_args(mMain=True, add_help=True):
|
||||||
cls_model_dir=None,
|
cls_model_dir=None,
|
||||||
cls_image_shape="3, 48, 192",
|
cls_image_shape="3, 48, 192",
|
||||||
label_list=['0', '180'],
|
label_list=['0', '180'],
|
||||||
cls_batch_num=30,
|
cls_batch_num=6,
|
||||||
cls_thresh=0.9,
|
cls_thresh=0.9,
|
||||||
enable_mkldnn=False,
|
enable_mkldnn=False,
|
||||||
use_zero_copy_run=False,
|
use_zero_copy_run=False,
|
||||||
|
@ -274,10 +278,10 @@ class PaddleOCR(predict_system.TextSystem):
|
||||||
self.use_angle_cls = postprocess_params.use_angle_cls
|
self.use_angle_cls = postprocess_params.use_angle_cls
|
||||||
lang = postprocess_params.lang
|
lang = postprocess_params.lang
|
||||||
latin_lang = [
|
latin_lang = [
|
||||||
'af', 'az', 'bs', 'cs', 'cy', 'da', 'de', 'en', 'es', 'et', 'fr',
|
'af', 'az', 'bs', 'cs', 'cy', 'da', 'de', 'es', 'et', 'fr', 'ga',
|
||||||
'ga', 'hr', 'hu', 'id', 'is', 'it', 'ku', 'la', 'lt', 'lv', 'mi',
|
'hr', 'hu', 'id', 'is', 'it', 'ku', 'la', 'lt', 'lv', 'mi', 'ms',
|
||||||
'ms', 'mt', 'nl', 'no', 'oc', 'pi', 'pl', 'pt', 'ro', 'rs_latin',
|
'mt', 'nl', 'no', 'oc', 'pi', 'pl', 'pt', 'ro', 'rs_latin', 'sk',
|
||||||
'sk', 'sl', 'sq', 'sv', 'sw', 'tl', 'tr', 'uz', 'vi'
|
'sl', 'sq', 'sv', 'sw', 'tl', 'tr', 'uz', 'vi'
|
||||||
]
|
]
|
||||||
arabic_lang = ['ar', 'fa', 'ug', 'ur']
|
arabic_lang = ['ar', 'fa', 'ug', 'ur']
|
||||||
cyrillic_lang = [
|
cyrillic_lang = [
|
||||||
|
@ -299,6 +303,10 @@ class PaddleOCR(predict_system.TextSystem):
|
||||||
assert lang in model_urls[
|
assert lang in model_urls[
|
||||||
'rec'], 'param lang must in {}, but got {}'.format(
|
'rec'], 'param lang must in {}, but got {}'.format(
|
||||||
model_urls['rec'].keys(), lang)
|
model_urls['rec'].keys(), lang)
|
||||||
|
if lang == "ch":
|
||||||
|
det_lang = "ch"
|
||||||
|
else:
|
||||||
|
det_lang = "en"
|
||||||
use_inner_dict = False
|
use_inner_dict = False
|
||||||
if postprocess_params.rec_char_dict_path is None:
|
if postprocess_params.rec_char_dict_path is None:
|
||||||
use_inner_dict = True
|
use_inner_dict = True
|
||||||
|
@ -308,7 +316,7 @@ class PaddleOCR(predict_system.TextSystem):
|
||||||
# init model dir
|
# init model dir
|
||||||
if postprocess_params.det_model_dir is None:
|
if postprocess_params.det_model_dir is None:
|
||||||
postprocess_params.det_model_dir = os.path.join(
|
postprocess_params.det_model_dir = os.path.join(
|
||||||
BASE_DIR, '{}/det'.format(VERSION))
|
BASE_DIR, '{}/det/{}'.format(VERSION, det_lang))
|
||||||
if postprocess_params.rec_model_dir is None:
|
if postprocess_params.rec_model_dir is None:
|
||||||
postprocess_params.rec_model_dir = os.path.join(
|
postprocess_params.rec_model_dir = os.path.join(
|
||||||
BASE_DIR, '{}/rec/{}'.format(VERSION, lang))
|
BASE_DIR, '{}/rec/{}'.format(VERSION, lang))
|
||||||
|
@ -317,7 +325,8 @@ class PaddleOCR(predict_system.TextSystem):
|
||||||
BASE_DIR, '{}/cls'.format(VERSION))
|
BASE_DIR, '{}/cls'.format(VERSION))
|
||||||
print(postprocess_params)
|
print(postprocess_params)
|
||||||
# download model
|
# download model
|
||||||
maybe_download(postprocess_params.det_model_dir, model_urls['det'])
|
maybe_download(postprocess_params.det_model_dir,
|
||||||
|
model_urls['det'][det_lang])
|
||||||
maybe_download(postprocess_params.rec_model_dir,
|
maybe_download(postprocess_params.rec_model_dir,
|
||||||
model_urls['rec'][lang]['url'])
|
model_urls['rec'][lang]['url'])
|
||||||
maybe_download(postprocess_params.cls_model_dir, model_urls['cls'])
|
maybe_download(postprocess_params.cls_model_dir, model_urls['cls'])
|
||||||
|
|
2
setup.py
2
setup.py
|
@ -32,7 +32,7 @@ setup(
|
||||||
package_dir={'paddleocr': ''},
|
package_dir={'paddleocr': ''},
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
entry_points={"console_scripts": ["paddleocr= paddleocr.paddleocr:main"]},
|
entry_points={"console_scripts": ["paddleocr= paddleocr.paddleocr:main"]},
|
||||||
version='2.0.4',
|
version='2.0.6',
|
||||||
install_requires=requirements,
|
install_requires=requirements,
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
description='Awesome OCR toolkits based on PaddlePaddle (8.6M ultra-lightweight pre-trained model, support training and deployment among server, mobile, embeded and IoT devices',
|
description='Awesome OCR toolkits based on PaddlePaddle (8.6M ultra-lightweight pre-trained model, support training and deployment among server, mobile, embeded and IoT devices',
|
||||||
|
|
Loading…
Reference in New Issue