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

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

Процесс распознавания текста

Распознавание текста на изображении состоит из двух этапов:

  1. Определение языковой модели для распознавания текста.
  2. Поиск текста на изображении.

В результате распознавания сервис вернет JSON-объект с распознанным текстом, его расположением на странице и достоверностью распознавания.

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

Для распознавания текста в сервисе используется модель, обученная на определенном наборе языков. Некоторые языки сильно отличаются друг от друга (например, арабский и китайский), поэтому для них используются разные модели.

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

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

Примеры смотрите в инструкции Распознавание текста.

Совет

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

Поиск текста на изображении

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

image

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

  • страницы (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
}

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

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

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

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

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

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

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

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

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

Что дальше