diff --git a/doc/doc_ch/dataset/ocr_datasets.md b/doc/doc_ch/dataset/ocr_datasets.md index 1a60d0b338abd24b2014cdc40646a2da85abbe73..828e35aa11e42af064a73de7501050dbcefe3a32 100644 --- a/doc/doc_ch/dataset/ocr_datasets.md +++ b/doc/doc_ch/dataset/ocr_datasets.md @@ -1,23 +1,43 @@ -## OCR数据集 +# OCR数据集 -- [1. 文本检测](#1) - - [1.1 ICDAR 2015](#11) -- [2. 文本识别](#2) +- [OCR数据集](#ocr数据集) + - [1. 文本检测](#1-文本检测) + - [1.1 PaddleOCR 文字检测数据格式](#11-paddleocr-文字检测数据格式) + - [1.2 公开数据集](#12-公开数据集) + - [1.2.1 ICDAR 2015](#121-icdar-2015) + - [2. 文本识别](#2-文本识别) + - [2.1 PaddleOCR 文字识别数据格式](#21-paddleocr-文字识别数据格式) + - [2.2 公开数据集](#22-公开数据集) + - [2.1 ICDAR 2015](#21-icdar-2015) + - [3. 数据存放路径](#3-数据存放路径) 这里整理了OCR中常用的公开数据集,持续更新中,欢迎各位小伙伴贡献数据集~ - -### 1. 文本检测 +## 1. 文本检测 -| 数据集名称 |图片下载地址| PPOCR标注下载地址 | +### 1.1 PaddleOCR 文字检测数据格式 + + +PaddleOCR 中的文本检测算法支持的标注文件格式如下,中间用"\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` 表示当前文本框的文字,**当其内容为“###”时,表示该文本框无效,在训练时会跳过。** + +如果您想在我们未提供的数据集上训练,可以按照上述形式构建标注文件。 + +### 1.2 公开数据集 + +| 数据集名称 |图片下载地址| PaddleOCR 标注下载地址 | |---|---|---| | ICDAR 2015 |https://rrc.cvc.uab.es/?ch=4&com=downloads| [train](https://paddleocr.bj.bcebos.com/dataset/train_icdar2015_label.txt) / [test](https://paddleocr.bj.bcebos.com/dataset/test_icdar2015_label.txt) | | ctw1500 |https://paddleocr.bj.bcebos.com/dataset/ctw1500.zip| 图片下载地址中已包含 | | total text |https://paddleocr.bj.bcebos.com/dataset/total_text.tar| 图片下载地址中已包含 | - -#### 1.1 ICDAR 2015 -icdar2015 数据集包含1000张训练图像和500张测试图像。icdar2015数据集可以从上表中链接下载,首次下载需注册。 +#### 1.2.1 ICDAR 2015 +ICDAR 2015 数据集包含1000张训练图像和500张测试图像。ICDAR 2015 数据集可以从上表中链接下载,首次下载需注册。 注册完成登陆后,下载下图中红色框标出的部分,其中, `Training Set Images`下载的内容保存在`icdar_c4_train_imgs`文件夹下,`Test Set Images` 下载的内容保存早`ch4_test_images`文件夹下

