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' 并且陷入困境。
我正在使用 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' 并且陷入困境。