Bing 在 android 中使用 tesseract ocr 进行实时文本检测和翻译时出现翻译错误

Bing translation error while using tesseract ocr in android for real-time text detection and translation

我正在使用 Robert Theis 的实验性应用程序(即 android-ocr)来实现实时 OCR 和翻译(使用 Bing 翻译器。)

在 class CaptureActivity.java 函数 handleOcrContinuousDecode(实时 OCR 函数)中,我创建了一个 TranslateAsycnTask.java 对象,它将翻译后的文本传递给通过 ViewFinderView.java 显示如下:

我遇到的问题是,在第一次成功实时翻译后,会为下一次翻译显示第一次翻译的结果。然而,对于接下来的所有情况,执行的 OCR 都是成功的。像这样:

这里发生的是 "velocity" 的 OCR 文本位于左上角,翻译后的文本 "velocidad" 绘制在原始文本之上。在 "application" 的情况下,显示的 OCR 是正确的,但返回的翻译是前一种情况。

请告诉我我做错了什么或者我应该如何解决这个问题?

谢谢。

您没有考虑到使用 Bing 在 Internet 上执行翻译所需的时间。

由于翻译需要延迟,当您第一次在取景器上绘图时,还没有翻译好的文本。当您在 AsyncTask 上调用 execute() 时, 异步开始 翻译过程,执行继续,并且您在 globalString 中写入空值到取景器。

然后 OCR 过程循环,在您甚至将相机对准您的第二个单词之前,请求对您的第一个单词进行更多翻译 velocity。延迟一段时间后,您的第一个翻译 'velocidad' 返回并分配给 globalString,它在您 运行 循环几次后被拾取并显示。

因为您对一个词进行 OCR 的速度比翻译一个词的速度快,所以当您将相机对准第二个词时,您已经多次请求对同一个词进行翻译 'velocity' 并且陷入困境。