Рубрика «Блог компании ABBYY» - 9

Укрощение строптивого (на самом деле, нет) FineReader

После короткого рассказа о том, как устроен ABBYY FineReader (aka «теоретическая часть»), самое время перейти к применению полученных знаний. И да, котиков под катом нет: всё очень серьёзно.

Как пользователю поучаствовать в обработке документа

Чтобы не изобретать велосипед, начну с простой и понятной схемы из Справки (см. рисунок справа).

Теперь, зная список всех операций, посмотрим на конкретном примере – что может пойти не по плану и как с этим бороться.
Читать полностью »

На пути к профессиональному использованию современных OCR. Understanding FineReaderЯ занимаюсь разработкой технологий, используемых в продуктах распознавания текста компании ABBYY. Самым известным продуктом (а точнее – семейством продуктов), использующим эти технологии, является FineReader.

Что я понимаю под «технологиями»

Иногда все технологические модули (невидимые пользователю части программы) вместе называют «движком распознавания» («движок» — от английского «Engine»), что не совсем верно – они выполняют не только распознавание символов, но и кучу других действий, подробнее о которых ниже.

Чем занимается программа FineReader?

Сейчас любой из настольных вариантов FineReader может проделать все самостоятельно от получения изображения со сканера, камеры или из готового файла до выдачи результата обработки в файл или в указанное приложение, так, что человек остается «за кадром». Программа сама «распознаёт» всё что нужно (в кавычках, так как при этом программа определяет места расположения текста, таблиц, картинок, OCRит обнаруженные участки с изображённым текстом, формирует документ, который сохраняет в желаемом формате с указанными настройками)

Пара скриншотов

На пути к профессиональному использованию современных OCR. Understanding FineReader

На пути к профессиональному использованию современных OCR. Understanding FineReader

А чем занимается пользователь?

Читать полностью »

История про realloc (и лень)

Простой макрос

Все началось с простого макроса: (приблизительный код)

#define ADD_BYTE(C) do {            
  if (offset == capa) {             
    if (capa < 16) {                
      capa = 16;                    
    } else {                        
      capa <<= 1;                   
    }                               
    buffer = realloc(buffer, capa); 
    assert(buffer != NULL);         
  }                                 
  buffer[offset++] = (C);           
} while(0)

Для тех, кто не знаком с языком программирования C, поясню: этот простой макрос™ добавляет байт «C» в динамически выделяемый буфер (buffer), размер которого (в байтах) равен capa. Следующая позиция для записи определяется при помощи параметра offset. При каждом заполнении буфера происходит двукратное увеличение его объема (начиная с минимального размера в 16 байт).

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

Но как понять, насколько эффективна стратегия перераспределения?Читать полностью »

Как отличить программиста от музыканта? Спросите у них, что такое C#.

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

В значительной мере такому прогрессу в музыкальной отрасли способствовало изобретение технического стандарта MIDI, который позволил обеспечить обмен данными между электронными музыкальными инструментами по цифровому протоколу. Сам протокол основан на концепции MIDI-сообщений, при этом каждое сообщение состоит из статус-байта, который указывает на тип сообщения, и нескольких байтов данных, которые несут информационную нагрузку.

Для примера рассмотрим, что происходит при нажатии и отпускании средней клавиши до (в латинской транскрипции — С) на MIDI-клавиатуре (предположим, используется MIDI-канал № 1):

Программирование на клавиатуре… фортепиано

Статус-байт Байт данных 1 Байт данных 2
144 = взять ноту 60 = нота до 3-й октавы 127 = скорость (0..127): резкий удар по клавише
128 = снять ноту 60 = нота до 3-й октавы 10 = скорость (0..127): плавное отпускание клавиши

Знакомо, правда?
Читать полностью »

Обсуждение начну с весьма печального твита Криса Аллена (Chris Allen, @bitemyapp):

«Мне немного грустно от того, что некоторые организации твердят мантру „Вы сможете использовать haskell“, чтобы заполучить толковых инженеров подешевке».

Untyped is unsane (@bitemyapp) 3 июня 2014 г.

Почему программистам не удается заработать: многомерность и нескончаемое бремя HaskellДля тех, кто не знает: Haskell — продуктивный и мощный язык, позволяющий программистам, по крайней мере талантливым, быстро писать правильный код. По сравнению с разработкой на Java скорость возрастает в 2–5 раз при сопоставимой производительности и меньшем количестве ошибок. Крис совершенно верно заметил, что разработчик, использующий Haskell, чаще всего не получает достойного вознаграждения. Если вы твердо решили использовать функциональное программирование, то будете зарабатывать меньше коллег, которые разгребают базы кода C++ в банках, накопленные за 30 лет. Как-то это все неправильно. Почему к программистам, применяющим более мощные инструменты, применяются экономические санкции? В отличие от управленцев, ставящих во главу угла выгоду, программисты действительно хотят сделать свою работу как можно лучше. Почему же вместо «пряника» за благие намерения они получают «кнут»?Читать полностью »

