Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
shiyutang opened this issue Jul 10, 2023 · 71 comments
Closed

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

shiyutang opened this issue Jul 10, 2023 · 71 comments
Assignees
Labels

Comments

@shiyutang
Copy link
Collaborator

shiyutang commented Jul 10, 2023

我们将这个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
Copy link
Collaborator Author

shiyutang commented Jul 10, 2023

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

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

@WilliamQf-AI
Copy link
Contributor

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

@WilliamQf-AI
Copy link
Contributor

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

@WilliamQf-AI
Copy link
Contributor

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

@EasyIsAllYouNeed
Copy link

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

@Frozen1084
Copy link

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

@BeyondYourself
Copy link
Contributor

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

@livingbody
Copy link
Contributor

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

@shiyutang
Copy link
Collaborator Author

shiyutang commented Jul 11, 2023

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

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

@printfxs
Copy link

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

@Bobholamovic
Copy link
Member

Bobholamovic commented Jul 12, 2023

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

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

潜在解决方案

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

@EasyIsAllYouNeed
Copy link

EasyIsAllYouNeed commented Jul 12, 2023

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

@EasyIsAllYouNeed
Copy link

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

@shiyutang
Copy link
Collaborator Author

shiyutang commented Jul 13, 2023

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

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

@jingsongliujing
Copy link
Collaborator

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

@shiyutang
Copy link
Collaborator Author

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

@jingsongliujing
Copy link
Collaborator

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

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

@shiyutang
Copy link
Collaborator Author

需求描述:提供参数接口,传入仅需识别的部分字符(比如仅数字、仅个别英文字母等),避免识别为其他相似字符(比如数字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)     #若仅识别特定字符,将上面的块注释去掉,并注释掉这行

看上去你已经实现了相关功能,请问为什么使用不方便呢? 欢迎给我们贡献相关代码。

@HansBug
Copy link

HansBug commented Oct 9, 2023

请求新增针对给定图片的语言进行判定的模型。例如对于包含日文的图判定为japanese、对包含俄语的图判定为russian,对于只包含中英的图判定为cn_en

这个特性的实际意义是,在进行ocr任务的时候,可以对检测到的区域的语言进行判定,以便自动选用合适的文本识别模型,这样即可比较优雅地完成针对任意多语言的ocr任务。

当然,更进一步,可以针对给定的图片进行进一步的拆分,将各个子区域的语言均给出预测,这样甚至可以做到对复杂的多语言混合内容(比如日语、俄语、中文、英文混合的情况)进行准确地识别。

BTW:实际上直接训练一个支持现有主要语言的检测和识别模型也同样可以解决此问题。

@gitcnbubble
Copy link

gitcnbubble commented Oct 10, 2023

需求描述:提供参数接口,传入仅需识别的部分字符(比如仅数字、仅个别英文字母等),避免识别为其他相似字符(比如数字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)     #若仅识别特定字符,将上面的块注释去掉,并注释掉这行

看上去你已经实现了相关功能,请问为什么使用不方便呢? 欢迎给我们贡献相关代码。

需要来回注释代码,个人再去改命令行的代码改动的位置可能有点多,能力有限,代码效率不一定好;建议官方增加一个命令行参数,传入仅需要识别的字符(字符串或者类似dict.txt字典文件的样子)这样来用更方便。
此外,个人根据调试信息,仅修改的CTCLabelDecode类里面的代码,该文件中还有其他相似的类应该也可以进行类似调整,但那些类在什么时候调用不清楚,还没有吃透整体的程序处理流程

@tzhang2014
Copy link

tzhang2014 commented Oct 12, 2023

基于昆仑芯R200适配PaddleOCR

@anbo724
Copy link

anbo724 commented Oct 16, 2023

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

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

你好,使用新增数据进行增量训练之后,模型本身的识别能力会严重下降吗?

@ZhouBay-TF
Copy link

识别后的文字根据原文恢复排版,去除拍照造成的同一行字Y轴不同的现象。

@shiyutang
Copy link
Collaborator Author

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

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

你好,使用新增数据进行增量训练之后,模型本身的识别能力会严重下降吗?

可以微调,减少轮数/学习率,
不会过于严重

@shiyutang
Copy link
Collaborator Author

shiyutang commented Oct 19, 2023

