2016-10-31 1 views
-2

Я использую Google Cloud видения Апи (Text_Detection) он работает нормально, но когда я возвращаю ответ от Google, стиль сообщения как изображениеКак можно исправить текст ответа?

Я хочу только один текст, например, «УЧЕБНЫЙ PLANNER», так как я могу удалить перед Academic «null:» и другие слова?

İmage

например

enter image description here

И вот мой код;

private String convertResponseToString(BatchAnnotateImagesResponse response) { 
    String message = "I found these things:\n\n"; 

    List<EntityAnnotation> labels = response.getResponses().get(0).getTextAnnotations(); 
    if (labels != null) { 
     for (EntityAnnotation label : labels) { 
      message += String.format("%.3f: %s", label.getScore(), label.getDescription()); 
      message += "\n"; 
     } 
    } else { 
     message += "nothing"; 
    } 

    return message; 
} 

ответ

0

Ответ:

private String convertResponseToString(BatchAnnotateImagesResponse response) { 
    String message = "I found these things:\n\n"; 
    List<EntityAnnotation> labels = response.getResponses().get(0).getTextAnnotations(); 
    if (labels != null) { 
     message += labels.get(0).getDescription(); 
    } else { 
     message += "nothing"; 
    } 
    return message; 
} 
-1

Если я правильно понимаю ваш вопрос, то вам просто необходимо дезинфицировать описание лейбла с substring() и trim() методами String класса. Вот модифицированная версия кода:

private String convertResponseToString(BatchAnnotateImagesResponse response) { 

    String message = "I found these things:\n\n"; 
    List<EntityAnnotation> labels = response.getResponses().get(0).getTextAnnotations(); 
    if (labels != null) { 
     for (EntityAnnotation label : labels) { 
      // 5=index of the character after "null:" (zero-based array counting), trim() removes whitespace on both sides of the string. 
      message += String.format("%.3f: %s", label.getScore(), label.getDescription().substring(5).trim()); 
      message += "\n"; 
     } 
    } else { 
     message += "nothing"; 
    } 

    return message; 
} 

PS: Из документации, getDescription() метод возвращает строку и getScore() возвращает Float. Бьюсь об заклад, оценки не дают вам никаких проблем. Я не тестировал ваши фактические данные.

+0

Неа это разве работа. Я пытаюсь, но я получаю эрор. imgur.com/uEckW8Z Студия Android не разрешает этот код, другая идея? –

+0

. Если вы хотите получить полный код: https: //github.com/GoogleCloudPlatform/cloud-vision/tree/master/android/CloudVision –

+0

К сожалению, эти методы доступны только для строк, а 'EntityAnnotation' не является строкой. .. Я проверил свою настройку на массив строк, извините; см. отредактированный ответ. – Dut

0

Возможно, на ваш счет null. Сделайте это:

message += String.format("%s", label.getDescription()); 

Чтобы иметь только одно слово, вы делаете ваш метод выглядеть следующим образом:

private String convertResponseToString(BatchAnnotateImagesResponse response) { 
    String message = "I found these things:\n\n"; 

    List<EntityAnnotation> label = response.getResponses().get(0).getTextAnnotations().get(0); 
    if (label != null) { 
      message += String.format("%s", label.getDescription()); 
      message += "\n"; 
    } else { 
     message += "nothing"; 
    } 

    return message; 
} 
+0

Yeap. это правда, спасибо и другие проблемы, есть ли у вас какие-либо идеи? –

+0

@EmreAkbaki см. Мой обновленный. – BlackHatSamurai

+0

Nope is not work it dont accept "label.getScore(), label.getDescription());" и почему вы пишите дважды .get (0) ? –

Смежные вопросы