Pull to refresh
76.96
Rating
ABBYY
Решения для интеллектуальной обработки информации

ABBYY Cloud OCR SDK: публичный API распознавания в облаке Windows Azure

ABBYY corporate blog
До недавнего времени в вебе наши технологии распознавания «жили» только на сайте www.abbyyonline.com, этот сервис предназначен для конечных пользователей. И вот теперь мы готовы объявить о запуске бета версии веб-API распознавания для разработчиков. Знакомьтесь – ABBYY Cloud OCR SDK, «облачный брат» уже знакомого нашим читателям ABBYY FineReader Engine.

Нам уже достаточно давно хотелось выпустить продукт, который позволял бы использовать OCR-технологии со всевозможных «тонких» и не очень устройств и всевозможных операционных систем и при этом был удобен и недорог. Надеемся, у нас это получилось. ABBYY Cloud OCR SDK предполагает оплату по мере использования, так что функции качественного распознавания становятся доступны при минимальных начальных вложениях.

Под катом мы подробнее расскажем о том, как мы над ним работали и что у нас получилось. Пока сервис находится в закрытом бета-тестировании, но мы считаем, что он уже достаточно стабилен, и стадия открытой беты всё ближе. Мы хотели бы пригласить читателей Хабра стать одними из первых «внешних» бета-тестеров ABBYY Cloud OCR SDK. О том, как получить доступ, – тоже под катом.

Облачное API распознавания можно использовать во многих сценариях. Например, включить функциональность распознавания в приложение, в котором она не является основной. Или можно сделать «лёгкое» приложение для мобильного телефона, в котором пользователь фотографирует документ, потом этот документ отправляется на сервер для распознавания, а назад приходит результат. По такому сценарию можно сделать программу, распознающую визитки, почти на всех телефонах.

Можно также добавить распознавание к веб-приложению. Установить на сервер FineReader Engine по-прежнему можно, но если хочется обойтись без этого, то облачный сервис здесь должен помочь.

API сервиса


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

Типичный сценарий работы с сервисом выглядит так. Клиентская программа, передавая изображения с помощью одного или нескольких POST-запросов, формирует задание на сервере. После того, как задание сформировано, надо отправить его на обработку, указав настройки обработки. Настройки зависят от типа выполняемой обработки.

Например, если производится простое распознавание целого документа, можно (есть умолчания) указать язык документа и формат, в котором хочется получить результат. Сейчас поддерживаются pdf, docx, txt, xml и несколько других.

Можно распознавать штрихкоды (движок сам находит штрихкод на картинке и определяет его тип), можно распознавать рукопечатный текст, которым обычно заполняют анкеты. Также мы вывели в API распознаватель визитных карточек: вы передаёте на сервер изображение визитки, а в ответ получаете vCard с распознанным текстом и всеми найденными полями: имя, фамилия, адрес и т.п.

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

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

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

Схематично последовательность команд для обработки одной фотографии изображена на рисунке:

Крупнее


В идеальном случае требуется всего лишь 3 запроса – в первом запросе изображение отправляется на сервер и ставится в очередь на обработку. Во втором узнаётся, что задание готово, и получается ссылка на скачивание. По третьему запросу скачивается результат.

Мы планируем дальше расширять API сервиса. Появятся уведомления об изменении статусов заданий через предоставляемые пользователями URL, расширенные настройки заданий и многое другое. При проектировании следующей версии API также надеемся получить от вас информацию о фичах, которых не хватает продукту в ваших сценариях использования.

Как всё устроено внутри


Сервис работает под управлением Windows Azure. Это оказалось довольно удобно, нет необходимости думать о железе и операционной системе, под которыми всё работает, и можно сосредоточиться на логике приложения.

Схематично архитектура решения выглядит так:



Сервис состоит из нескольких частей. Пользовательские данные хранятся в Blob storage, настройки и задания – в базе данных. Веб-роли отвечают за взаимодействие с пользовательскими приложениями и веб-интерфейс, а рабочие роли занимаются собственно распознаванием.

Web-роли реализуют RESTful API сервиса. Они авторизуют пользователя, получают задания, складывают изображения в blob storage, описания заданий помещаются в базу данных, а также генерируют ответы.
Несколько worker-ролей отвечают за обработку заданий. Из базы данных берётся идентификатор очередного задания, из blob’а – файлы, относящиеся к этому заданию. Всё обрабатывается, затем результаты помещаются в blob, а в базе данных делается отметка, что задание успешно обработано.

Затем, после того, как пользовательское приложение в очередной раз поинтересуется статусом своего задания, для него генерируется специальная ссылка на blob, по которой можно получить результат. Ссылка имеет ограниченный срок жизни и специальную контрольную сумму, так что получить доступ к результатам, даже зная идентификатор вашего задания, можно только посредством этой ссылки.

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

Клиенты и платформы


Для API Cloud OCR SDK достаточно просто написать клиент на любом языке программирования и для любой операционной системы.

Например, для любителей чистого линукса у нас есть скрипт на bash + curl. Полный цикл обработки файла – всего 10 строчек кода. Надеемся, достаточно понятного :-).

Для сторонников более традиционных решений есть примеры клиентов на .net, java и python, а также шаблоны приложений для Android.

Все исходные коды выложены в виде проекта на github. Мы надеемся постепенно их совершенствовать, прислушиваясь к вашим пожеланиям.

Бета-тестирование


Мы приглашаем всех пользователей Хабра принять участие в бета-тестировании сервиса. Если вы хотите присоединиться к тестированию, заходите на адрес http://ocrsdk.com. Для начала нужно зарегистрироваться и заполнить анкету-заявку на использование ABBYY Cloud OCR SDK. Любой пользователь, заполнивший анкету, сразу получает возможность бесплатно распознать 100 страниц или 500 небольших текстовых кусочков. Но если по каким-то причинам вам этого не хватило – пишите нам, добавим еще :-)

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

Нам очень интересны ваши отзывы и пожелания! Пишите их в комментариях к этому тексту или по адресу техподдержки в личном кабинете пользователя на http://ocrsdk.com.

Update: В анкете и в письмах нам можно писать по-русски :-).

Василий Панферов,
Департамент продуктов для разработчиков
Tags:ocrcloudabbyyfinereader enginewindows azuresdk
Hubs: ABBYY corporate blog
Total votes 27: ↑25 and ↓2+23
Views24K

Top of the last 24 hours

Information

Founded
Location
Россия
Website
www.abbyy.com
Employees
1,001–5,000 employees
Registered