识别后的文字根据原文恢复排版,去除拍照造成的同一行字Y轴不同的现象。

我们已经支持返回单字识别的坐标了,可以基于这个#10515 ,使用自己的字体恢复了。

@ZhouBay-TF
Copy link

识别后的文字根据原文恢复排版,去除拍照造成的同一行字Y轴不同的现象。

我们已经支持返回单字识别的坐标了,可以基于这个#10515 ,使用自己的字体恢复
非常感谢,我去试试

@Arlen-yuzu
Copy link

需求描述:PPOCRLabel工具在表格结构识别标注的功能中,增加对单元格标注框类别class label的标注功能
需求场景:给表格标注增加单元格类别标注
潜在解决方案(问题分解):改进PPOCRLabel工具

@CassieFeng
Copy link

#10404 ,这个issue看回复说登记到需求池里面了,点击进来没看到,再update一下~

需求描述:KIE (SER和RE两个任务)支持长度大于512的文档infer
需求场景:很多图片的文字内容长度都超过512这个范围限制了,希望能支持该功能,或者是否现在有其他替换方案

@wangxu372848892
Copy link

wangxu372848892 commented Nov 7, 2023

需求描述:c++版本tensorRT的demo每次运行都要大量时间构建trt-engine,期望提供一个临时cache文件夹,固化保存
需求场景: trt方案中,进程重启的场景
潜在解决方案(问题分解):fastDeploy中提供了trt_engine的cache路径。

@chang50961471
Copy link

带文字的图像矫正模型,可以矫正任意角度的图片

@wzz981
Copy link

wzz981 commented Nov 10, 2023

需求描述:针对文本检测在行列方向遇到离得近的文本可能更会检测成同一区域文本,大多数文档的表格中的单元格文字可能在行方向的文本之间的距离比在列方向的文本离得还远,那么就会出现把列方向的文本检测为同一区域文本。希望文本检测模型能分开行检测和列检测模型。
image

需求场景(这个需求可以解决哪些应用场景的问题): 大多数存在表格的文档图像,比如户口本、发票、驾驶证等
潜在解决方案(问题分解):文本检测模型分别微调出行检测和列检测模型。

@AugensternDu
Copy link

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

请问现在有技术去实现吗

@zjp99
Copy link

zjp99 commented Jan 5, 2024

范例:
需求描述:支持工业场景文本识别,主要是背景复杂,字体边界容易有背景干扰,也就是说字体分割无法和背景清晰分出
需求场景(这个需求可以解决哪些应用场景的问题):工业零件上字体识别,新生产的字体清晰,但维修或者旧的不清晰
潜在解决方案(问题分解):负责背景识别

@linjson
Copy link

linjson commented Jan 17, 2024

需求描述:希望能在apple m2上可以完全运行

@chch9907
Copy link

需求描述:自然场景下的繁体字识别(chinese_cht_PP-OCRv3对于一些自然场景中的文字识别的不够准确)
需求场景:繁体字地区自然场景下的繁体字识别,如路牌、店铺名称等。

@icdcg
Copy link

icdcg commented Feb 27, 2024

需求描述:基于C#预测引擎推理部署
需求场景:各类基于.Net平台的项目中,能够方便的调用模型进行识别工作
潜在解决方案(问题分解):使用C#语言编写一个推理部署的样例项目。

@Ligoml Ligoml unpinned this issue Feb 28, 2024
@He110te4m
Copy link

需求描述:国际化切换后文本布局对比。
需求场景(这个需求可以解决哪些应用场景的问题): 网站进行语言切换后,识别排版是否混乱,如文本溢出、高度溢出等异常场景,与无头浏览器结合为国际化测试解决方案。
潜在解决方案(问题分解):对页面截图进行文本区域检测,对比文本区域数量、文本区域的大小。

@AnitaSherry
Copy link

不知道是什么语种的时候希望加一个自动识别语言的多语言模型

@PaddlePaddle PaddlePaddle locked and limited conversation to collaborators Jun 5, 2024
@SWHL SWHL converted this issue into discussion #12727 Jun 5, 2024
@github-project-automation github-project-automation bot moved this from In Progress to Done in PaddleOCR/release 2.7 Jun 5, 2024

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
Projects
Status: Done
Development

No branches or pull requests