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.37k stars 7.83k forks source link

新增需求征集(Collect Feature Request) #10334

Closed shiyutang closed 5 months ago

shiyutang commented 1 year ago

我们将这个Issue 保持开放状态,以收集用户的功能请求并听取您的声音。我们的发布计划将在不同的问题上进行更新。

在这个Issue中,您可以:

  1. 通过发表评论来建议新功能。
  2. 使用 👍 投票支持功能请求,或者使用 👎 反对。 (请记住,我们也许无法响应所有功能请求,因此请投票给您最喜欢的功能请求!)
  3. 如果你也愿意参加代码贡献,欢迎参与我们的活动 #10223。
  4. 我们会在上述活动的技术研讨会中对需求进行讨论,如果想要参与讨论你觉得重要的需求,欢迎加入上述活动微信群。

We keep this issue open to collect feature requests from users and hear your voice. Our release plan will be updated on different issues.

In this issue, you can either:

  1. Suggest a new feature by leaving a comment.
  2. Vote for a feature request with 👍 or be against it with 👎. (Remember that developers are busy and cannot respond to all feature requests, so vote for your most favorable one!)
  3. Tell us that you would like to help implement one of the features in the list or review the PRs. Welcome to participate in our activity #10223(This is the greatest thing to hear about! )
  4. Join the above WeChat group in the activity link if you want to discuss the new features with us
shiyutang commented 1 year ago

范例: 需求描述:支持文本识别单字位置分割;支持更多小语种模型;训练语种分类模型;文本识别返回单字置信度等 需求场景(这个需求可以解决哪些应用场景的问题): 覆盖小语种的分类场景 潜在解决方案(问题分解):调取小语种数据集进行训练。

example: Description of feature request: Requirement scenarios (what application scenarios can this feature request solve): Potential solutions (problem breakdown):

WilliamQf-AI commented 1 year ago

需求描述: 版面恢复里的功能(恢复为docx或者excel)c++版。 需求场景: c++版本可以部署到端侧,实现本地本地化的办公文档扫描。 潜在解决方案: 版面分析后,使用minidocx创建docx文档,libxlsxwriter生成excel。

WilliamQf-AI commented 1 year ago

需求描述: 返回单字符坐标。 需求场景: 文档比对。

WilliamQf-AI commented 1 year ago

需求描述: 拍照图片矫正模型。 需求场景: 办公文档扫描时,对倾斜等图片进行类似边缘检测,透视变换等的矫正功能。

EasyIsAllYouNeed commented 1 year ago

需求描述: 返回单字符坐标。 需求场景: ocr 之后 NLP场景需要对应到原图上的文字位置

Frozen1084 commented 1 year ago

需求描述:一个支持简繁英日的东亚模型 需求场景:多语言并存场景下的识别 潜在解决方案(问题分解):

BeyondYourself commented 1 year ago

需求描述:表格结构提取 场景:各种业务场景下的表格,其中包括有线、无线表格 潜在解决方案(问题分解):

livingbody commented 1 year ago

需求描述:古籍识别 需求场景:繁体字识别来一下?

shiyutang commented 1 year ago

范例: 需求描述:版面矫正网络论文复现:DocTr++: Deep Unrestricted Document Image Rectification 需求场景(这个需求可以解决哪些应用场景的问题):大量文档进行版面分析之前需要进行光照、扭曲等矫正 说明:

  1. 通过定量实验和定性对比,作者团队验证了 DocTr++ 的性能优势及泛化性,并在现有及所提出的基准测试中刷新了多项最佳记录,是目前最优的文档矫正方案。
  2. 暂时没有预训练权重和训练代码,需要按照论文描述重新训练尝试。 潜在解决方案(问题分解):复现上述论文,代码链接:https://github.com/fh2019ustc/DocTr-Plus
printfxs commented 1 year ago

Scene Text Recognition with Permuted Autoregressive Sequence Models,即parseq 文本识别算法效果不错,有没有在paddleOCR上实现。

Bobholamovic commented 1 year ago

