PaddlePaddle / PaddleOCR

Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)
https://paddlepaddle.github.io/PaddleOCR/
Apache License 2.0
44.25k stars 7.82k forks source link

英文输出只有小写,怎么更改? #1511

Closed yizhipipixia closed 3 years ago

yizhipipixia commented 3 years ago

输出的检测结果英文全是小写的(检测的英文),怎样更改能按照图片上字母的大小写灵活更改呢?

顺着找到了character.py的第35行, if self.character_type == "en": self.character_str = "0123456789abcdefghijklmnopqrstuvwxyz",发现定义的字母都是小写的,我更改成大写的即self.character_str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"之后,输出全变成大写的了,表示想让模型老老实实按照检测到的文字大小写变化应该怎样更改呢. a

tink2123 commented 3 years ago

https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/configs/rec/multi_language/rec_en_number_lite_train.yml 参考这个配置文件,这个英文数字模型是可以区分大小写的

LLL0802 commented 3 years ago

请问,测试检测的时候换成只有英文的字典,需要改些什么呢,会出现下标溢出的错误

tink2123 commented 3 years ago

@LLL0802 您的命令是?检测应该是不需要指定字典的。

yizhipipixia commented 3 years ago

https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/configs/rec/multi_language/rec_en_number_lite_train.yml 参考这个配置文件,这个英文数字模型是可以区分大小写的

大佬还是不怎么懂,这个rec_en_number_lite_train.yml是训练样本的配置文件,官方提供了使用MJSynth和SynthText两个文字识别数据集训练的算法的识别训练过程中保存的模型链接:https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/algorithm_overview.md

这边所以说为了区分大小写我是应该使用rec_en_number_lite_train.yml这样的配置文件重新训练一个模型吗.

或者还是可以在转换成inference model 即:ython3 tools/export_model.py -c configs/rec/rec_r34_vd_tps_bilstm_ctc.yml -o Global.checkpoints="./models/rec_r34_vd_tps_bilstm_ctc/best_accuracy" Global.save_inference_dir="./inference/starnet"这个步骤更改里面的yml文件,就利用官方提供的模型,就可以输出转换成预测模型呢?

LLL0802 commented 3 years ago

python3 tools/infer/predict_system.py --image_dir="./doc/imgs/" --det_model_dir="./inference/ch_ppocr_server_v1.1_det_infer/" --rec_model_dir="./inference/ch_ppocr_server_v1.1_rec_infer/" --cls_model_dir="./inference/ch_ppocr_mobile_v1.1_cls_infer/" --use_angle_cls=True --use_space_char=True 把tools/infer/utility.py文件里rec_char_dict_path = ./ppocr/utils/ppocr_keys_v1.txt改成了ic15_dict.txt 哦不对,不能叫检测,应该是测试识别的时候,默认的好像是汉字那个字典,但我想用英文字符的那个字典

tink2123 commented 3 years ago

@yizhipipixia

这边所以说为了区分大小写我是应该使用rec_en_number_lite_train.yml这样的配置文件重新训练一个模型吗.

PaddleOCR提供了一个区分大小写的模型,对应的配置文件是这个。可以在model_list里下载预测模型

image

预测时额外指定一下字典文件:--rec_char_dict_path="ppocr/utils/dict/en_dict.txt"

tink2123 commented 3 years ago

@LLL0802

会出现下标溢出的错误

如果希望替换成英文字典,预测模型也需要修改成英文模型。使用中文模型预测index,在英文字典里解码肯定是会越界的。

yashwant07 commented 3 years ago

@yizhipipixia 您使用哪种模型检测文本?

paddle-bot-old[bot] commented 3 years ago

Since you haven\'t replied for more than 3 months, we have closed this issue/pr. If the problem is not solved or there is a follow-up one, please reopen it at any time and we will continue to follow up. It is recommended to pull and try the latest code first. 由于您超过三个月未回复,我们将关闭这个issue/pr。 若问题未解决或有后续问题,请随时重新打开(建议先拉取最新代码进行尝试),我们会继续跟进。