Давид Ян: "я не считаю, что мы добились успеха"
АрхивИдеи приходят в голову по-разному. Утверждают, что Менделеев увидел свою знаменитую периодическую таблицу во сне. Идея, с которой началась компания ABBYY, возникла у Давида Яна на экзамене по французскому языку в далеком 1989 году.
Идеи приходят в голову по-разному. Утверждают, что Менделеев увидел свою знаменитую периодическую таблицу во сне. Идея, с которой началась компания ABBYY, возникла у Давида Яна на экзамене по французскому языку в далеком 1989 году.
"Я сидел на экзамене, - рассказывает Давид, - и вдруг подумал: почему до сих пор никто не написал программу, которая бы обучала французскому языку? Тем же вечером я пришел к выводу, что больший спрос будет иметь английская обучалка. А на следующий день я решил, что спросом будет пользоваться скорее не обучалка, а словарь".
"Моим партнером (и первым программистом будущей компании), - продолжает Давид, - стал Александр Москалев - в то время сотрудник НИИ в Черноголовке. Его помог найти Булат Гайфуллин - ныне руководитель компании "Интерфейс". Булат привел меня в комнату, где были установлены роскошные по тем временам цветные XT'ишки. За одним из компьютеров, спиной к нам, сидел человек. Когда мы обратились к нему, он, выдержав паузу, не спеша обернулся. Я изложил ему идею, предложив работать за 50 процентов от будущих продаж. Программист взял неделю на раздумья".
Сумма в 1500 рублей под идею нашлась у некоего Центра научно-технического творчества молодежи, который согласился заплатить авторам словаря и кооперативу, взявшемуся перевести словарь в электронную форму. "Как это ни печально, но наш заказ чуть было не стал причиной разорения кооператива. В договоре я прописал неустойку в размере 0,1 процента от суммы договора за каждую допущенную ошибку. После того как мы подсчитали ошибки, оказалось, что кооператив должен деньги нам".
Подумав неделю, Александр Москалев согласился на предложение Давида, и дело закрутилось. "Поскольку я учился на четвертом курсе института, мы планировали управиться с компьютерным словарем за летние каникулы: за июль написать программу, а за август продать первые сто копий программы, по сто рублей каждую. Мы рассчитывали заработать на Lingvo (так мы решили назвать разработку) десять тысяч рублей - по пять тысяч на брата - и на этом разойтись. Ни я, ни Александр не собирались создавать компанию. Тем более что пять тысяч рублей по тем временам были просто фантастической суммой (для сравнения: моя полуповышенная стипендия тогда составляла пятьдесят пять рублей, а хорошая летняя шабашка приносила студенту около четырехсот рублей). В то время нам казалось, что мы стоим на пороге студенческого богатства. Реальность оказалась суровее: только в январе следующего года в словарь были внесены последние изменения, а первые три копии были проданы только в мае (правда, ушли они по семьсот рублей). Так мы вернули инвестированные деньги и немного заработали. В конце концов дело нас затянуло, и пришлось-таки создать фирму. Назвали мы ее - "Бит"".
Развитие бизнеса требовало новых идей, которые не заставили себя долго ждать. Фирма "Бит" решила реализовать концепцию "От листа на одном языке, до листа на другом языке". Было решено продавать программы в комплекте, который позволял бы автоматизировать весь цикл перевода документа - от сканирования, распознавания и коррекции до перевода. "Как оказалось, это было удачным решением - потребность в таком комплексном продукте была, и люди охотно его покупали. Мы решили совершенствовать программы, входящие в комплект, - систему оптического распознавания текста (OCR - Optical Character Recognition), электронный переводчик, системы коррекции орфографии и электронный словарь (Lingvo). Но тут же наткнулись на препятствие - оказалось, что развивать продукт, который тебе не принадлежит, очень трудно. Разработчики не воспринимали наши идеи, а продавать исходные тексты своих программ они не хотели, - и тогда мы решили действовать сами". В результате компания "Бит" разработала свой корректор орфографии LingvoCorrector и программу оптического распознавания текста FineReader. С переводчиком получилось проще - удалось найти общий язык с питерской командой ProMT, которая стала поставлять свою систему машинного перевода. Выпущенный в 1993 году FineReader 1.0 стал первой российской OCR-программой под Windows. Он распознавал тексты на двух языках, русском и английском, и не требовал предварительной настройки шрифтов, как другие распознавалки. "Хотя, конечно, - улыбается Давид Ян, - самую первую версию трудно сравнивать с FineReader 4.0. Они отличаются друг от друга, как "Запорожец" от "Мерседеса"". Первыми покупателями FineReader стали организации, нуждавшиеся в том, чтобы переводить бумажные документы в электронный вид. В то время рынок был настолько пуст, что продавались любые OCR-программы. Правда, по словам Давида, тогда считалось удачей, если удавалось продать несколько копий в месяц.
|
Блюдце, чашка и ложка, или Как FineReader распознает тексты
Вопрос "Как работает FineReader?" вызвал у моего собеседника секундное замешательство: детально описывать технологию неспециалисту - дело безнадежное. Однако, взглянув на чашку с чаем, Давид встрепенулся и прочитал мне целую лекцию на тему: "Технология распознавания на примере ограниченного множества предметов". Итак, слово Давиду Яну.
- Говоря упрощенно, в OCR используется три вида классификации объектов: шаблонная, признаковая и структурная. Возьмем три предмета: чашку, блюдце и ложку. Каждая технология описывает их по-своему. Шаблонная - содержит копии каждого предмета и сравнивает распознаваемый объект с его копией. Если они совпадут - предмет распознан. В признаковой классификации у объекта выделяются признаки, и его принадлежность к тому или иному классу определяется наличием соответственных признаков. Например, круглое при виде сверху, полукруглое при виде спереди и обладающее круглым элементом сбоку - это чашка; круглое сверху, но плоское сбоку - это блюдце; длинное, плоское при виде сбоку с полукруглым элементом в конце - ложка. Структурная система отличается от признаковой тем, что объект делится на элементы и принадлежность к классам определяется по взаимному расположению элементов: например, чашка - это объект, состоящий из полусферы с плоским дном и полукруглым элементом сбоку.
Мы пошли несколько дальше. FineReader для распознавания символов использует специальную технологию, которую назвали целостным целенаправленным адаптивным восприятием. Принцип целостности гласит, что любой целый объект состоит из частей, или элементов, которые находятся друг с другом в определенных отношениях. Чтобы классифицировать объект, необходимо выделить все его части и проверить, выполняются ли заданные для них отношения.
Принцип целенаправленности означает, что сначала система выдвигает гипотезу о принадлежности объекта к определенному классу, а затем целенаправленно пытается ее доказать или опровергнуть. Этот принцип не часто применяется в системах распознавания, хотя, по нашему глубокому убеждению, именно он используется живыми организмами при зрительном восприятии окружающего мира. Собственно, этот подход к распознаванию и является тем новым, что появилось в наших системах.
Принцип адаптивности означает способность системы к самообучению.
Как будет работать традиционная OCR-система с нашими объектами? Итак, объект - круглый при виде сверху, полукруглый при виде спереди, сбоку имеется полукруглый элемент. Существует объект такого класса? Да, существует: это чашка. Таким образом, объект распознан.
Теперь представьте, что часть объекта от нас скрыта. Допустим, нам не видна ручка (что соответствует плохому качеству распознаваемого текста). Мы видим, что объект - круглый сверху, полукруглый - спереди, а сбоку - ничего нет. Классов с такими признаками не существует - следовательно, объект не распознан. Как действует наша система: сначала она очень грубо пытается понять, что это за объект. Итак: объект тяжелый - значит, это чашка или блюдце. Сверху объект круглый, спереди полукруглый, круглый элемент сбоку отсутствует. Система делает вывод, что с вероятностью, скажем, 80 процентов объект является чашкой. Затем рассматривается другая гипотеза, о том, что объект - блюдце. Сверху объект круглый, но вид спереди показывает, что он не плоский - значит, это не блюдце. Следовательно, вторая гипотеза является ложной, и объект распознается как чашка. Далее в действие вступает принцип адаптивности. Система изменяет признаки класса "чашка" и в следующий раз, столкнувшись с "неправильной" чашкой, распознает ее с первого раза. Таким образом, при работе с документом FineReader способен на ходу обучаться, запоминая характерные дефекты текста, и по мере обучения скорость работы увеличивается. Дойдя до конца текста, программа возвращается к началу и проходит текст заново, уже учитывая новые признаки классов объектов.
В общих же чертах FineReader работает следующим образом. На отсканированном изображении листа программа выделяет области распознавания: картинки, колонки текста, таблицы. Выделяются строки, которые затем разделяются на символы. После этого начинается распознавание отдельных символов, попутно определяется язык, на котором написан документ. После того как распознавание завершено, начинается обратный процесс - синтез документа: распознанные знаки собираются в слова, слова в строки, строки в колонки, колонки вместе с таблицами и картинками восстанавливаются в документ формата RTF или Microsoft Word, более или менее похожий на оригинал. Почему "более или менее"? Дело в том, что шрифт оригинала может отличаться от шрифтов, которые знает Word. Кроме того, физически невозможно соблюсти в электронной копии то же межстрочное и межбуквенное расстояние, что и в оригинале. Скажем, текст, написанный в оригинале узким шрифтом, физически невозможно вместить в те же рамки шрифтом Arial. Тем не менее мы используем хитрые алгоритмы синтеза, чтобы получить выходной документ как можно более близким к оригиналу.
Секретный проект
Проект NLC (Natural Language Compiler) зреет в недрах ABBYY уже четыре года, и, по словам Давида, пройдет еще года два с половиной, прежде чем на его основе появится полноценный коммерческий продукт. NLC станет самым дорогим проектом ABBYY - он обойдется компании в два раза дороже, чем FineReader, исходный код которого насчитывает 1,5 млн. строк и на который было потрачено более ста человеко-лет. Давид неохотно говорит об этом проекте, видимо, опасаясь, что идея может ускользнуть к конкурентам: "Технология NLC должна стать очередным скачком в развитии ABBYY и по значимости, пожалуй, превзойдет даже FineReader. Пока я могу сказать только одно: она связана с обработкой данных на естественном языке. Аналогов этой технологии еще не существует, и думаю, что к моменту выхода их не будет существовать. NLC предполагается использовать для создания нескольких самостоятельных продуктов. В частности, с его помощью можно будет распознавать речь - без настроек на голос диктора и с гораздо меньшим числом ошибок по сравнению с существующими версиями программ звукового распознавания.
Однако распознавание речи не является основной функцией NLC. Другой проект на базе этой технологии - распознавание слитного рукописного текста. Сейчас точность распознавания рукописей не очень высока, поскольку существуют объективные причины потери информации при распознавании текстов, написанных от руки. Интеграция NLC в эти системы позволит повысить точность обработки рукописного текста настолько, что если обычный человек сможет разобрать написанное, это сможет сделать и программа".