【问题标题】:How can I make tesseract on iOS faster?如何让 iOS 上的 tesseract 更快?
【发布时间】:2012-07-22 18:11:12
【问题描述】:

我在 ios 上使用 tesseract ocr 苦苦挣扎。一切正常,但它真的很慢。 单行数字的识别时间为 2 - 3 秒。

我正在从视频流中阅读。

我正在使用 tesseract 3.01 和我的字体的自定义训练文件。

这是我的工作:

设置 tesseract 仅用于查找数字 (0-9)

  1. 缩小、歪斜和二值化图像
  2. 使用GetLines找到我想要的文本行
  3. setRectangle 只识别我想要的线路
  4. getUTF8Text 获取我的文字

有什么建议可以加快这个过程吗?

【问题讨论】:

  • 我听说人们在对包含文本的图像使用自适应阈值进行预通过,然后将二值化图像发送到 Tesseract 时,会获得更快的结果。这个问题以该主题为例:stackoverflow.com/questions/9992078/…
  • 感谢您的建议,我忘了提到这是在第 1 点完成的。将更新我的问题。

标签: ios performance ocr tesseract


【解决方案1】:

我切换到了tesseract 3.02的SVN

在交叉编译遇到一些问题后,

getUTF8Text 大约需要 1.2 - 0.8 秒 0.3 - 0.2 秒用于图像预处理。

我做了一些测试

  • 二值化和缩小 0.7 获得 0.3 秒,但需要花费 0.1
  • chop_enable=0 对速度几乎没有影响,平均速度增益大约为 0.1,尽管如果分析它占 CPU 使用量的 50%

可用性方面的主要收获是使用 setRectangle 优化代码而不调用 getUTF8Text 如果我怀疑界限不正确。和一些字符串后处理通过检查 收到字符串并应用一些算法来消除最常见的误解 来自正方体。

也许这对其他人有用。

【讨论】:

  • 您能解释一下“...用 setRectangle 优化代码而不是调用 getUTF8Text...”吗?你的意思是你第一次检查了矩形边界,如果你觉得它们可疑,你就不会调用 getUTF8Text?
  • @Thompson 是的,这就是我所做的。但现在我找到了我想要处理的行。然后自己处理所有字符框并丢弃所有置信度低于 20 的框,这样我就不会得到垃圾。现在速度更快了。
【解决方案2】:

您可能想尝试的一件事是在后台执行此操作。它不会提高识别速度,但通过让用户执行其他操作,它可能会显得更快。当然,这取决于用例(我有一个很好的改进,因为它看起来非常快,而我只是比预期的更快开始)。诀窍在于 ios 应用程序是关于感知性能的,而不是实际性能(尽管它自然会对感知性能产生很大影响)。

【讨论】:

    猜你喜欢
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    相关资源
    最近更新 更多