Оптическое распознавание текста (OCR)

В этом разделе описано, как работает возможность распознавание текста (Optical Character Recognition, OCR).

Подготовка запроса на распознавание

В запросе вы указываете список возможностей для анализа, которые необходимо применить к изображению. Чтобы распознать текст, используйте тип TEXT_DETECTION и задайте список языков в конфигурации.

Конфигурация запроса

В конфигурации указывается:

  • список языков, на основе которого будет определена языковая модель для распознавания.

    Если вы не знаете язык текста, укажите "*", чтобы сервис выбрал наиболее подходящую модель автоматически.

  • модель, которая будет использована для поиска текста на изображении. Доступные модели:

    • page (по умолчанию) — подходит для изображений с любым количеством строк текста.

    • line — подходит для распознавания одной строки текста. Например, если вы не хотите передавать изображение целиком, вы можете вырезать строку и отправить на распознавание только ее.

      На изображении должна быть только одна строка текста, а высота текста должна быть не меньше 80% от высоты изображения, иначе результаты распознавания с моделью line будут непредсказуемы. Пример правильного изображения:

      image

Определение языковой модели

Для распознавания текста в сервисе используется языковая модель, обученная на определенном наборе языков. Модель выбирается автоматически на основе списка языков, который вы указываете в конфигурации.

При каждом распознавании текста используется только одна модель. Например, если на изображении текст на китайском и японском, то распознан будет только один из этих языков. Чтобы распознать оба этих языка, укажите в запросе несколько возможностей для анализа с разными списками языков.

Совет

Для текста на русском и английском лучше всего работает англо-русская модель. Чтобы использовать ее, укажите один из этих языков или оба в text_detection_config, но не указывайте другие языки.

Требования к изображению

Изображение в запросе должно соответствовать следующим требованиям:

  • Поддерживаемые форматы файлов: JPEG, PNG, PDF.

    MIME-тип файла вы указываете в свойстве mime_type. По умолчанию image.

  • Максимальный размер файла: 1 МБ.

  • Размер изображения не должен превышать 20 мегапикселей (длина x ширина).

Ответ с результатами распознавания

Сервис выделяет найденный текст на изображении и группирует его по уровням: слова группируются в строки, строки в блоки, блоки в страницы.

image

В результате сервис возвращает объект, где для каждого из уровней дополнительно указывается:

  • страницы (pages[]) — размер страницы;
  • блоки текста (blocks[]) — расположение текста на странице;
  • строки (lines[]) — расположение и достоверность распознавания;
  • слова (words[]) — расположение, достоверность, текст и язык, использованный при распознавании.

Чтобы показать расположение текста, сервис возвращает координаты прямоугольника, обрамляющего текст. Координаты — количество пикселей от левого верхнего угла на изображении.

Координаты прямоугольника считаются от левого верхнего угла и указываются против часовой стрелки:

1←4
↓ ↑
2→3

Пример распознанного слова с координатами:

{
  "boundingBox": {
    "vertices": [{
        "x": "410",
        "y": "404"
      },
      {
        "x": "410",
        "y": "467"
      },
      {
        "x": "559",
        "y": "467"
      },
      {
        "x": "559",
        "y": "404"
      }
    ]
  },
  "languages": [{
    "languageCode": "en",
    "confidence": 0.9412244558
  }],
  "text": "you",
  "confidence": 0.9412244558
}

Достоверность распознавания

Достоверность распознавания показывает уверенность сервиса в результате. Например, значение "confidence": 0.9412244558 для строки we like you означает, что с вероятностью в 94% текст распознан корректно.

Сейчас достоверность считается только для строк. В значение confidence для слов и языка подставляется значение для confidence строки.

Что дальше