所以我终于设法让Android Tesseract Tools进行编译。一切都按预期工作,除了我不介意某种进度回调。我查看了包装类和本机包装 cpp 代码,但没有任何处理进度的内容。
有没有一种简单的方法来轮询 Tesseract 以获得某种进展?我在 Tesseract 源代码上达到了顶峰,但作为一个会说 Java 的人,这让我感到害怕。
考虑到 Tesseract 在进度时间方面的可变性,给用户一个微调器并收工似乎很糟糕。如果是我,超过 30 秒没有反馈,我会重试或放弃。
所以我终于设法让Android Tesseract Tools进行编译。一切都按预期工作,除了我不介意某种进度回调。我查看了包装类和本机包装 cpp 代码,但没有任何处理进度的内容。
有没有一种简单的方法来轮询 Tesseract 以获得某种进展?我在 Tesseract 源代码上达到了顶峰,但作为一个会说 Java 的人,这让我感到害怕。
考虑到 Tesseract 在进度时间方面的可变性,给用户一个微调器并收工似乎很糟糕。如果是我,超过 30 秒没有反馈,我会重试或放弃。
首先,由于 OCR 过程可以被视为大场景中的“长时间运行的任务”,因此将其放入异步任务中。诸如 I/O、网络或图像处理之类的东西应该放在异步任务中,因为您不希望它在主 UI 线程上运行。如果用户的手机规格非常低,如果您将其留在主 UI 线程上,这将需要一些时间并最终导致应用程序无响应错误。
关于进度条,您有几个选择。如果您有一个有限的时间限制,例如 30 秒,则将进度设置为达到该时间,如果 OCR 过程快于 30 秒,则提前完成。您还可以利用底层的本机代码,但它可能不值得付出努力......
或者,在我看来,最佳方法是在 OCR 过程中设置一个圆形微调器,因为图像可能会有所不同,而且您真的不知道需要多长时间。