@@ -44,9 +64,102 @@ python gen_label.py --mode="det" --root_path="/path/to/icdar_c4_train_imgs/" \ └─ test_icdar2015_label.txt icdar 2015 数据集的测试标注 ``` - -### 2. 文本识别 +## 2. 文本识别 + +### 2.1 PaddleOCR 文字识别数据格式 + +PaddleOCR 中的文字识别算法支持两种数据格式: + + - `lmdb` 用于训练以lmdb格式存储的数据集,使用 [lmdb_dataset.py](../../../ppocr/data/lmdb_dataset.py) 进行读取; + - `通用数据` 用于训练以文本文件存储的数据集,使用 [simple_dataset.py](../../../ppocr/data/simple_dataset.py)进行读取。 + +下面以通用数据集为例, 介绍如何准备数据集: + +* 训练集 + +建议将训练图片放入同一个文件夹,并用一个txt文件(rec_gt_train.txt)记录图片路径和标签,txt文件里的内容如下: + +**注意:** txt文件中默认请将图片路径和图片标签用 \t 分割,如用其他方式分割将造成训练报错。 + +``` +" 图像文件名 图像标注信息 " + +train_data/rec/train/word_001.jpg 简单可依赖 +train_data/rec/train/word_002.jpg 用科技让复杂的世界更简单 +... +``` + +最终训练集应有如下文件结构: +``` +|-train_data + |-rec + |- rec_gt_train.txt + |- train + |- word_001.png + |- word_002.jpg + |- word_003.jpg + | ... +``` + +除上述单张图像为一行格式之外,PaddleOCR也支持对离线增广后的数据进行训练,为了防止相同样本在同一个batch中被多次采样,我们可以将相同标签对应的图片路径写在一行中,以列表的形式给出,在训练中,PaddleOCR会随机选择列表中的一张图片进行训练。对应地,标注文件的格式如下。 + +``` +["11.jpg", "12.jpg"] 简单可依赖 +["21.jpg", "22.jpg", "23.jpg"] 用科技让复杂的世界更简单 +3.jpg ocr +``` + +上述示例标注文件中,"11.jpg"和"12.jpg"的标签相同,都是`简单可依赖`,在训练的时候,对于该行标注,会随机选择其中的一张图片进行训练。 + + +- 验证集 + +同训练集类似,验证集也需要提供一个包含所有图片的文件夹(test)和一个rec_gt_test.txt,验证集的结构如下所示: + +``` +|-train_data + |-rec + |- rec_gt_test.txt + |- test + |- word_001.jpg + |- word_002.jpg + |- word_003.jpg + | ... +``` + -| 数据集名称 | 图片下载地址 | PPOCR标注下载地址 | +### 2.2 公开数据集 + +| 数据集名称 | 图片下载地址 | PaddleOCR 标注下载地址 | |---|---|---------------------------------------------------------------------| | en benchmark(MJ, SJ, IIIT, SVT, IC03, IC13, IC15, SVTP, and CUTE.) | [DTRB](https://github.com/clovaai/deep-text-recognition-benchmark#download-lmdb-dataset-for-traininig-and-evaluation-from-here) | LMDB格式,可直接用[lmdb_dataset.py](../../../ppocr/data/lmdb_dataset.py)加载 | +|ICDAR 2015| http://rrc.cvc.uab.es/?ch=4&com=downloads | [train](https://paddleocr.bj.bcebos.com/dataset/rec_gt_train.txt)/ [test](https://paddleocr.bj.bcebos.com/dataset/rec_gt_test.txt) | +| 多语言数据集 |[百度网盘](https://pan.baidu.com/s/1bS_u207Rm7YbY33wOECKDA) 提取码:frgi
[google drive](https://drive.google.com/file/d/18cSWX7wXSy4G0tbKJ0d9PuIaiwRLHpjA/view) | 图片下载地址中已包含 | + +#### 2.1 ICDAR 2015 + +ICDAR 2015 数据集可以在上表中链接下载,用于快速验证。也可以从上表中下载 en benchmark 所需的lmdb格式数据集。 + +下载完图片后从上表中下载转换好的标注文件。 + +PaddleOCR 也提供了数据格式转换脚本,可以将ICDAR官网 label 转换为PaddleOCR支持的数据格式。 数据转换工具在 `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" +``` + +数据样式格式如下,(a)为原始图片,(b)为每张图片对应的 Ground Truth 文本文件: +![](../../datasets/icdar_rec.png) + + +## 3. 数据存放路径 + +PaddleOCR训练数据的默认存储路径是 `PaddleOCR/train_data`,如果您的磁盘上已有数据集,只需创建软链接至数据集目录: + +``` +# linux and mac os +ln -sf /train_data/dataset +# windows +mklink /d /train_data/dataset +``` diff --git a/doc/doc_ch/dataset/table_datasets.md b/doc/doc_ch/dataset/table_datasets.md index 98e7f7ed6405eec953d9931cec5ead0254d1919c..b40482ae316a6dcad6a2db811d31ba0ba7f00ec3 100644 --- a/doc/doc_ch/dataset/table_datasets.md +++ b/doc/doc_ch/dataset/table_datasets.md @@ -5,8 +5,7 @@ - [1. PubTabNet数据集](#1-pubtabnet数据集) - [2. 好未来表格识别竞赛数据集](#2-好未来表格识别竞赛数据集) -这里整理了常用版面分析数据集,持续更新中,欢迎各位小伙伴贡献数据集~ -版面分析数据集多为目标检测数据集,除了开源数据,用户还可使用合成工具自行合成,如[labelme](https://github.com/wkentaro/labelme)等。 +这里整理了常用表格识别数据集,持续更新中,欢迎各位小伙伴贡献数据集~ ## 数据集汇总 diff --git a/doc/doc_ch/detection.md b/doc/doc_ch/detection.md index 8c4a9100a740af639d2d92388156a5570b131a16..27e1ef16e93b8ad57ccd33ff318bad255faedb6d 100644 --- a/doc/doc_ch/detection.md +++ b/doc/doc_ch/detection.md @@ -1,50 +1,32 @@ -shu # 文字检测 本节以icdar2015数据集为例,介绍PaddleOCR中检测模型训练、评估、测试的使用方式。 -- [1. 准备数据和模型](#1--------) - * [1.1 数据准备](#11-----) - * [1.1 数据准备](#111-----) - * [1.1 数据准备](#112-----) - * [1.2 下载预训练模型](#12--------) -- [2. 开始训练](#2-----) - * [2.1 启动训练](#21-----) - * [2.2 断点训练](#22-----) - * [2.3 更换Backbone 训练](#23---backbone---) - * [2.4 混合精度训练](#24---amp---) - * [2.5 分布式训练](#25---fleet---) - * [2.6 知识蒸馏训练](#26---distill---) - * [2.7 其他训练环境(Windows/macOS/Linux DCU)](#27---other---) -- [3. 模型评估与预测](#3--------) - * [3.1 指标评估](#31-----) - * [3.2 测试检测效果](#32-------) -- [4. 模型导出与预测](#4--------) +- [文字检测](#文字检测) +- [1. 准备数据和模型](#1-准备数据和模型) + - [1.1 准备数据集](#11-准备数据集) + - [1.2 下载预训练模型](#12-下载预训练模型) +- [2. 开始训练](#2-开始训练) + - [2.1 启动训练](#21-启动训练) + - [2.2 断点训练](#22-断点训练) + - [2.3 更换Backbone 训练](#23-更换backbone-训练) + - [2.4 混合精度训练](#24-混合精度训练) + - [2.5 分布式训练](#25-分布式训练) + - [2.6 知识蒸馏训练](#26-知识蒸馏训练) + - [2.7 其他训练环境](#27-其他训练环境) +- [3. 模型评估与预测](#3-模型评估与预测) + - [3.1 指标评估](#31-指标评估) + - [3.2 测试检测效果](#32-测试检测效果) +- [4. 模型导出与预测](#4-模型导出与预测) - [5. FAQ](#5-faq) # 1. 准备数据和模型 - -## 1.1 数据准备 +## 1.1 准备数据集 - -### 1.1.1 公开数据集 +准备数据集可参考 [ocr_datasets](./dataset/ocr_datasets.md) 。 -公开数据集可参考 [ocr_datasets](./dataset/ocr_datasets.md) 进行下载和准备。 - - -### 1.1.2 自定义数据集 - -PaddleOCR 文本检测算法支持的标注文件格式如下,中间用"\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` 表示当前文本框的文字,**当其内容为“###”时,表示该文本框无效,在训练时会跳过。** - -如果您想在我们未提供的数据集上训练,可以按照上述形式构建标注文件。 ## 1.2 下载预训练模型 diff --git a/doc/doc_ch/recognition.md b/doc/doc_ch/recognition.md index 6cdd547517ebb8888374b22c1b52314da53eebab..6b1a8bf5dbbe414ab06d9444f8b779bea9fe464d 100644 --- a/doc/doc_ch/recognition.md +++ b/doc/doc_ch/recognition.md @@ -4,10 +4,9 @@ - [文字识别](#文字识别) - [1. 数据准备](#1-数据准备) - - [1.1 自定义数据集](#11-自定义数据集) - - [1.2 数据下载](#12-数据下载) - - [1.3 字典](#13-字典) - - [1.4 添加空格类别](#14-添加空格类别) + - [1.1 准备数据集](#11-准备数据集) + - [1.2 字典](#12-字典) + - [1.3 添加空格类别](#13-添加空格类别) - [2. 启动训练](#2-启动训练) - [2.1 数据增强](#21-数据增强) - [2.2 通用模型训练](#22-通用模型训练) @@ -21,114 +20,14 @@ ## 1. 数据准备 +### 1.1 准备数据集 -PaddleOCR 支持两种数据格式: - - `lmdb` 用于训练以lmdb格式存储的数据集(LMDBDataSet); - - `通用数据` 用于训练以文本文件存储的数据集(SimpleDataSet); - -训练数据的默认存储路径是 `PaddleOCR/train_data`,如果您的磁盘上已有数据集,只需创建软链接至数据集目录: - -``` -# linux and mac os -ln -sf /train_data/dataset -# windows -mklink /d /train_data/dataset -``` - - -### 1.1 自定义数据集 -下面以通用数据集为例, 介绍如何准备数据集: - -* 训练集 - -建议将训练图片放入同一个文件夹,并用一个txt文件(rec_gt_train.txt)记录图片路径和标签,txt文件里的内容如下: - -**注意:** txt文件中默认请将图片路径和图片标签用 \t 分割,如用其他方式分割将造成训练报错。 - -``` -" 图像文件名 图像标注信息 " - -train_data/rec/train/word_001.jpg 简单可依赖 -train_data/rec/train/word_002.jpg 用科技让复杂的世界更简单 -... -``` - -最终训练集应有如下文件结构: -``` -|-train_data - |-rec - |- rec_gt_train.txt - |- train - |- word_001.png - |- word_002.jpg - |- word_003.jpg - | ... -``` - -除上述单张图像为一行格式之外,PaddleOCR也支持对离线增广后的数据进行训练,为了防止相同样本在同一个batch中被多次采样,我们可以将相同标签对应的图片路径写在一行中,以列表的形式给出,在训练中,PaddleOCR会随机选择列表中的一张图片进行训练。对应地,标注文件的格式如下。 - -``` -["11.jpg", "12.jpg"] 简单可依赖 -["21.jpg", "22.jpg", "23.jpg"] 用科技让复杂的世界更简单 -3.jpg ocr -``` - -上述示例标注文件中,"11.jpg"和"12.jpg"的标签相同,都是`简单可依赖`,在训练的时候,对于该行标注,会随机选择其中的一张图片进行训练。 - - -- 验证集 - -同训练集类似,验证集也需要提供一个包含所有图片的文件夹(test)和一个rec_gt_test.txt,验证集的结构如下所示: - -``` -|-train_data - |-rec - |- rec_gt_test.txt - |- test - |- word_001.jpg - |- word_002.jpg - |- word_003.jpg - | ... -``` - - - -### 1.2 数据下载 - -- ICDAR2015 - -若您本地没有数据集,可以在官网下载 [ICDAR2015](http://rrc.cvc.uab.es/?ch=4&com=downloads) 数据,用于快速验证。也可以参考[DTRB](https://github.com/clovaai/deep-text-recognition-benchmark#download-lmdb-dataset-for-traininig-and-evaluation-from-here) ,下载 benchmark 所需的lmdb格式数据集。 +准备数据集可参考 [ocr_datasets](./dataset/ocr_datasets.md) 。 如果希望复现SAR的论文指标,需要下载[SynthAdd](https://pan.baidu.com/share/init?surl=uV0LtoNmcxbO-0YA7Ch4dg), 提取码:627x。此外,真实数据集icdar2013, icdar2015, cocotext, IIIT5也作为训练数据的一部分。具体数据细节可以参考论文SAR。 -如果你使用的是icdar2015的公开数据集,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 也提供了数据格式转换脚本,可以将ICDAR官网 label 转换为PaddleOCR支持的数据格式。 数据转换工具在 `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" -``` - -数据样式格式如下,(a)为原始图片,(b)为每张图片对应的 Ground Truth 文本文件: -![](../datasets/icdar_rec.png) - -- 多语言数据集 - -多语言模型的训练数据集均为100w的合成数据,使用了开源合成工具 [text_renderer](https://github.com/Sanster/text_renderer) ,少量的字体可以通过下面两种方式下载。 -* [百度网盘](https://pan.baidu.com/s/1bS_u207Rm7YbY33wOECKDA) 提取码:frgi -* [google drive](https://drive.google.com/file/d/18cSWX7wXSy4G0tbKJ0d9PuIaiwRLHpjA/view) - - -### 1.3 字典 +### 1.2 字典 最后需要提供一个字典({word_dict_name}.txt),使模型在训练时,可以将所有出现的字符映射为字典的索引。 @@ -174,7 +73,7 @@ PaddleOCR内置了一部分字典,可以按需使用。 如需自定义dic文件,请在 `configs/rec/rec_icdar15_train.yml` 中添加 `character_dict_path` 字段, 指向您的字典路径。 -### 1.4 添加空格类别 +### 1.3 添加空格类别 如果希望支持识别"空格"类别, 请将yml文件中的 `use_space_char` 字段设置为 `True`。 diff --git a/doc/doc_en/dataset/ocr_datasets_en.md b/doc/doc_en/dataset/ocr_datasets_en.md index 30c5c0b787656be9d3a9b5c85e4e4d4e92bfadf7..140b7c76b09ac12d52e62572c141fb54a32504c6 100644 --- a/doc/doc_en/dataset/ocr_datasets_en.md +++ b/doc/doc_en/dataset/ocr_datasets_en.md @@ -1,22 +1,43 @@ -## OCR datasets +# OCR datasets -- [1. text detection](#1) - - [1.1 ICDAR 2015](#11) -- [2. text recognition](#2) +- [OCR datasets](#ocr-datasets) + - [1. Text detection](#1-text-detection) + - [1.1 PaddleOCR text detection format annotation](#11-paddleocr-text-detection-format-annotation) + - [1.2 Public dataset](#12-public-dataset) + - [1.2.1 ICDAR 2015](#121-icdar-2015) + - [2. Text recognition](#2-text-recognition) + - [2.1 PaddleOCR text recognition format annotation](#21-paddleocr-text-recognition-format-annotation) + - [2.2 Public dataset](#22-public-dataset) + - [2.1 ICDAR2015](#21-icdar2015) + - [3. 数据存放路径](#3-数据存放路径) Here is a list of public datasets commonly used in OCR, which are being continuously updated. Welcome to contribute datasets~ - -#### 1. text detection +## 1. Text detection -| dataset | Image download link | PPOCR format annotation download link | +### 1.1 PaddleOCR text detection format annotation + +The annotation file formats supported by the PaddleOCR text detection algorithm are as follows, separated by "\t": +``` +" Image file name Image annotation information encoded by json.dumps" +ch4_test_images/img_61.jpg [{"transcription": "MASA", "points": [[310, 104], [416, 141], [418, 216], [312, 179]]}, {...}] +``` +The image annotation after **json.dumps()** encoding is a list containing multiple dictionaries. + +The `points` in the dictionary represent the coordinates (x, y) of the four points of the text box, arranged clockwise from the point at the upper left corner. + +`transcription` represents the text of the current text box. **When its content is "###" it means that the text box is invalid and will be skipped during training.** + +If you want to train PaddleOCR on other datasets, please build the annotation file according to the above format. + +### 1.2 Public dataset +| dataset | Image download link | PaddleOCR format annotation download link | |---|---|---| | ICDAR 2015 | https://rrc.cvc.uab.es/?ch=4&com=downloads | [train](https://paddleocr.bj.bcebos.com/dataset/train_icdar2015_label.txt) / [test](https://paddleocr.bj.bcebos.com/dataset/test_icdar2015_label.txt) | | ctw1500 | https://paddleocr.bj.bcebos.com/dataset/ctw1500.zip | Included in the downloaded image zip | -| total text | https://paddleocr.bj.bcebos.com/dataset/total_text.tar | Included in the downloaded image zip | +| total text | https://paddleocr.bj.bcebos.com/dataset/total_text.tar | Included in the downloaded image zip | - -#### 1.1 ICDAR 2015 +#### 1.2.1 ICDAR 2015 The icdar2015 dataset contains train set which has 1000 images obtained with wearable cameras and test set which has 500 images obtained with wearable cameras. The icdar2015 dataset can be downloaded from the link in the table above. Registration is required for downloading. @@ -27,9 +48,9 @@ After registering and logging in, download the part marked in the red box in the