Кажется, мы только объявили об официальном запуске проекта «Переведём Coursera», а наши добровольцы уже преодолели рубеж в первый миллион переведенных слов. Благодарим всех участников — вы настоящие молодцы. Для вас мы подготовили специальную страницу, где собрали поздравления и инфографику в честь такого события.

Coursera по русски: про достижения и наградыКак вы знаете, в основе проекта лежит SmartCAT — собственная облачная платформа ABBYY Language Services для автоматизации перевода. Она позволяет всем переводчикам Coursera работать с современными технологиями для перевода в удобном интерфейсе: участники могут использовать Translation Memory, автоматизированную поддержку целостности терминологии, машинный перевод, просматривать видеофрагменты лекций. Мы постоянно обновляем этот технологический фундамент, чтобы ресурс стал удобнее и лучше помогал нашим участникам с переводом лекций.

Думаем мы не только об удобстве, но и о том, как волонтеров заинтересовать. Недавно на проекте заработала система наград — ачивки. Они отражают успехи участников в переводе Coursera. Наши разработчики поделились, как устроена эта система и как она работает. Вот об этом мы вам сегодня и расскажем.
Читать полностью »

Тестирование лингвистических технологий: соревнования по автоматическому разрешению кореферентности и анафорыИтак, как и обещали, рассказываем: недавно были подведены итоги соревнований по автоматическому разрешению анафоры и кореферентности. Такие соревнования для русского языка проводились впервые а организовала их команда из ВШЭ-МГУ.

Мы уверены, что среди наших читателей много лингвистов, которые и без нас отлично знают, что такое анафора и кореференция, остальным рассказываем. Один и тот же объект реального мира может упоминаться в тексте несколько раз разными способами. «Вася – миллионер, он хочет купить остров». В этой фразе местоимение «он» и существительное «Вася» относятся к одному человеку (т.е. имеют одного и того же референта). Если система анализа текста понимает, что «он» – это и есть «Вася», значит, она умеет разрешать анафору.

Сложнее, когда Вася появляется в тексте еще несколько раз – например, как «Иванов», «клиент», «глава компании» или «футболист». Тогда речь идет уже не о местоименной анафоре, а о кореферентности именных групп. Задача системы в этом случае – объединить все слова, за которыми скрывается этот человек, в одну кореферентную цепочку. Приведем несколько примеров, а заодно покажем, как это делает наша технология Compreno.Читать полностью »

Инженеры и лингвисты снова вступили в ДиалогВ начале июня в подмосковном «Бекасово» состоялась международная конференция по компьютерной лингвистике «Диалог», которую уже много лет делает наша компания. О том, что представляет собой «Диалог», мы писали здесь, поэтому не будем повторяться, а расскажем, что было нового.

Пожалуй, одно из самых важных для нас событий – сборник научных трудов «Диалога» наконец-то будет индексироваться международной системой SCOPUS. Почему это важно? Для подтверждения своего научного статуса все отечественные ученые должны иметь публикации в наиболее авторитетных изданиях, входящих в т.н. список ВАК (Высшей аттестационной комиссии). К таковым относятся, в частности, журналы, входящие в базу SCOPUS. Скопусовский статус сборника Диалога, придает конференции более высокий статус и мы рады, что теперь участие в «Диалоге» будет придавать больше «веса» научным трудам наших докладчиков.

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

Содержание

imageРаспознавание текста в ABBYY FineReader (1/2)
imageРаспознавание текста в ABBYY FineReader (2/2)

Общая теория распознавания

Мы, наконец, дошли до самой интересной темы – распознавания символа. Но для начала давайте немного разберемся с теорией, чтобы было понятнее, что именно и почему мы делаем. Общая задача автоматического распознавания или машинного обучения выглядит следующим образом.

Есть некоторый набор классов C и пространство объектов R. Есть некая внешняя «экспертная» система, с помощью которой для произвольного объекта можно определить, к какому классу он относится.

Задача автоматического распознавания – построить такую систему, которая на основе переданной ей ограниченной выборки заранее классифицированных объектов выдавала бы для любого нового переданного ей объекта соответствующий ему класс. При этом суммарная разница в классификации между «экспертной» системой и системой автоматического распознавания должна быть минимальной.

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

Распознавание текста в ABBYY FineReader (2 2)
Читать полностью »

Будущее рынка ECM систем: взгляд из Европы В конце мая в Москве прошла конференция по вопросам управления корпоративной информацией DOCFLOW. Ее специальным гостем стал международный EСM-консультант — Майкл Циглер (Michael Ziegler). Раньше Майкл не делился своим опытом на деловых мероприятиях в России (происходило это только в рамках консалтинговых проектов), поэтому послушать его было особенно интересно.

Предлагаем вашему вниманию интервью Майкла и его взгляд на будущее рынка ECM-систем, а также видео недавнего выступления.

Главным источником секретов ECM-профессионала Майкла Циглера является не только его двадцатилетний опыт работы на рынке ECM-BPM-Capture, но и учрежденный им проект DOCVILLE. Проект собирает экспертов со всей Европы для общения и обсуждения наболевших ECM-вопросов. Этой обобщенной экспертизой и наблюдениями за профессиональным сообществом Майкл и поделился с посетителями конференции.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js