文章目录
-
- PaddleOCR简介
- 环境配置
- 文本检测
- 文本识别
- 文本角度分类
- 配置文件说明
-
- Global
- Optimizer ([ppocr/optimizer](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.0/ppocr/optimizer))
- Architecture ([ppocr/modeling](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.0/ppocr/modeling))
- Loss ([ppocr/losses](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.0/ppocr/losses))
- PostProcess ([ppocr/postprocess](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.0/ppocr/postprocess))
- Metric ([ppocr/metrics](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.0/ppocr/metrics))
- Dataset ([ppocr/data](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.0/ppocr/data))
- 错误解决方案
PaddleOCR简介
PaddleOCR分为文本检测、文本识别和方向分类器三部分,其中文本检测有三个模型,分别是MobileNetV3、ResNet18_vd和ResNet50,其中最常使用的是MobileNetV3模型,整体比较小,适合应用于手机端。文本识别只有一个MobileNetV3预训练模型。方向分类器使用默认的模型。
环境配置
PaddleOCR2.0的配置环境
PaddleOCR2.0的配置环境为:
- PaddlePaddle 2.0.0
- Python 3.7
- glibc 2.23
- cuDNN 7.6+(GPU)
其中,PaddlePaddle可以使用2.0.*
Docker
如果使用docker运行,可以直接使用 paddlepaddle/paddle:2.0.1-gpu-cuda11.0-cudnn8镜像,根据个人使用习惯,可以更换,但是paddlepaddle的版本和cudnn版本不能低于PaddleOCR2.0的配置环境。
数据集
其中,文本检测和文本识别使用的都是icdar2015数据集,方向分类器的数据集需自备
icdar2015数据集可以从官网下载,首次下载需注册。
文本检测
文本检测的icdar2015数据集的标注文件下载:
wget -P ./train_data/ https://paddleocr.bj.bcebos.com/dataset/train_icdar2015_label.txt
wget -P ./train_data/ https://paddleocr.bj.bcebos.com/dataset/test_icdar2015_label.txt
也可以使用PaddleOCR提供的数据格式转换脚本,将官网的label转换为支持的数据格式。转换数据工具为ppocr/utils/gen_label.py
# 将官网下载的标签文件转换为 train_icdar2015_label.txt
python gen_label.py --mode="det" --root_path="icdar_c4_train_imgs/" \
--input_path="ch4_training_localization_transcription_gt" \
--output_label="train_icdar2015_label.txt"
解压数据集和下载标注文件后,放在PaddleOCR/train_data文件中,文件目录为:
/PaddleOCR/train_data/icdar2015/text_localization/
└─ icdar_c4_train_imgs/ icdar数据集的训练数据
└─ ch4_test_images/ icdar数据集的测试数据
└─ train_icdar2015_label.txt icdar数据集的训练标注
└─ test_icdar2015_label.txt icdar数据集的测试标注
如果不按照这个格式,需要在后面的配置文件中配置
使用自己的数据集
标注文件格式如下,中间用"\t"分隔:
" 图像文件名 json.dumps编码的图像标注信息"
ch4_test_images/img_61.jpg [{
"transcription": "MASA", "points": [[310, 104], [416, 141], [418, 216], [312, 179]]}, {
...}]
json.dumps编码前的图像标注信息是包含多个字典的list,字典中的 points 表示文本框的四个点的坐标(x, y),从左上角的点开始顺时针排列。 transcription 表示当前文本框的文字,当其内容为“###”时,表示该文本框无效,在训练时会跳过。
如果您想在其他数据集上训练,可以按照上述形式构建标注文件
文本识别
文本识别的数据集也可以参考DTRB,下载benchmark所需的lmdb格式数据集。如果希望复现SRN的论文标准,需要下载离线增广数据,提取码: y3ry。增广数据是由MJSynth和SynthText做旋转和扰动得到的。数据下载完成后请解压到 {your_path}/PaddleOCR/train_data/data_lmdb_release/training/ 路径下。
PaddleOCR提供了一份用于训练icdar2015数据集的标签文件:
# 训练集标签
wget -P ./train_data/ic15_data https://paddleocr.bj.bcebos.com/dataset/rec_gt_train.txt
# 测试集标签
wget -P ./train_data/ic15_data https://paddleocr.bj.bcebos.com/dataset/rec_gt_test.txt
PaddleOCR也提供了数据格式转换文本,可以将官网label转换支持的数据格式。数据转换工具在ppocr/utils/gen_label.py
# 将官网下载的标签文件转换为 rec_gt_label.txt
python gen_label.py --mode="rec" --input_path="{path/of/origin/label}" --output_label="rec_gt_label.txt"
使用自己的数据集
默认请将图片路径和图片标签用 \t 分割,如用其他方式分割将造成训练报错。
" 图像文件名 图像标注信息 "
train_data/train_0001.jpg 简单可依赖
train_data/train_0002.jpg 用科技让复杂的世界更简单
最终训练集的文件结构为:
|-train_data
|-ic15_data
|- rec_gt_train.txt
|- train
|- word_001.png
|- word_002.jpg
|- word_003.jpg
| ...
测试集的文件结构为:
|-train_data
|-ic15_data
|- rec_gt_test.txt
|- test
|- word_001.jpg
|- word_002.jpg
|- word_003.jpg
| ...
字典
文本检测与文本识别相比还需要一个字典文件({word_dict_name}.txt),使用模型训练时,可以将所有出现的字符映射为字典的索引。
因此字典需要包含所有希望被正确是被的字符,{word_dict_name}.txt需要写成如下格式,并以utf-8编码格式保存:
l
d
a
d
r
n
word_dict.txt每行有一个单子,将字符与数字索引映在一起,“and”将被索引称[2 5 1]
ppocr/utils/ppocr_keys_v1.txt 是一个包含6623个字符的中文字典
ppocr/utils/ic15_dict.txt 是一个包含36个字符的英文字典
ppocr/utils/dict/french_dict.txt 是一个包含118个字符的法文字典
ppocr/utils/dict/japan_dict.txt 是一个包含4399个字符的日文字典
ppocr/utils/dict/korean_dict.txt 是一个包含3636个字符的韩文字典
ppocr/utils/dict/german_dict.txt 是一个包含131个字符的德文字典
ppocr/utils/dict/en_dict.txt 是一个包含63个字符的英文字典
您可以按需使用。
目前的多语言模型仍处在demo阶段,会持续优化模型并补充语种。
自定义字典
如需自定义dic文件,请在 configs/rec/rec_icdar15_train.yml 中添加 character_dict_path 字段, 指向您的字典路径。 并将 character_type 设置为 ch。
添加空格类别
如果希望支持识别"空格"类别, 请将yml文件中的 use_space_char 字段设置为 True。
文本角度分类
请按如下步骤设置数据集:
训练数据的默认存储路径是 PaddleOCR/train_data/cls,如果您的磁盘上已有数据集,只需创建软链接至数据集目录:
ln -sf <path/to/dataset> <path/to/paddle_ocr>/train_data/cls/dataset
请参考下文组织您的数据。
- 训练集
首先请将训练图片放入同一个文件夹(train_images),并

PaddleOCR是一个OCR工具包,包含文本检测、识别和方向分类器。支持MobileNetV3、ResNet18_vd和ResNet50模型。文本检测和识别数据集主要使用icdar2015,需要转换为特定格式。自定义字典和添加空格类别可通过配置文件实现。训练时,可以设置学习率、数据增强和模型保存策略。评估和预测阶段,使用相应脚本进行模型性能测试和应用。

6万+

被折叠的 条评论
为什么被折叠?