-Decompress the downloaded dataset to the working directory, assuming it is decompressed under PaddleOCR/train_data/. Then download the PPOCR format annotation file from the table above. +Decompress the downloaded dataset to the working directory, assuming it is decompressed under PaddleOCR/train_data/. Then download the PaddleOCR format annotation file from the table above. -PaddleOCR also provides a data format conversion script, which can convert the official website label to the PPOCR format. The data conversion tool is in `ppocr/utils/gen_label.py`, here is the training set as an example: +PaddleOCR also provides a data format conversion script, which can convert the official website label to the PaddleOCR format. The data conversion tool is in `ppocr/utils/gen_label.py`, here is the training set as an example: ``` # Convert the label file downloaded from the official website to train_icdar2015_label.txt python gen_label.py --mode="det" --root_path="/path/to/icdar_c4_train_imgs/" \ @@ -47,9 +68,91 @@ After decompressing the data set and downloading the annotation file, PaddleOCR/ ``` - -#### 2. text recognition +## 2. Text recognition + +### 2.1 PaddleOCR text recognition format annotation + +The text recognition algorithm in PaddleOCR supports two data formats: + - `lmdb` is used to train data sets stored in lmdb format, use [lmdb_dataset.py](../../../ppocr/data/lmdb_dataset.py) to load; + - `通用数据` is used to train data sets stored in text files, use [simple_dataset.py](../../../ppocr/data/simple_dataset.py) to load. + + +If you want to use your own data for training, please refer to the following to organize your data. -| dataset | Image download link | PPOCR format annotation download link | +- Training set + +It is recommended to put the training images in the same folder, and use a txt file (rec_gt_train.txt) to store the image path and label. The contents of the txt file are as follows: + +* Note: by default, the image path and image label are split with \t, if you use other methods to split, it will cause training error + +``` +" Image file name Image annotation " + +train_data/rec/train/word_001.jpg 简单可依赖 +train_data/rec/train/word_002.jpg 用科技让复杂的世界更简单 +... +``` + +The final training set should have the following file structure: + +``` +|-train_data + |-rec + |- rec_gt_train.txt + |- train + |- word_001.png + |- word_002.jpg + |- word_003.jpg + | ... +``` + +- Test set + +Similar to the training set, the test set also needs to be provided a folder containing all images (test) and a rec_gt_test.txt. The structure of the test set is as follows: + +``` +|-train_data + |-rec + |-ic15_data + |- rec_gt_test.txt + |- test + |- word_001.jpg + |- word_002.jpg + |- word_003.jpg + | ... +``` + +### 2.2 Public dataset +| dataset | Image download link | PaddleOCR format annotation download link | |---|---|---| | en benchmark(MJ, SJ, IIIT, SVT, IC03, IC13, IC15, SVTP, and CUTE.) | [DTRB](https://github.com/clovaai/deep-text-recognition-benchmark#download-lmdb-dataset-for-traininig-and-evaluation-from-here) | LMDB format, which can be loaded directly with [lmdb_dataset.py](../../../ppocr/data/lmdb_dataset.py) | +|ICDAR 2015| http://rrc.cvc.uab.es/?ch=4&com=downloads | [train](https://paddleocr.bj.bcebos.com/dataset/rec_gt_train.txt)/ [test](https://paddleocr.bj.bcebos.com/dataset/rec_gt_test.txt) | +| Multilingual datasets |[Baidu network disk](https://pan.baidu.com/s/1bS_u207Rm7YbY33wOECKDA) Extraction code: frgi
[google drive](https://drive.google.com/file/d/18cSWX7wXSy4G0tbKJ0d9PuIaiwRLHpjA/view) | Included in the downloaded image zip | + +#### 2.1 ICDAR2015 + +The ICDAR2015 dataset can be downloaded from the link in the table above for quick validation. The lmdb format dataset required by en benchmark can also be downloaded from the table above. + +Then download the PaddleOCR format annotation file from the table above. + +PaddleOCR also provides a data format conversion script, which can convert the ICDAR official website label to the data format supported by PaddleOCR. The data conversion tool is in `ppocr/utils/gen_label.py`, here is the training set as an example: + +``` +# Convert the label file downloaded from the official website to rec_gt_label.txt +python gen_label.py --mode="rec" --input_path="{path/of/origin/label}" --output_label="rec_gt_label.txt" +``` + +The data format is as follows, (a) is the original picture, (b) is the Ground Truth text file corresponding to each picture: + +![](../../datasets/icdar_rec.png) + +## 3. 数据存放路径 + +The default storage path for PaddleOCR training data is `PaddleOCR/train_data`, if you already have a dataset on your disk, just create a soft link to the dataset directory: + +``` +# linux and mac os +ln -sf /train_data/dataset +# windows +mklink /d /train_data/dataset +``` diff --git a/doc/doc_en/dataset/table_datasets_en.md b/doc/doc_en/dataset/table_datasets_en.md index 91d76a710c2e73438e04be8b0d7302c49f9d19d7..60bd61dfd1b2aa30722802673f26e8b19a2a54c0 100644 --- a/doc/doc_en/dataset/table_datasets_en.md +++ b/doc/doc_en/dataset/table_datasets_en.md @@ -5,7 +5,7 @@ - [1. PubTabNet](#1-pubtabnet) - [2. TAL Table Recognition Competition Dataset](#2-tal-table-recognition-competition-dataset) -Here are the commonly used layout analysis datasets, which are being updated continuously. Welcome to contribute datasets~ +Here are the commonly used table recognition datasets, which are being updated continuously. Welcome to contribute datasets~ ## Dataset Summary diff --git a/doc/doc_en/detection_en.md b/doc/doc_en/detection_en.md index 87f0855559467de089358e9474a948a8b0d345e4..aa5e7f41b761d7ca1919e24b6a251b3572492974 100644 --- a/doc/doc_en/detection_en.md +++ b/doc/doc_en/detection_en.md @@ -2,44 +2,26 @@ This section uses the icdar2015 dataset as an example to introduce the training, evaluation, and testing of the detection model in PaddleOCR. -- [1. Data and Weights Preparation](#1-data-and-weights-preparatio) - * [1.1 Data Preparation](#11-data-preparation) - * [1.1.1 Public dataset](#111-public-dataset) - * [1.1.2 Custom dataset](#112-custom-dataset) - * [1.2 Download Pre-trained Model](#12-download-pretrained-model) -- [2. Training](#2-training) - * [2.1 Start Training](#21-start-training) - * [2.2 Load Trained Model and Continue Training](#22-load-trained-model-and-continue-training) - * [2.3 Training with New Backbone](#23-training-with-new-backbone) - * [2.4 Training with knowledge distillation](#24) -- [3. Evaluation and Test](#3-evaluation-and-test) - * [3.1 Evaluation](#31-evaluation) - * [3.2 Test](#32-test) -- [4. Inference](#4-inference) -- [5. FAQ](#2-faq) +- [Text Detection](#text-detection) + - [1. Data and Weights Preparation](#1-data-and-weights-preparation) + - [1.1 Data Preparation](#11-data-preparation) + - [1.2 Download Pre-trained Model](#12-download-pre-trained-model) + - [2. Training](#2-training) + - [2.1 Start Training](#21-start-training) + - [2.2 Load Trained Model and Continue Training](#22-load-trained-model-and-continue-training) + - [2.3 Training with New Backbone](#23-training-with-new-backbone) + - [2.4 Training with knowledge distillation](#24-training-with-knowledge-distillation) + - [3. Evaluation and Test](#3-evaluation-and-test) + - [3.1 Evaluation](#31-evaluation) + - [3.2 Test](#32-test) + - [4. Inference](#4-inference) + - [5. FAQ](#5-faq) ## 1. Data and Weights Preparation ### 1.1 Data Preparation -### 1.1.1 Public dataset -Public datasets can be downloaded and prepared by referring to [ocr_datasets](./dataset/ocr_datasets_en.md). - -### 1.1.2 Custom dataset - -The annotation file formats supported by the PaddleOCR text detection algorithm are as follows, separated by "\t": -``` -" Image file name Image annotation information encoded by json.dumps" -ch4_test_images/img_61.jpg [{"transcription": "MASA", "points": [[310, 104], [416, 141], [418, 216], [312, 179]]}, {...}] -``` -The image annotation after **json.dumps()** encoding is a list containing multiple dictionaries. - -The `points` in the dictionary represent the coordinates (x, y) of the four points of the text box, arranged clockwise from the point at the upper left corner. - -`transcription` represents the text of the current text box. **When its content is "###" it means that the text box is invalid and will be skipped during training.** - -If you want to train PaddleOCR on other datasets, please build the annotation file according to the above format. - +To prepare datasets, refer to [ocr_datasets](./dataset/ocr_datasets_en.md) . ### 1.2 Download Pre-trained Model diff --git a/doc/doc_en/recognition_en.md b/doc/doc_en/recognition_en.md index c3700070b9d01c89cf8189a7af5f13d877114fb2..2610e76b82dcf7448bf82b13157e7855e67e4096 100644 --- a/doc/doc_en/recognition_en.md +++ b/doc/doc_en/recognition_en.md @@ -1,130 +1,30 @@ # Text Recognition -- [1. Data Preparation](#DATA_PREPARATION) - - [1.1 Costom Dataset](#Costom_Dataset) - - [1.2 Dataset Download](#Dataset_download) - - [1.3 Dictionary](#Dictionary) - - [1.4 Add Space Category](#Add_space_category) - -- [2. Training](#TRAINING) - - [2.1 Data Augmentation](#Data_Augmentation) - - [2.2 General Training](#Training) - - [2.3 Multi-language Training](#Multi_language) - - [2.4 Training with Knowledge Distillation](#kd) - -- [3. Evaluation](#EVALUATION) - -- [4. Prediction](#PREDICTION) -- [5. Convert to Inference Model](#Inference) +- [Text Recognition](#text-recognition) + - [1. Data Preparation](#1-data-preparation) + - [1.1 DataSet Preparation](#11-dataset-preparation) + - [1.2 Dictionary](#12-dictionary) + - [1.4 Add Space Category](#14-add-space-category) + - [2.Training](#2training) + - [2.1 Data Augmentation](#21-data-augmentation) + - [2.2 General Training](#22-general-training) + - [2.3 Multi-language Training](#23-multi-language-training) + - [2.4 Training with Knowledge Distillation](#24-training-with-knowledge-distillation) + - [3. Evalution](#3-evalution) + - [4. Prediction](#4-prediction) + - [5. Convert to Inference Model](#5-convert-to-inference-model) ## 1. Data Preparation +### 1.1 DataSet Preparation -PaddleOCR supports two data formats: -- `LMDB` is used to train data sets stored in lmdb format(LMDBDataSet); -- `general data` is used to train data sets stored in text files(SimpleDataSet): - -Please organize the dataset as follows: - -The default storage path for training data is `PaddleOCR/train_data`, if you already have a dataset on your disk, just create a soft link to the dataset directory: - -``` -# linux and mac os -ln -sf /train_data/dataset -# windows -mklink /d /train_data/dataset -``` - - -### 1.1 Costom Dataset - -If you want to use your own data for training, please refer to the following to organize your data. - -- Training set - -It is recommended to put the training images in the same folder, and use a txt file (rec_gt_train.txt) to store the image path and label. The contents of the txt file are as follows: - -* Note: by default, the image path and image label are split with \t, if you use other methods to split, it will cause training error - -``` -" Image file name Image annotation " - -train_data/rec/train/word_001.jpg 简单可依赖 -train_data/rec/train/word_002.jpg 用科技让复杂的世界更简单 -... -``` - -The final training set should have the following file structure: - -``` -|-train_data - |-rec - |- rec_gt_train.txt - |- train - |- word_001.png - |- word_002.jpg - |- word_003.jpg - | ... -``` - -- Test set - -Similar to the training set, the test set also needs to be provided a folder containing all images (test) and a rec_gt_test.txt. The structure of the test set is as follows: - -``` -|-train_data - |-rec - |-ic15_data - |- rec_gt_test.txt - |- test - |- word_001.jpg - |- word_002.jpg - |- word_003.jpg - | ... -``` - - -### 1.2 Dataset Download - -- ICDAR2015 - -If you do not have a dataset locally, you can download it on the official website [icdar2015](http://rrc.cvc.uab.es/?ch=4&com=downloads). -Also refer to [DTRB](https://github.com/clovaai/deep-text-recognition-benchmark#download-lmdb-dataset-for-traininig-and-evaluation-from-here) ,download the lmdb format dataset required for benchmark +To prepare datasets, refer to [ocr_datasets](./dataset/ocr_datasets.md) . If you want to reproduce the paper SAR, you need to download extra dataset [SynthAdd](https://pan.baidu.com/share/init?surl=uV0LtoNmcxbO-0YA7Ch4dg), extraction code: 627x. Besides, icdar2013, icdar2015, cocotext, IIIT5k datasets are also used to train. For specific details, please refer to the paper SAR. -PaddleOCR provides label files for training the icdar2015 dataset, which can be downloaded in the following ways: - -``` -# Training set label -wget -P ./train_data/ic15_data https://paddleocr.bj.bcebos.com/dataset/rec_gt_train.txt -# Test Set Label -wget -P ./train_data/ic15_data https://paddleocr.bj.bcebos.com/dataset/rec_gt_test.txt -``` - -PaddleOCR also provides a data format conversion script, which can convert ICDAR official website label to a data format -supported by PaddleOCR. The data conversion tool is in `ppocr/utils/gen_label.py`, here is the training set as an example: - -``` -# convert the official gt to rec_gt_label.txt -python gen_label.py --mode="rec" --input_path="{path/of/origin/label}" --output_label="rec_gt_label.txt" -``` - -The data format is as follows, (a) is the original picture, (b) is the Ground Truth text file corresponding to each picture: - -![](../datasets/icdar_rec.png) - - -- Multilingual dataset - -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 using the following two methods. -* [Baidu Netdisk](https://pan.baidu.com/s/1bS_u207Rm7YbY33wOECKDA) ,Extraction code:frgi. -* [Google drive](https://drive.google.com/file/d/18cSWX7wXSy4G0tbKJ0d9PuIaiwRLHpjA/view) - - -### 1.3 Dictionary +### 1.2 Dictionary Finally, a dictionary ({word_dict_name}.txt) needs to be provided so that when the model is trained, all the characters that appear can be mapped to the dictionary index.