需求描述:PaddleOCR与PaddleDetection与Pillow新版本10.x不兼容。目前PaddleOCR采用的临时解决方案是在依赖列表中限制只能使用旧版本Pillow(参见 https://github.com/PaddlePaddle/PaddleOCR/pull/10344 ),而PaddleDetection未采取任何措施(按照文档安装后,使用deploy/python/visualize.py等部分功能时会直接报错)。出于套件可持续建设的考虑,希望能够适配最新版本的Pillow。

需求场景: 目前已发现涉及使用字体的相关场景存在此问题。

潜在解决方案

  1. 对于PaddleOCR和PaddleDetection,修改过时的接口名称或参数(例如FreeTypeFont.getsize),替换为等效的API调用;
  2. 对于PaddleOCR,去除requirements.txt中Pillow版本的限制。
EasyIsAllYouNeed commented 1 year ago

需求描述: 当前ppocrv3模型存在以下问题: 1 字典不全,没有覆盖《通用规范汉字表》 2 对于字典中存在的生僻字,可能因为训练语料不平衡问题,识别效果很差 希望: 1 扩充中文字典,覆盖《通用规范汉字表》 2 增加平衡语料,重新训练 需求场景: 姓名,古文识别等场景

EasyIsAllYouNeed commented 1 year ago

需求描述: ocr det 之前增加文档方向检测和矫正过程,支持0,90,180,度的文档, 可以作为ppocr命令行参数
需求场景: 手机拍照,文档材料数字化自动化场景

shiyutang commented 1 year ago

Scene Text Recognition with Permuted Autoregressive Sequence Models,即parseq 文本识别算法效果不错,有没有在paddleOCR上实现。

@printfxs 我们有集成目前最优的识别模型SVTR @printfxs 我们打算将其作为任务发布了,不知道有没有想法来参与论文复现任务呢,完成任务可以获得小奖品,还可以我们持续交流,解决问题,互相学习哦。

shiyutang commented 1 year ago

@BeyondYourself 请看PP-structure中现有功能能否支持:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/ppstructure/README_ch.md#2-%E7%89%B9%E6%80%A7 https://github.com/PaddlePaddle/PaddleOCR/blob/fac03876f39bc67acc8eef6d7facb9a2206eeecd/ppstructure/table/predict_table.py#L58

https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/ppstructure/table/README_ch.md

jingsongliujing commented 1 year ago

你好,我基于paddleocr转换了模型,重构了推理代码,可脱离paddlepaddle训练框架,在精度不变的情况下效率和推理速度都提高了:https://github.com/jingsongliujing/OnnxOCR

shiyutang commented 1 year ago

你好,这个可以提交PR到我们的repo中吗?@jingsongliujing

jingsongliujing commented 1 year ago

你好,这个可以提交PR到我们的repo中吗?@jingsongliujing

后续是这样,但是不知道提交到那个repo

ToddBear commented 1 year ago

来源:Issue #10404 需求描述:支持更长文本输入(>512 tokens)的KIE模型 需求场景:许多进行KIE的文档都存在大于512 tokens的情况 潜在解决方案(问题分解):现有的KIE模型大多基于MVLM(Masked Visual language Model),与Bert(MLM,Masked language Model)的网络架构相似,可以参考现有的利用Bert进行处理长文本的方法,比如sliding window approach

livingbody commented 1 year ago

paddleocr.py介绍太简单,有点不会用

当前 https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/doc/doc_ch/quickstart.md 介绍文档过于简单,建议增加使用介绍。

• 1:增加api使用介绍 • 2:增加命令行使用介绍 • 3:适当增加使用demo

找到了部分: https://gitee.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/whl.md

这个文件名起的很简略,我给忽略没看到。。。。。。

onecatcn commented 1 year ago

Multilingual OCR Development Plan #1048 There are several support request for new languages with dict and corpus ready. Guidance to retrain the model is provided for contributors. We are calling contributions to add new language support for PaddleOCR.

shiyutang commented 1 year ago

paddleocr.py介绍太简单,有点不会用

这个确实存在相关问题,关于PPOCR的参数在下面的文档中:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/inference_args.md

Bobholamovic commented 1 year ago

需求描述:为PaddleOCR增加训练时周期性验证的开关;为PaddleOCR增加eval_epoch_step参数。

需求场景:与PaddleCV的其它基础套件PaddleSeg、PaddleDetection、PaddleClas、Paddle3D等不同,PaddleOCR不支持上述功能,这导致包括但不限于如下问题:

  1. 用户有时只想要将模型训练一定的迭代轮数,并不希望在训练时进行精度评估(这可能带来额外的时间开销),而目前PaddleOCR无法优雅地满足这个需求,只能通过设定一个较大的eval_batch_step数值来实现。
  2. 更换数据集后,由于数据集大小发生改变,用户往往也需要修改eval_batch_step配置,以使得eval频率合适。
  3. PaddleOCR中实现的是epoch-based trainer,在配置文件中设置的也是epoch_num而不是num_iters,但eval_batch_step却是iters粒度的控制,存在风格不契合的问题。

潜在解决方案

考虑后向兼容的解决方案:

  1. 增加do_eval配置项,可用于关闭训练时周期性验证。默认启用验证,基本维持PaddleOCR现有行为,但希望在训练结束时,即使没有到达eval_step,也进行一次验证(因为有时候eval_step设置不合适,可能会出现指定了do_eval却没有验证的情况,不符合直觉)。
  2. 在保留eval_batch_step的情况下,增加eval_epoch_step配置项。关于eval_batch_stepeval_epoch_step之间的关系如何,例如二者互斥或其中一个的优先级更高,我还没有想好,建议开发者从用户使用便利性的角度考虑如何设计。eval_batch_step应当被添加为可选功能,套件的默认行为保持不变。
shiyutang commented 1 year ago

需求描述:复现论文pidnet 需求场景(这个需求可以解决哪些应用场景的问题): 该模型为轻量化分割方向的前沿模型,超过自研模型ppliteseg精度和速度平衡,进度直逼高精度OCRNet。 潜在解决方案(问题分解): 数据和模型、代码均已经开源,可以基于论文复现指南复现上述论文,代码链接:https://github.com/XuJiacong/PIDNet

shiyutang commented 1 year ago

需求描述:根据原作者提出的建议,复现论文MobileSAM 需求场景(这个需求可以解决哪些应用场景的问题): 该模型为火爆的SAM模型的加速版本,大大提升了SAM的使用体验,该模型目前已经有2.9k star。 潜在解决方案(问题分解): 模型、代码已经开源,只需进行前向对齐即可,可以基于论文复现指南复现上述论文,代码链接:https://github.com/ChaoningZhang/MobileSAM

shiyutang commented 1 year ago

需求描述:根据 @printfxs 的建议,复现论文Parseq 需求场景(这个需求可以解决哪些应用场景的问题): 该模型将视觉和语义信息结合,实现精度和速度的双重提升,对比前沿模型SVTR有进一步优势。 潜在解决方案(问题分解): 模型、代码、数据集已经开源,可以基于论文复现指南复现上述论文,代码链接:https://github.com/baudm/parseq

archerbj commented 1 year ago

需求描述: 识别文档中的数学公式(LaTex)

需求场景: 科技技术类的PDF文件往往有很多计算公式,目前没法有效识别,例如下角标等

shiyutang commented 1 year ago

10455

Zz-ww commented 1 year ago

需求描述: 支持小语种-藏文

需求场景: 对藏文的书籍、文稿进行文字提取

zhouyiminga commented 1 year ago

需求描述:给 fastdeploy服务化部署 的方式提供修改参数的地方,文档没教我也没找到能修改生效的地方。 需求场景:我需要限制生成的文本框数量,这个参数max_candidates符合,但是我找不到办法把这参数应用在fastdeploy服务化部署里面。目前我只能对识别结果取限制的数量,有点治标不治本。

HackerWand commented 1 year ago

需求描述:返回字符旋转角度。 需求场景:扫描件文件识别以及自动转正。

WilliamQf-AI commented 1 year ago

需求描述: fastdeploy ios版本编译。 需求场景: 统一化使用fastdeploy部署符合项目发展趋势,也便于项目的推广。

shiyutang commented 1 year ago

@HackerWand 我们准备复现doctr++的文档矫正功能,即可实现你的需求。

ToddBear commented 1 year ago

@zhouyiminga FastDeploy支持部分参数的修改,后续将有开发者在Issue #10562 中分享具体的做法

zsyuesheng commented 1 year ago

需求描述: 实时手写汉字识别。 需求场景: 教育场景应用。

WilliamQf-AI commented 1 year ago

需求描述: 实时手写汉字识别。 需求场景: 教育场景应用。

从哪里收流?

yisheng822 commented 1 year ago

需求描述: 针对关键信息提取,可以分为三个阶段,分别为检测识别kie, 每个阶段都相应的评价指标。但是没有一个指标来衡量整个pipeline的效果,值得开发出相关指标用来衡量。 需求场景: 卡证识别

Ligoml commented 1 year ago

需求描述: 实时手写汉字识别。 需求场景: 教育场景应用。

看看这个:https://github.com/PaddlePaddle/PaddleOCR/blob/c13a50c7a8e8679a0ecb9e8f84d5c208130b7305/applications/%E6%89%8B%E5%86%99%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB.md

miknyko commented 1 year ago

希望官方能够更详细的测试fastdeploy serving的方式启动的服务到底推理速度如何。 根据我在多种英伟达GPU平台测试的结果,使用triton的部署方式是比纯api调用的响应时间慢至少8到10倍(无并发,单次推理)。我觉得有以下几方面原因

  1. OCR的ensemble写得太复杂,step多了之后,队列太多,会造成大量overhead,造成推理时间大量浪费在IO上面。
  2. 目前提供的镜像,还是根据triton 2021年10月的镜像打的,落后太多。
Alex37882388 commented 1 year ago

希望KIE任务可以添加置信度,目前只有pred_id;另外能否明确一下KIE如何部署到fastapi这种api框架? image

dengbuqi commented 1 year ago

需求描述: 支持paddleOCR和其他模型一起使用的时候的多进程使用 需求场景: 不同模型(pytorch,paddle,tensorflow模型)之间的并行使用

wxzwxz131 commented 1 year ago

表格恢复模型 需求描述: 目前SLANet模型效果比较差,尤其是无线框表格和存在跨行的表格 需求场景: 表格恢复,excel表格恢复等

Ligoml commented 1 year ago

@dengbuqi 可能需要再细化一下需求描述? 请问不同模型并行使用的场景是什么样的,现有模型并行使用会存在什么问题呢?

shiyutang commented 1 year ago

@wxzwxz131 目前我们有两种表格识别的算法,table master和SLANet,请问是否这两种算法在官方训练的数据上对无框和跨行情况都表现很糟糕?如果是,是否有效果更好的表格回复算法推荐呢?

希望可以将现有的问题记录在一个新建issue中,方便我们跟进

HackerWand commented 1 year ago

@HackerWand 我们准备复现doctr++的文档矫正功能,即可实现你的需求。

@shiyutang 应该如何做呢?

shiyutang commented 1 year ago

@HackerWand 我们的开源社区正在在进行doctr++的复现,其可以实现这个功能:https://github.com/PaddlePaddle/PaddleOCR/issues/10379

youde2000 commented 1 year ago

标注工具ppocrlabel,能不能让我们自己选择文字检测或者文本识别的模型;还有,能不能只检测文字区域,或者只识别文字

anbo724 commented 1 year ago

建议增加新增字符的功能,因为有很多场景会有一些特殊字符或者语言,这样可以提高ppocr的可用性

gitcnbubble commented 1 year ago

需求描述:提供参数接口,传入仅需识别的部分字符(比如仅数字、仅个别英文字母等),避免识别为其他相似字符(比如数字1和i,数字0和字母O……) 需求场景: 在特定范围识别时,准确性低(比如生产手写数字数据识别不准) 潜在解决方案:个人通过修改后处理过程已经实现了相关功能,但使用不方便: 修改rec_postprocess.py文件中的class CTCLabelDecode(BaseRecLabelDecode): 思路:在所有字符概率中,挑选出我们关心的字符概率,在挑选之后看哪个概率最大……

def __call__(self, preds, label=None, *args, **kwargs):
        if isinstance(preds, tuple) or isinstance(preds, list):
            preds = preds[-1]
        if isinstance(preds, paddle.Tensor):
            preds = preds.numpy()
        '''
        limit_char_list = list("0123456789")  # 这里仅识别阿拉伯数字,根据情况增加小数点或其他字符
        limit_char_list.append("blank")  # 必须增加空值【此项是self.character中的第一项,必须加上!!】
        # limit_char_list.append(" ")  # 这行应该没有太大影响
        # 获取要识别的字符(比如0-9)在整个字符集self.character中的位置Index
        char_ind = [self.character.index(char) for char in limit_char_list]
        # [26, 93, 25, 94, 632, 631, 933, 29, 27, 1109, 0] 不连续的,和chinese_dict.txt中的次序不一样!
        # 从preds结果中筛选出我们需要识别字符的概率数据
        my_preds=preds[:,:,char_ind]
        # 获取my_preds中的最大概率和对应索引及概率值
        my_preds_idx = my_preds.argmax(axis=2)  # 注意返回的最大概率序号是mypreds中的序号,也是limit_char_list中的序号,不是preds中的序号
        preds_prob = my_preds.max(axis=2)
        # 将序号列表中自定义字符中的次序修改为self.character中的次序
        preds_idx = np.empty(shape=preds_prob.shape)
        for i,row in enumerate(my_preds_idx):
            preds_idx[i,:] = [ char_ind[j] for j in row ]
        preds_idx = preds_idx.astype(int)

        '''
        preds_idx = preds.argmax(axis=2)   #若仅识别特定字符,将上面的块注释去掉,并注释掉这行
        preds_prob = preds.max(axis=2)     #若仅识别特定字符,将上面的块注释去掉,并注释掉这行
shiyutang commented 1 year ago

建议增加新增字符的功能,因为有很多场景会有一些特殊字符或者语言,这样可以提高ppocr的可用性

你好,新增字符的方式需要重新加入新的字典和数据,并对模型进行finetune。