所以我终于设法让Android Tesseract Tools进行编译。一切都按预期工作,除了我不介意某种进展回电。我查看了包装器类和本机包装cpp代码,但没有任何处理进度。
是否有一种简单的方法可以对Tesseract进行某些进展调查?我在Tesseract源代码中达到了顶峰,但作为一个天真地说Java的人,它让我感到害怕。
考虑到Tesseract在进度时间方面的变量,给用户spinner并将其称为一天似乎很糟糕。如果是我,并且花了超过30秒没有反馈,我会重试或放弃。
答案 0 :(得分:2)
首先,由于OCR过程可以被视为事物的宏观过程中的“长期运行任务”,因此将其置于异步任务中。诸如I / O,网络或图像处理之类的事情应该放在异步任务中,因为您不希望它在主UI线程上运行。如果用户的规格电话非常低,则需要一些时间,如果将其留在主UI线程上,最终会导致应用程序无响应错误。
关于进度条,您有几个选择。如果您有一个有限的时间限制,例如30秒,那么如果OCR过程快于30秒,则将进度设置为该工作并提前完成。您也可以使用基础本机代码,但它可能不值得努力......
或者,在我看来,最佳方法是在OCR过程的持续时间内设置一个循环微调器,因为图像可能不同,你真的不知道需要多长时间。