diff --git a/README_ch.md b/README_ch.md index ba2f0305838144ea327219aa1af73aa45f486779..e3d8176d29d3e0ae532adf575a032d2931f34909 100755 --- a/README_ch.md +++ b/README_ch.md @@ -41,6 +41,10 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力 - 移动端:[安装包DEMO下载地址](https://ai.baidu.com/easyedge/app/openSource?from=paddlelite)(基于EasyEdge和Paddle-Lite, 支持iOS和Android系统) +## 《动手学OCR》电子书 +- [《动手学OCR》电子书📚](./doc/doc_ch/ocr_book.md) + + ## 社区、社区贡献与社区常规赛 @@ -97,10 +101,9 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力 - [基于Python预测引擎推理](./doc/doc_ch/inference_ppstructure.md) - [服务化部署](./deploy/pdserving/README_CN.md) - [前沿算法与模型🚀](./doc/doc_ch/algorithm.md) - - [OCR算法与模型](./doc/doc_ch/algorithm_overview.md) - - [文档分析算法与模型](./doc/doc_ch/algorithm_overview_structure.md) - - [基于Python预测引擎推理](./doc/doc_ch/algorithm_inference.md) - - [更多推理部署](./doc/doc_ch/algorithm_deploy.md) + - [文本检测算法](./doc/doc_ch/algorithm_overview.md#11-%E6%96%87%E6%9C%AC%E6%A3%80%E6%B5%8B%E7%AE%97%E6%B3%95) + - [文本识别算法](./doc/doc_ch/algorithm_overview.md#12-%E6%96%87%E6%9C%AC%E8%AF%86%E5%88%AB%E7%AE%97%E6%B3%95) + - [端到端算法](./doc/doc_ch/algorithm_overview.md#2-%E6%96%87%E6%9C%AC%E8%AF%86%E5%88%AB%E7%AE%97%E6%B3%95) - [使用PaddleOCR架构添加新算法](./doc/doc_ch/add_new_algorithm.md) - 数据标注与合成 - [半自动标注工具PPOCRLabel](./PPOCRLabel/README_ch.md) @@ -114,27 +117,14 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力 - [版面分析数据集](./doc/doc_ch/layout_datasets.md) - [表格识别数据集](./doc/doc_ch/table_datasets.md) - [DocVQA数据集](./doc/doc_ch/docvqa_datasets.md) +- [代码组织结构](./doc/doc_ch/tree.md) - [效果展示](#效果展示) -- [《动手学OCR》电子书📚](./doc/doc_ch/ocr_book.md) - FAQ - [通用问题](./doc/doc_ch/FAQ.md) - [PaddleOCR实战问题](./doc/doc_ch/FAQ.md) - [参考文献](./doc/doc_ch/reference.md) - [许可证书](#许可证书) -- [代码组织结构](./doc/doc_ch/tree.md) - - - - - - -## PP-OCRv2 Pipeline -
- -
-[1] PP-OCR是一个实用的超轻量OCR系统。主要由DB文本检测、检测框矫正和CRNN文本识别三部分组成。该系统从骨干网络选择和调整、预测头部的设计、数据增强、学习率变换策略、正则化参数选择、预训练模型使用以及模型自动裁剪量化8个方面,采用19个有效策略,对各个模块的模型进行效果调优和瘦身(如绿框所示),最终得到整体大小为3.5M的超轻量中英文OCR和2.8M的英文数字OCR。更多细节请参考PP-OCR技术方案 https://arxiv.org/abs/2009.09941 -[2] PP-OCRv2在PP-OCR的基础上,进一步在5个方面重点优化,检测模型采用CML协同互学习知识蒸馏策略和CopyPaste数据增广策略;识别模型采用LCNet轻量级骨干网络、UDML 改进知识蒸馏策略和[Enhanced CTC loss](./doc/doc_ch/enhanced_ctc_loss.md)损失函数改进(如上图红框所示),进一步在推理速度和预测效果上取得明显提升。更多细节请参考PP-OCRv2[技术报告](https://arxiv.org/abs/2109.03144)。 diff --git a/doc/doc_ch/algorithm.md b/doc/doc_ch/algorithm.md index 19841424ea1b6d0b5a7f5995bd75c6847d166995..3056f35d5260812686447367f7cbddc1e1cad531 100644 --- a/doc/doc_ch/algorithm.md +++ b/doc/doc_ch/algorithm.md @@ -1,3 +1,13 @@ -汇集前沿算法、论文复现结果、打通python预测 +# 前沿算法与模型 -欢迎贡献更多算法,合入有奖! \ No newline at end of file +PaddleOCR将**持续新增**支持OCR领域前沿算法与模型,已支持的模型与使用教程可点击下方列表查看: + +- [文本检测算法](./algorithm_overview.md#11-%E6%96%87%E6%9C%AC%E6%A3%80%E6%B5%8B%E7%AE%97%E6%B3%95) +- [文本识别算法](./algorithm_overview.md#12-%E6%96%87%E6%9C%AC%E8%AF%86%E5%88%AB%E7%AE%97%E6%B3%95) +- [端到端算法](./algorithm_overview.md#2-%E6%96%87%E6%9C%AC%E8%AF%86%E5%88%AB%E7%AE%97%E6%B3%95) + +**欢迎广大开发者合作共建,贡献更多算法,合入有奖🎁!具体可查看[社区常规赛](https://github.com/PaddlePaddle/PaddleOCR/issues/4982)。** + +新增算法可参考如下教程: + +- [使用PaddleOCR架构添加新算法](./add_new_algorithm.md) \ No newline at end of file diff --git a/doc/doc_ch/algorithm_deploy.md b/doc/doc_ch/algorithm_deploy.md deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/doc/doc_ch/algorithm_det_db.md b/doc/doc_ch/algorithm_det_db.md new file mode 100644 index 0000000000000000000000000000000000000000..6c92b699fcc42ead9bcaf2f8e9c3fa2acb078528 --- /dev/null +++ b/doc/doc_ch/algorithm_det_db.md @@ -0,0 +1,119 @@ +# DB + +- [1. 算法简介](#1) +- [2. 环境配置](#2) +- [3. 快速使用](#3) +- [4. 模型训练、评估、预测](#4) +- [5. 推理部署](#5) +- [6. FAQ](#6) + + +## 1. 算法简介 + +论文信息: +> [Real-time Scene Text Detection with Differentiable Binarization](https://arxiv.org/abs/1911.08947) +> Liao, Minghui and Wan, Zhaoyi and Yao, Cong and Chen, Kai and Bai, Xiang +> AAAI, 2020 + +在ICDAR2015文本检测公开数据集上,算法复现效果如下: + +|模型|骨干网络|precision|recall|Hmean|下载链接| +| --- | --- | --- | --- | --- | --- | +|DB|ResNet50_vd|86.41%|78.72%|82.38%|[训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/en/det_r50_vd_db_v2.0_train.tar)| +|DB|MobileNetV3|77.29%|73.08%|75.12%|[训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/en/det_mv3_db_v2.0_train.tar)| + + + +## 2. 环境配置 +请先参考[《运行环境准备》](./environment.md)配置PaddleOCR运行环境,参考[《项目克隆》](./clone.md)克隆项目 + + + +## 3. 快速使用 +参考本节,可以直接下载训好的模型,进行基于训练引擎的模型预测。 + +### 训练模型下载 +根据第1节给出的模型列表,选择下载训练模型: +```bash +mkdir trained_models && cd trained_models +wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/en/det_mv3_db_v2.0_train.tar && tar xf det_mv3_db_v2.0_train.tar +cd .. +``` +* windows 环境下如果没有安装wget,下载模型时可将链接复制到浏览器中下载,并解压放置在相应目录下 + +解压完毕后应有如下文件结构: +``` +├── det_mv3_db_v2.0_train +│ ├── best_accuracy.states +│ ├── best_accuracy.pdparams +│ ├── best_accuracy.pdopt +│ └── train.log +``` +### 单张图像或者图像集合预测 +```bash +# 预测image_dir指定的单张图像 +python3 tools/infer/predict_e2e.py --e2e_algorithm="PGNet" --image_dir="./doc/imgs_en/img623.jpg" --e2e_model_dir="./inference/e2e_server_pgnetA_infer/" --e2e_pgnet_valid_set="totaltext" + +# 预测image_dir指定的图像集合 +python3 tools/infer/predict_e2e.py --e2e_algorithm="PGNet" --image_dir="./doc/imgs_en/" --e2e_model_dir="./inference/e2e_server_pgnetA_infer/" --e2e_pgnet_valid_set="totaltext" + +# 如果想使用CPU进行预测,需设置use_gpu参数为False +python3 tools/infer/predict_e2e.py --e2e_algorithm="PGNet" --image_dir="./doc/imgs_en/img623.jpg" --e2e_model_dir="./inference/e2e_server_pgnetA_infer/" --e2e_pgnet_valid_set="totaltext" --use_gpu=False +``` +### 可视化结果 +可视化文本检测结果默认保存到./inference_results文件夹里面,结果文件的名称前缀为'e2e_res'。结果示例如下: +![](../imgs_results/e2e_res_img623_pgnet.jpg) + + +## 4. 模型训练、评估、预测 +### 4.1 训练 +### 4.2 评估 +### 4.3 预测 + + +## 5. 推理部署 +### 5.1 Python推理 +首先将DB文本检测训练过程中保存的模型,转换成inference model。以基于Resnet50_vd骨干网络,在ICDAR2015英文数据集训练的模型为例( [模型下载地址](https://paddleocr.bj.bcebos.com/dygraph_v2.0/en/det_r50_vd_db_v2.0_train.tar) ),可以使用如下命令进行转换: + +``` +python3 tools/export_model.py -c configs/det/det_r50_vd_db.yml -o Global.pretrained_model=./det_r50_vd_db_v2.0_train/best_accuracy Global.save_inference_dir=./inference/det_db +``` + +DB文本检测模型推理,可以执行如下命令: + +``` +python3 tools/infer/predict_det.py --image_dir="./doc/imgs_en/img_10.jpg" --det_model_dir="./inference/det_db/" +``` + +可视化文本检测结果默认保存到`./inference_results`文件夹里面,结果文件的名称前缀为'det_res'。结果示例如下: + +![](../imgs_results/det_res_img_10_db.jpg) + +**注意**:由于ICDAR2015数据集只有1000张训练图像,且主要针对英文场景,所以上述模型对中文文本图像检测效果会比较差。 + +### 5.2 C++推理 +敬请期待 + +### 5.3 Serving服务化部署 +敬请期待 + +### 5.4 Paddle2ONNX推理 +敬请期待 + + +## 6. FAQ + + +## 引用 + +```bibtex +@inproceedings{liao2020real, + title={Real-time scene text detection with differentiable binarization}, + author={Liao, Minghui and Wan, Zhaoyi and Yao, Cong and Chen, Kai and Bai, Xiang}, + booktitle={Proceedings of the AAAI Conference on Artificial Intelligence}, + volume={34}, + number={07}, + pages={11474--11481}, + year={2020} +} +``` \ No newline at end of file diff --git a/doc/doc_ch/pgnet.md b/doc/doc_ch/algorithm_e2e_pgnet.md similarity index 99% rename from doc/doc_ch/pgnet.md rename to doc/doc_ch/algorithm_e2e_pgnet.md index 0aee58ec1aca24d06305c47569fdf156df6ee874..83c1114e58a69355dadfa91902e576b552e8dcab 100644 --- a/doc/doc_ch/pgnet.md +++ b/doc/doc_ch/algorithm_e2e_pgnet.md @@ -43,7 +43,7 @@ PGNet算法细节详见[论文](https://www.aaai.org/AAAI21Papers/AAAI-2885.Wang ## 二、环境配置 -请先参考[《运行环境准备》](./environment.md)配置PaddleOCR运行环境,参考[《PaddleOCR全景图与项目克隆》](./paddleOCR_overview.md)克隆项目 +请先参考[《运行环境准备》](./environment.md)配置PaddleOCR运行环境,参考[《项目克隆》](./clone.md)克隆项目 ## 三、快速使用 diff --git a/doc/doc_ch/algorithm_overview.md b/doc/doc_ch/algorithm_overview.md index e595bb6ce61e1f2c9158899447d5fa2deac8e8b5..313ef9b15e7e3a2d8e7aa3ea31add75f18bb27e3 100755 --- a/doc/doc_ch/algorithm_overview.md +++ b/doc/doc_ch/algorithm_overview.md @@ -16,14 +16,15 @@ ### 1.1 文本检测算法 -PaddleOCR开源的文本检测算法列表: -- [x] DB([paper]( https://arxiv.org/abs/1911.08947)) [2](ppocr推荐) -- [x] EAST([paper](https://arxiv.org/abs/1704.03155))[1] -- [x] SAST([paper](https://arxiv.org/abs/1908.05498))[4] -- [x] PSENet([paper](https://arxiv.org/abs/1903.12473v2)) -- [x] FCENet([paper](https://arxiv.org/abs/2104.10442)) +已支持的文本检测算法列表(戳链接获取使用教程): +- [x] [DB](./algorithm_det_db.md) +- [x] [EAST](./algorithm_det_east.md) +- [x] [SAST](./algorithm_det_sast.md) +- [x] [PSENet](./algorithm_det_psenet.md) +- [x] [FCENet](./algorithm_det_fcenet.md) 在ICDAR2015文本检测公开数据集上,算法效果如下: + |模型|骨干网络|precision|recall|Hmean|下载链接| | --- | --- | --- | --- | --- | --- | |EAST|ResNet50_vd|88.71%|81.36%|84.88%|[训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/en/det_r50_vd_east_v2.0_train.tar)| @@ -51,25 +52,19 @@ PaddleOCR开源的文本检测算法列表: * [Google Drive下载地址](https://drive.google.com/drive/folders/1ll2-XEVyCQLpJjawLDiRlvo_i4BqHCJe?usp=sharing) -**模型训练与推理** - -- 以上文本检测算法的训练请参考文档教程中[模型训练/评估中的文本检测部分](./detection.md)。 -- 上述模型中除PP-OCR系列模型以外,其余模型仅支持基于Python引擎的推理,具体内容可参考[基于Python预测引擎推理](./algorithm_inference.md) - - ### 1.2 文本识别算法 -PaddleOCR开源的文本识别算法列表: -- [x] CRNN([paper](https://arxiv.org/abs/1507.05717))[7](ppocr推荐) -- [x] Rosetta([paper](https://arxiv.org/abs/1910.05085))[10] -- [x] STAR-Net([paper](http://www.bmva.org/bmvc/2016/papers/paper043/index.html))[11] -- [x] RARE([paper](https://arxiv.org/abs/1603.03915v1))[12] -- [x] SRN([paper](https://arxiv.org/abs/2003.12294))[5] -- [x] NRTR([paper](https://arxiv.org/abs/1806.00926v2))[13] -- [x] SAR([paper](https://arxiv.org/abs/1811.00751v2)) -- [x] SEED([paper](https://arxiv.org/pdf/2005.10977.pdf)) +已支持的文本识别算法列表(戳链接获取使用教程): +- [x] [CRNN](./algorithm_rec_crnn.md) +- [x] [Rosetta](./algorithm_rec_rosetta.md) +- [x] [STAR-Net](./algorithm_rec_starnet.md) +- [x] [RARE](./algorithm_rec_rare.md) +- [x] [SRN](./algorithm_rec_srn.md) +- [x] [NRTR](./algorithm_rec_nrtr.md) +- [x] [SAR](./algorithm_rec_sar.md) +- [x] [SEED](./algorithm_rec_seed.md) 参考[DTRB](https://arxiv.org/abs/1904.01906)[3]文字识别训练和评估流程,使用MJSynth和SynthText两个文字识别数据集训练,在IIIT, SVT, IC03, IC13, IC15, SVTP, CUTE数据集上进行评估,算法效果如下: @@ -89,20 +84,11 @@ PaddleOCR开源的文本识别算法列表: |SEED|Aster_Resnet| 85.35% | rec_resnet_stn_bilstm_att | [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.1/rec/rec_resnet_stn_bilstm_att.tar) | -**模型训练与推理** - -- 以上文本识别算法的训练请参考文档教程中[模型训练/评估中的文本识别部分](./recognition.md)。 -- 上述模型中除PP-OCR系列模型以外,其余模型仅支持基于Python引擎的推理,具体内容可参考[基于Python预测引擎推理](./algorithm_inference.md) - - ## 2. 端到端算法 -PaddleOCR开源的端到端OCR算法列表: -- [x] PGNet([paper](https://www.aaai.org/AAAI21Papers/AAAI-2885.WangP.pdf)) - -> [PGNet更多信息与教程](./pgnet.md) - +已支持的端到端OCR算法列表(戳链接获取使用教程): +- [x] [PGNet](./algorithm_e2e_pgnet.md) diff --git a/doc/doc_ch/algorithm_overview_structure.md b/doc/doc_ch/algorithm_overview_structure.md deleted file mode 100644 index 4bf05220f43c3619c71235e5e67bd9c1b313a77b..0000000000000000000000000000000000000000 --- a/doc/doc_ch/algorithm_overview_structure.md +++ /dev/null @@ -1,6 +0,0 @@ -# 文档分析算法 - -- [1. 版面分析算法]() -- [2. 表格识别算法]() -- [3. 关键信息提取算法]() -- [4. DocVQA算法]() \ No newline at end of file diff --git a/doc/doc_ch/clone.md b/doc/doc_ch/clone.md new file mode 100644 index 0000000000000000000000000000000000000000..f2ec15fd26277a337ca2f1de1cf299fdff168b7c --- /dev/null +++ b/doc/doc_ch/clone.md @@ -0,0 +1,23 @@ +# 项目克隆 + +## 1. 克隆PaddleOCR repo代码 + +``` +【推荐】git clone https://github.com/PaddlePaddle/PaddleOCR +``` + +如果因为网络问题无法pull成功,也可选择使用码云上的托管: + +``` +git clone https://gitee.com/paddlepaddle/PaddleOCR +``` + +注:码云托管代码可能无法实时同步本github项目更新,存在3~5天延时,请优先使用推荐方式。 + +## 2. 安装第三方库 + +``` +cd PaddleOCR +pip3 install -r requirements.txt +``` + diff --git a/doc/doc_ch/paddleOCR_overview.md b/doc/doc_ch/paddleOCR_overview.md deleted file mode 100644 index f49c1ae302607ff6629da2462f91a36793b4db3a..0000000000000000000000000000000000000000 --- a/doc/doc_ch/paddleOCR_overview.md +++ /dev/null @@ -1,33 +0,0 @@ -# PaddleOCR全景图与项目克隆 - -## 1. PaddleOCR全景图 - -PaddleOCR包含丰富的文本检测、文本识别以及端到端算法。结合实际测试与产业经验,PaddleOCR选择DB和CRNN作为基础的检测和识别模型,经过一系列优化策略提出面向产业应用的PP-OCR模型。PP-OCR模型针对通用场景,根据不同语种形成了PP-OCR模型库。基于PP-OCR的能力,PaddleOCR针对文档场景任务发布PP-Structure工具库,包含版面分析和表格识别两大任务。为了打通产业落地的全流程,PaddleOCR提供了规模化的数据生产工具和多种预测部署工具,助力开发者快速落地。 - -
- -
- -## 2. 项目克隆 - -### **2.1 克隆PaddleOCR repo代码** - -``` -【推荐】git clone https://github.com/PaddlePaddle/PaddleOCR -``` - -如果因为网络问题无法pull成功,也可选择使用码云上的托管: - -``` -git clone https://gitee.com/paddlepaddle/PaddleOCR -``` - -注:码云托管代码可能无法实时同步本github项目更新,存在3~5天延时,请优先使用推荐方式。 - -### **2.2 安装第三方库** - -``` -cd PaddleOCR -pip3 install -r requirements.txt -``` - diff --git a/doc/features.png b/doc/features.png index ee3a7b88b715b8aaf4753a3c1e7f645c12585d81..ffdb39e9c9249d66eea00f03cd11d8a534db98c1 100644 Binary files a/doc/features.png and b/doc/features.png differ diff --git a/doc/overview.png b/doc/overview.png deleted file mode 100644 index c5c4e09d6730bb0b1ca2c0b5442079ceb41ecdfa..0000000000000000000000000000000000000000 Binary files a/doc/overview.png and /dev/null differ