diff --git a/README_ch.md b/README_ch.md index 890a36f78ce28d93313e109c2ed4efe0302cfa92..24044201879b4058af0beee5c94e4425420c216a 100755 --- a/README_ch.md +++ b/README_ch.md @@ -8,7 +8,7 @@ PaddleOCR同时支持动态图与静态图两种编程范式 - 静态图版本:develop分支 **近期更新** -- 2021.3.22 [FAQ](./doc/doc_ch/FAQ.md)新增5个高频问题,总数193个,每周一都会更新,欢迎大家持续关注。 +- 2021.3.16 [FAQ](./doc/doc_ch/FAQ.md)新增5个高频问题,总数188个,每周一都会更新,欢迎大家持续关注。 - 2021.2.8 正式发布PaddleOCRv2.0(branch release/2.0)并设置为推荐用户使用的默认分支. 发布的详细内容,请参考: https://github.com/PaddlePaddle/PaddleOCR/releases/tag/v2.0.0 - 2021.1.26,28,29 PaddleOCR官方研发团队带来技术深入解读三日直播课,1月26日、28日、29日晚上19:30,[直播地址](https://live.bilibili.com/21689802) - 2021.1.21 更新多语言识别模型,目前支持语种超过27种,[多语言模型下载](./doc/doc_ch/models_list.md),包括中文简体、中文繁体、英文、法文、德文、韩文、日文、意大利文、西班牙文、葡萄牙文、俄罗斯文、阿拉伯文等,后续计划可以参考[多语言研发计划](https://github.com/PaddlePaddle/PaddleOCR/issues/1048) diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index e698d20422bb46be1be7f7be82354595633c1ccf..3f394c2ea3681ae2e636d42d8c04bd8a9192cfbc 100755 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -9,34 +9,41 @@ ## PaddleOCR常见问题汇总(持续更新) -* [近期更新(2021.3.22)](#近期更新) +* [近期更新(2021.3.16)](#近期更新) * [【精选】OCR精选10个问题](#OCR精选10个问题) -* [【理论篇】OCR通用40个问题](#OCR通用问题) - * [基础知识13题](#基础知识) - * [数据集8题](#数据集2) - * [模型训练调优19题](#模型训练调优2) -* [【实战篇】PaddleOCR实战143个问题](#PaddleOCR实战问题) - * [使用咨询54题](#使用咨询) +* [【理论篇】OCR通用37个问题](#OCR通用问题) + * [基础知识12题](#基础知识) + * [数据集7题](#数据集2) + * [模型训练调优18题](#模型训练调优2) +* [【实战篇】PaddleOCR实战141个问题](#PaddleOCR实战问题) + * [使用咨询52题](#使用咨询) * [数据集18题](#数据集3) * [模型训练调优32题](#模型训练调优3) * [预测部署39题](#预测部署3) + -## 近期更新(2021.3.22) -#### Q2.1.13: PaddleOCR提供的文本识别算法包括哪些? -**A**: PaddleOCR主要提供五种文本识别算法,包括CRNN\StarNet\RARAE\Rosetta和SRN, 其中CRNN\StarNet和Rosetta是基于ctc的文字识别算法,RARE是基于attention的文字识别算法;SRN为百度自研的文本识别算法,引入了语义信息,显著提升了准确率。 详情可参照如下页面:[文本识别算法](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.0/doc/doc_ch/algorithm_overview.md#%E6%96%87%E6%9C%AC%E8%AF%86%E5%88%AB%E7%AE%97%E6%B3%95) +## 近期更新(2021.3.16) + +#### Q2.1.8: 端到端的场景文本识别方法大概分为几种? + +**A**:端到端的场景文本识别方法大概分为2种:基于二阶段的方法和基于字符级别的方法。基于两阶段的方法一般先检测文本块,然后提取文本块中的特征用于识别,例如ABCNet;基于字符级别方法直接进行字符检测与识别,直接输出单词的文本框,字符框以及对应的字符类别,例如CharNet。 + +#### Q2.1.9: 二阶段的端到端的场景文本识别方法的不足有哪些? + +**A**: 这类方法一般需要设计针对ROI提取特征的方法,而ROI操作一般比较耗时。 + +#### Q2.1.10: 基于字符级别的端到端的场景文本识别方法的不足有哪些? + +**A**: 这类方法一方面训练时需要加入字符级别的数据,一般使用合成数据,但是合成数据和真实数据有分布Gap。另一方面,现有工作大多数假设文本阅读方向,从上到下,从左到右,没有解决文本方向预测问题。 -#### Q2.2.8: DBNet如果想使用多边形作为输入,数据标签格式应该如何设定? -**A**:如果想使用多边形作为DBNet的输入,数据标签也应该用多边形来表示。这样子可以更好得拟合弯曲文本。PPOCRLabel暂时只支持矩形框标注和四边形框标注。 +#### Q2.1.11: AAAI 2021最新的端到端场景文本识别PGNet算法有什么特点? -#### Q2.3.19: 参照文档做实际项目时,是重新训练还是在官方训练的基础上进行训练?具体如何操作? -**A**: 基于官方提供的模型,进行finetune的话,收敛会更快一些。 具体操作上,以识别模型训练为例:如果修改了字符文件,可以设置pretraind_model为官方提供的预训练模型 +**A**: PGNet不需要字符级别的标注,NMS操作以及ROI操作。同时提出预测文本行内的阅读顺序模块和基于图的修正模块来提升文本识别效果。该算法是百度自研,近期会在PaddleOCR开源。 -#### Q3.1.53: 预测时提示图像过大,显存、内存溢出了,应该如何处理? -**A**: 可以按照这个PR的修改来缓解显存、内存占用 [#2230](https://github.com/PaddlePaddle/PaddleOCR/pull/2230) +#### Q2.1.12: PubTabNet 数据集关注的是什么问题? -#### Q3.1.54: 用c++来部署,目前支持Paddle2.0的模型吗? -**A**: PPOCR 2.0的模型在arm上运行可以参照该PR [#1877](https://github.com/PaddlePaddle/PaddleOCR/pull/1877) +**A**: PubTabNet是IBM提出的基于图片格式的表格识别数据集,包含 56.8 万张表格数据的图像,以及图像对应的 html 格式的注释。该数据集的发布推动了表格结构化算法的研发和落地应用。 ## 【精选】OCR精选10个问题 @@ -72,7 +79,8 @@ **A**:(1)在人眼确认可识别的条件下,对于背景有干扰的文字,首先要保证检测框足够准确,如果检测框不准确,需要考虑是否可以通过过滤颜色等方式对图像预处理并且增加更多相关的训练数据;在识别的部分,注意在训练数据中加入背景干扰类的扩增图像。 -(2)如果MobileNet模型不能满足需求,可以尝试ResNet系列大模型来获得更好的效果。 +(2)如果MobileNet模型不能满足需求,可以尝试ResNet系列大模型来获得更好的效果 +。 #### Q1.1.6:OCR领域常用的评估指标是什么? @@ -176,9 +184,6 @@ **A**: PubTabNet是IBM提出的基于图片格式的表格识别数据集,包含 56.8 万张表格数据的图像,以及图像对应的 html 格式的注释。该数据集的发布推动了表格结构化算法的研发和落地应用。 -#### Q2.1.13: PaddleOCR提供的文本识别算法包括哪些? -**A**: PaddleOCR主要提供五种文本识别算法,包括CRNN\StarNet\RARAE\Rosetta和SRN, 其中CRNN\StarNet和Rosetta是基于ctc的文字识别算法,RARE是基于attention的文字识别算法;SRN为百度自研的文本识别算法,引入了语义信息,显著提升了准确率。 详情可参照如下页面: [文本识别算法](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.0/doc/doc_ch/algorithm_overview.md#%E6%96%87%E6%9C%AC%E8%AF%86%E5%88%AB%E7%AE%97%E6%B3%95) - ### 数据集 @@ -210,9 +215,6 @@ **A**:SRNet是借鉴GAN中图像到图像转换、风格迁移的想法合成文本数据。不同于通用GAN的方法只选择一个分支,SRNet将文本合成任务分解为三个简单的子模块,提升合成数据的效果。这三个子模块为不带背景的文本风格迁移模块、背景抽取模块和融合模块。PaddleOCR计划将在2020年12月中旬开源基于SRNet的实用模型。 -#### Q2.2.8: DBNet如果想使用多边形作为输入,数据标签格式应该如何设定? -**A**:如果想使用多边形作为DBNet的输入,数据标签也应该用多边形来表示。这样子可以更好得拟合弯曲文本。PPOCRLabel暂时只支持矩形框标注和四边形框标注。 - ### 模型训练调优 @@ -307,9 +309,6 @@ **A**:SE模块是MobileNetV3网络一个重要模块,目的是估计特征图每个特征通道重要性,给特征图每个特征分配权重,提高网络的表达能力。但是,对于文本检测,输入网络的分辨率比较大,一般是640\*640,利用SE模块估计特征图每个特征通道重要性比较困难,网络提升能力有限,但是该模块又比较耗时,因此在PP-OCR系统中,文本检测的骨干网络没有使用SE模块。实验也表明,当去掉SE模块,超轻量模型大小可以减小40%,文本检测效果基本不受影响。详细可以参考PP-OCR技术文章,https://arxiv.org/abs/2009.09941. -#### Q2.3.19: 参照文档做实际项目时,是重新训练还是在官方训练的基础上进行训练?具体如何操作? -**A**: 基于官方提供的模型,进行finetune的话,收敛会更快一些。 具体操作上,以识别模型训练为例:如果修改了字符文件,可以设置pretraind_model为官方提供的预训练模型 - ## 【实战篇】PaddleOCR实战问题 @@ -589,14 +588,7 @@ repo中config.yml文件的前后处理参数和inference预测默认的超参数 - 如果没有其他需要,可以在解码数据的时候指定模式为三通道,例如如果使用opencv,可以使用cv::imread(img_path, cv::IMREAD_COLOR)。 - 如果其他模块需要处理四通道的图像,那也可以在输入PaddleOCR模块之前进行转换,例如使用cvCvtColor(&img,img3chan,CV_RGBA2RGB)。 -#### Q3.1.53: 预测时提示图像过大,显存、内存溢出了,应该如何处理? -**A**: 可以按照这个PR的修改来缓解显存、内存占用 [#2230](https://github.com/PaddlePaddle/PaddleOCR/pull/2230) - -#### Q3.1.54: 用c++来部署,目前支持Paddle2.0的模型吗? -**A**: PPOCR 2.0的模型在arm上运行可以参照该PR [#1877](https://github.com/PaddlePaddle/PaddleOCR/pull/1877) - - ### 数据集 #### Q3.2.1:如何制作PaddleOCR支持的数据格式