Moldura de Câmera Android com MultiThreading

Eu estou usando o OpenCV, Vuforia e Tesseract (tess-dois) para o meu aplicativo. Meu sistema funciona assim:

Vuforia detecta o alvo e envia o quadro completo para o OpenCV (JNI)O OpenCV obtém o quadro e faz algum processamento de imagem para torná-lo legível para o Tesseract (JNI)Tesseract (tess-dois) pega as matrizes de bytes da opencv e faz os processamentos de OCR na imagem (byte-array)

Meu problema começa com a terceira parte. Como o meu objetivo é fazer o ocr em quadros de câmeras em tempo real, estou tentando usar multi-threading para tornar a interface do usuário mais suave e não fazer com que o visual da câmera ao vivo seja lento.

Eu decidi usar o AsyncTask para isso assim:

public void getFromNative(final byte[] imagedata, final int width,final int height,final byte [] typeData, final int typeWidth,final int typeHeight) {

        new AsyncTask<Void, Void, Void>() {

            @Override
            protected Void doInBackground(Void... params) {
                ocr(imagedata, width, height,typeData,typeWidth,typeHeight);                    
                return null;
            }

        }.execute();                
}

Isso torna o fluxo da câmera ao vivo mais suave do que o normal. Mas o problema é que desde o início de tantas AsyncTask por causa dos frames da câmera ao vivo, mesmo quando eu afasto a câmera do alvo, ela continua fazendo o OCR no AsycnTask criado anteriormente e retorna resultados para eles um após o outro. Além de AsyncTask, eu tentei IntenService, mas o resultado foi o mesmo.

Eu quero perguntar se existe uma maneira de resolver esse problema e tornar o processo mais eficiente.

obrigado

questionAnswers(1)

yourAnswerToTheQuestion