О сервисе Yandex Vision OCR
OCR (Optical Character Recognition) – это оптическое распознавание текста. Сервис компьютерного зрения Yandex Vision OCR позволяет распознавать текст на изображениях и в файлах PDF.
Vision OCR предоставляет свои возможности через API. Вы можете интегрировать функциональность сервиса в свое приложение, написанное на любом языке программирования, или отправлять запросы с помощью утилиты cURL
Режимы работы Vision OCR
Vision OCR может обрабатывать запросы на распознавание изображений в синхронном и асинхронном режиме.
- В синхронном режиме сервис получит ваш запрос, сразу же обработает его и вернет результат в ответном сообщении. Такой режим подходит для приложений, которым необходимо поддерживать диалог с пользователем. Однако в синхронном режиме Vision OCR не может обработать большие объемы информации.
- В асинхронном режиме сервис получит запрос и сразу же вернет идентификатор операции, по которому вы сможете получить результат распознавания. Распознавание текста в асинхронном режиме займет больше времени, но позволит обработать большие объемы информации за один запрос. Асинхронный режим подойдет, если ваши задачи не требуют срочного ответа.
Модели распознавания
Vision OCR предоставляет несколько моделей для распознавания разных типов текста на изображениях и в файлах PDF. Это может быть печатный текст, многоколоночный печатный текст, таблицы, рукописный текст или шаблонные документы, например паспорт или регистрационный номер автомобиля. Чем точнее вы выберите модель, тем лучше будет результат распознавания. Модель передается в параметрах запроса в поле model
.
Модели для распознавания текста:
page
(по умолчанию) — подходит для изображений с любым количеством строк текста, сверстанного в одну колонку.page-column-sort
— для распознавания многоколоночного текста.handwritten
— для распознавания произвольного сочетания печатного и рукописного текста на русском и английском языках.table
— для распознавания таблиц на русском и английском языках.
Модели для распознавания шаблонных документов:
passport
— основной разворот паспорта.driver-license-front
— водительское удостоверение, лицевая сторона.driver-license-back
— водительское удостоверение, обратная сторона.vehicle-registration-front
— свидетельство о регистрации транспортного средства, лицевая сторона.vehicle-registration-back
— свидетельство о регистрации транспортного средства, обратная сторона.license-plates
— все регистрационные номера автомобилей на изображении.
Определение языковой модели
Для распознавания текста Vision OCR использует языковые модели, обученные на определенном наборе языков. Модель выбирается автоматически на основе списка языков, который вы указываете в запросе.
При каждом распознавании текста используется только одна модель. Например, если на изображении текст на китайском и японском, то распознан будет только один из этих языков. Чтобы распознать оба этих языка, отправьте запрос еще раз, указав другой язык распознавания.
Совет
Для текста на русском и английском лучше всего работает англо-русская модель. Чтобы использовать ее, укажите один из этих языков или оба в text_detection_config
, но не указывайте другие языки.
Требования к изображению
Изображение в запросе должно соответствовать следующим требованиям:
- Поддерживаемые форматы файлов: JPEG, PNG, PDF. MIME-тип
файла указывайте в свойствеmime_type
. По умолчаниюimage
. - Максимальный размер файла: 10 МБ.
- Размер изображения не должен превышать 20 мегапикселей (длина × ширина).
Ответ с результатами распознавания
Сервис выделяет найденный текст на изображении и группирует его по уровням: слова группируются в строки, строки в блоки, блоки в страницы.
В результате сервис возвращает объект, где для каждого из уровней дополнительно указывается:
- страницы (
pages[]
) — размер страницы; - блоки текста (
blocks[]
) — расположение текста на странице; - строки (
lines[]
) — расположение строк; - слова (
words[]
) — расположение слов, текст и язык, использованный при распознавании.
Чтобы показать расположение текста, сервис возвращает координаты прямоугольника, обрамляющего текст. Координаты — количество пикселей от левого верхнего угла на изображении.
Координаты прямоугольника считаются от левого верхнего угла и указываются против часовой стрелки:
1←4
↓ ↑
2→3
Пример распознанного изображения с координатами:
{
"result": {
"text_annotation": {
"width": "1920",
"height": "1280",
"blocks": [{
"bounding_box": {
"vertices": [{
"x": "460",
"y": "777"
}, {
"x": "460",
"y": "906"
}, {
"x": "810",
"y": "906"
}, {
"x": "810",
"y": "777"
}]
},
"lines": [{
"bounding_box": {
"vertices": [{
"x": "460",
"y": "777"
}, {
"x": "460",
"y": "820"
}, {
"x": "802",
"y": "820"
}, {
"x": "802",
"y": "777"
}]
},
"alternatives": [{
"text": "PENGUINS",
"words": [{
"bounding_box": {
"vertices": [{
"x": "460",
"y": "768"
}, {
"x": "460",
"y": "830"
}, {
"x": "802",
"y": "830"
}, {
"x": "802",
"y": "768"
}]
},
"text": "PENGUINS",
"entity_index": "-1"
}]
}]
}, {
"bounding_box": {
"vertices": [{
"x": "489",
"y": "861"
}, {
"x": "489",
"y": "906"
}, {
"x": "810",
"y": "906"
}, {
"x": "810",
"y": "861"
}]
},
"alternatives": [{
"text": "CROSSING",
"words": [{
"bounding_box": {
"vertices": [{
"x": "489",
"y": "852"
}, {
"x": "489",
"y": "916"
}, {
"x": "810",
"y": "916"
}, {
"x": "810",
"y": "852"
}]
},
"text": "CROSSING",
"entity_index": "-1"
}]
}]
}],
"languages": [{
"language_code": "en"
}]
}, {
"bounding_box": {
"vertices": [{
"x": "547",
"y": "989"
}, {
"x": "547",
"y": "1046"
}, {
"x": "748",
"y": "1046"
}, {
"x": "748",
"y": "989"
}]
},
"lines": [{
"bounding_box": {
"vertices": [{
"x": "547",
"y": "989"
}, {
"x": "547",
"y": "1046"
}, {
"x": "748",
"y": "1046"
}, {
"x": "748",
"y": "989"
}]
},
"alternatives": [{
"text": "SLOW",
"words": [{
"bounding_box": {
"vertices": [{
"x": "547",
"y": "983"
}, {
"x": "547",
"y": "1054"
}, {
"x": "748",
"y": "1054"
}, {
"x": "748",
"y": "983"
}]
},
"text": "SLOW",
"entity_index": "-1"
}]
}]
}],
"languages": [{
"language_code": "en"
}]
}],
"entities": []
},
"page": "0"
}
}
Формат ответа
Yandex Vision OCR предоставляет результат распознавания в формате JSON Lines
Ошибки в определении координат
В некоторых случаях сервис возвращает координаты, которые не соответствуют отображению текста в пользовательском обработчике изображений. Это связано с некорректной обработкой метаданных exif
обработчиком изображений пользователя.
При распознавании сервис учитывает данные о повороте изображения, которые задаются атрибутом Orientation
секции exif
. Некоторые средства просмотра изображений могут игнорировать заданные в exif
значения поворота, что приводит к несоответствию полученных результатов отображаемому изображению.
Чтобы исправить эту ошибку, выполните одно из действий:
- Измените настройки обработчика изображений так, чтобы при просмотре учитывался заданный в секции
exif
угол поворота. - При передаче в сервис удалите из секции
exif
изображения атрибутOrientation
, либо установите для него значение0
.