Skip to content
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

一些建议:任务流程/返回值/优化相关 #67

Closed
hiroi-sora opened this issue Mar 2, 2024 · 5 comments
Closed

一些建议:任务流程/返回值/优化相关 #67

hiroi-sora opened this issue Mar 2, 2024 · 5 comments

Comments

@hiroi-sora
Copy link
Contributor

hiroi-sora commented Mar 2, 2024

首先感谢您的v1.0版本更新,不仅准确度有很大提升,模型库配置参数也比以往简化了很多,可以完全摆脱C盘路径了。赞!

以下是我的一些建议和使用感受。

1. 有无可能 仅做一次det文本检测?

有没有可能省掉 detect_only ,直接把 analyzer不是公式 的区域送去 recognize_only

再看了看源码,LayoutAnalyzer的mfd是只能检测公式区域的,det还是不能省。

2. 缺失了方向分类器cls。

未来可否补上 90°/180° 方向纠正功能?

想了想,cls使用频率确实不高,也不好融入现有的混合识别任务流程。先放着也行。

3. 希望文字识别的返回结果中带上置信度score

你代码的处理流程中已经考虑了该值,但是接口函数的 这里 却没有将该值加入结果。希望能加上 box['score'] = part_res['score']

如果是为了兼容公式识别的输出格式(不带置信度)的话,我觉得给公式结果直接补个 ["score"] = 1.0 是没有问题的。

4. 请为文本接口 recognize_text 加上“返回格式”的选项。

目前 recognize_text 返回的是合并好的单个字符串。希望提供一个参数,能让该方法返回与 recognize 一致的结构,即包含文本、位置、置信度的列表。

虽然说目前可以调用 p2t.text_ocr.ocr(np.array(image)) 实现,不过还是希望P2T封装这部分操作~

5. 能否加快初始化速度?

每次 from pix2text import Pix2Text 时,都要花费数十秒时间~半分钟进行初始化。有没有办法加快初始化速度?

平台差异。

6. 未来能否优化部署方案?

当前P2T依赖一些大体积库,如1G大小的 pytorch 。如果要部署到普通个人用户的机器上,比如作为我 Umi-OCR的插件 ,那么过于庞大的体积会造成很多限制。

我希望未来能提供更小巧、更优雅的部署方案。如果像 RapidOCR 一样,支持 C++ onnx 部署,那就太好了!

@breezedeus
Copy link
Owner

非常感谢这么详细的建议❤️。下面做下简单回复。

  1. 文本检测是只做了一次的,recognize_only是不做检测的,只做单行文字的识别。
  2. 现在这个优先级确实不高。
  3. 这个应该可以,之后应该可以加上。
  4. 这个应该可以,之后应该可以加上。
  5. 这个我先验证下哪里慢了。我本地速度还行😅。欢迎更详细的耗时分析😁
  6. 依赖 PyTorch 的地方很多,Pix2Text 是一个系统,不是一个模型,会依赖其他工具包,不太可能都移除掉。倒是可以关注下 PyTorch 之后端侧会不会有针对性的优化。

@hiroi-sora
Copy link
Contributor Author

补充:

  1. 之前是我理解错了,以为 analyzer 是自带文本检测的。重新看了看源码,LayoutAnalyzer-mfd只能检测公式区域。所以det确实不能省略。

  1. 关于初始化速度,我重新做了实验:

在刚装好库的状态下(无缓存文件__pycache__),第一次import pix2text,不同平台需要 20s 以上的时间初始化。这应该是没法避免的。

在生成了缓存__pycache__后,在Intel平台上(13600K+32g),每次 import 只需 2.5s 左右,速度足够快。

在AMD平台上(7840HS + 32g),每次 import 要 4~6s ,显著比Intel慢,不过也可以接受。

通过 python -X importtime 分析耗时,发现在两个平台间,主要是这些步骤拉开时间差距:

torch._meta_registrations
torch.onnx
torch._dynamo.allowed_functions
torchvision.models.convnext
cnstd.model.base
pandas
cnstd.yolov7.plots

总之,都是依赖库的锅,也可能是不同平台的软硬件差异。不是 pix2text 本身的问题😂

@breezedeus
Copy link
Owner

第一次使用会自动下载模型文件,跟这个有关系么?

@hiroi-sora
Copy link
Contributor Author

第一次使用会自动下载模型文件

无关,我提前下载好了模型文件,向 P2T 显式指定模型文件的路径,应该不会触发自动下载。

而且,下载模型文件是发生在 Pix2Text 对象构建阶段。而上述测试的耗时是发生在 Pix2Text 库导入阶段。

@breezedeus
Copy link
Owner

@hiroi-sora Pix2Text V1.0.2 新版发布,根据你的建议丰富了输出格式。具体请见 https://github.com/breezedeus/Pix2Text/blob/main/RELEASE.md 和 文档说明。非常感谢。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants