Как вычесть одну строку из sparseArray? - PullRequest
0 голосов
/ 28 октября 2018

Я работаю с Android Mobile Vision OCR API некоторое время. Все работает отлично, пока я не обнаружил, что мне нужно извлекать только отдельные слова из всего SparseArray (возврат по умолчанию для Mobile Vision API - это TextBlocks, определенный в SparseArray)

SparseArray<TextBlock> textBlocks = textRecognizer.detect(imageFrame);

  for (int i = 0; i < textBlocks.size(); i++) {

       TextBlock textBlock = textBlocks.get(textBlocks.keyAt(i));
            List<Line> lines = (List<Line>) textBlock.getComponents();
            for (Line line : lines) {
                List<Element> elements = (List<Element>) 
                line.getComponents();
                for (Element element : elements) {
                    word = element.getValue();

                    Log.d(TAG, "word Read : " + word);
                }
            }
        }

Когда я проверяю

Log.d(TAG, "word Read : " + word);

распечатывает повторно все элементы в SparseArray

enter image description here

Кажется, я задаю не столь очевидный вопрос. Но могу ли я извлечь только одно или пару слов из этих "слов", напечатанных выше? Например, я хочу извлечь слово, которое имеет символ выше 12 и содержит число.

Любая помощь или подсказки будут высоко оценены.

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Вы запускаете слово в цикле, поэтому он печатает все значения.Когда вы запустите его только один раз в соответствии с ответом @navylover, вы получите одну строку.Просто удалите цикл for

0 голосов
/ 28 октября 2018

Вы можете добавить логическое выражение для фильтрации результатов, как показано ниже:

    word = element.getValue();
    if (word .length() > 12 && word .matches("[0-9]+")) {
        Log.d(TAG, "word Read : " + word);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...