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

Мобильный OCR. Как всё начиналось (часть 2) - 1В предыдущем посте мы начали рассказывать, как OCR-технологии «переезжали» с настольных компьютеров в смартфоны – а началось всё с приложения для сканирования визиток Business Card Reader. Но сканирование визиток – это только один сценарий, где нужно мобильное распознавание. О том, как решались другие задачи хотелки пользователей, – читайте ниже.

Как мы уже говорили, перенос технологии распознавания на смартфоны связан с кучей ограничений и сложностей. Главной была и остаётся ресурсоёмкость технологии – невозможно перенести ее в мобильное устройство как есть. Но у нас уже с 2007 года был готовый инструментарий разработчика ABBYY Mobile OCR SDK, который позволял на мобильном оцифровать изображение и выдать результат в формате TXT без сохранения форматирования. И для начала в 2011 году мы решили воплотить в жизнь небольшие пользовательские сценарии, в которых такое «элементарное» распознавание вполне подходило.Читать полностью »

Подписки в ABBYY Cloud OCR SDK: «заткнитесь и возьмите мои деньги!» - 1Хорошая новостьТМ: теперь в ABBYY Cloud OCR SDK помимо разовой покупки страниц можно оформить подписку через PayPal. Мы долго планировали эту разработку, довольно долго она была в состоянии беты для ограниченного круга пользователей. Сейчас подписки доступны всем, а этот пост – о разных технических и социальных моментах этой эпичной разработки.

Начать нужно с ответа на вопрос «зачем». Ответ на него: подписки удобны и понятны многим пользователям. Хотя покупать пакеты страниц тоже удобно и несложно, пользователю нужно следить за остатком страниц приложения и докупать страницы. Сервис умеет отправлять предупреждение о скором исчерпании остатка страниц, но пользователь может его пропустить. Если пользователь забудет докупить страницы – его приложение может в самый неподходящий момент доизрасходовать остаток страниц и перестать работать.

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

Мы старались сделать логику подписок как можно более понятной и одновременно удобной для пользователей.
Читать полностью »

Lingvo API: словари ABBYY в облаке Windows Azure - 1Думаем, читателям нашего блога не нужно рассказывать подробно, что такое словарь ABBYY Lingvo. C этого продукта началась компания ABBYY 27 лет назад. Сначала словарь можно было использовать только на компьютерах, потом появились мобильные приложения и онлайн-сервисы. Недавно мы открыли доступ к словарям Lingvo для сторонних разработчиков на сайте https://developers.lingvolive.com – пока в бесплатном бета режиме.

Под катом мы подробнее расскажем о том, как мы работали над этим сервисом и как его можно использовать.Читать полностью »

Как технологии ABBYY помогают улучшить работу систем обнаружения утечек данных - 1Несмотря на прогнозы о скором наступлении светлого безбумажного будущего, объём бумажных документов всё ещё огромен. Часть из них сканируется и продолжает свою «жизнь» уже в электронном варианте – но только в виде изображений. В среднем в организациях объем сканированных копий составляет 30% от всех документов, которые хранятся в электронном виде. В госсекторе он достигает 41,5%, в ритейле – 17%, в сфере услуг – 23%, в банках и телеком-сфере приближается к 45%. Когда сканы документов лежат себе в нужной папке или делают работу, для которой они предназначены, – это хорошо. Плохо, когда кто-то пытается использовать данные из этих сканов в мошеннических схемах или как-то иначе злоупотреблять ими. Чтобы конфиденциальная информация не «утекла», в информационные системы компаний устанавливают DLP – системы предотвращения утечек.

Сегодня мы расскажем, как в одну из таких программ – Контур информационной безопасности SearchInform – был интегрирован SDK-продукт ABBYY FineReader Engine и что из этого получилось.
Читать полностью »

В прошлый раз в статье «Поиск линии корешка на фотографиях книжных разворотов» мы обещали рассказать о том, что случается с фотографией книжного разворота после этого, а именно — про устранение перспективных искажений и разгибание кривых строк текста. Без этого получить качественные результаты OCR практически невозможно.

Итак, считаем, что мы уже нашли на фотографии линию корешка, воспользуемся этим знанием, чтобы определить ваниш-точки для страниц разворота (vanishing point). Ваниш-точки – это точки схождения параллельных прямых в перспективной проекции книги на плоскость изображения. Они обе должны располагаться на продолжении этой линии, но для каждой из страниц положение точки может быть свое. Схематически это показано на следующей иллюстрации (на самом деле, это лог для отладки). Линия корешка выделена красным, линии, пересекающиеся в ваниш-точках, – зеленым.

Устранение перспективных искажений и разгибание кривых строк на фотографиях книжных разворотов - 1Читать полностью »

Как мы помогали проводить медицинскую перепись в Республике Бангладеш - 1
Как знают постоянные читатели нашего блога, в ABBYY разрабатывают не только Lingvo и FineReader, но и решения для автоматизации ввода документов и данных. Их часто используют для обработки переписей населения – мы работали в Греции, Литве, Саудовской Аравии, Таджикистане и Кувейте (статья о кувейтском проекте). Конечно, о работе в экзотических странах писать интереснее всего, и сегодня мы расскажем о медицинской переписи, которая прошла несколько лет назад в Республике Бангладеш.Читать полностью »

Cинхронный перевод: как это устроено - 1От редактора. Сделать эту статью меня вдохновил Milfgard. Я вернулась с семинара, который всепомогающая редакция Хабрахабра провела для редакторов корпоративных блогов. Сергей рассказывал там, что интересная информация есть в любой компании, надо только уметь её раскопать. Я вернулась с семинара, открыла Facebook и увидела там короткую заметку о том, что ABBYY LS — одна из наших компаний, которая занимается лингвистическими услугами — организовала весь синхронный перевод на торгово-экономическом форуме, где участвовали Россия, Монголия и Китай. Вот бы раскопать, как устроен синхронный перевод на крупном международном форуме… В раскопках мне помогала наш новый автор AnastasiyaMaksimova, ну а что у нас с ней получилось — читайте ниже. luciana

В некоторых вузах, где обучают будущих переводчиков, есть такое упражнение. Преподаватель начинает читать какой-то текст, а вы должны повторять за ним с отставанием в 3-4 секунды, ни на что не отвлекаясь. Просто повторять слово в слово, не добавляя ничего от себя и ничего не забывая. Неподготовленные «отваливаются» через минуту-две, те, кто покрепче, выдерживают минут десять. В какой-то момент твоё сознание съеживается до тонкой цепочки слов, ты ни о чем не думаешь, ничего не замечаешь вокруг себя — просто повторяешь.Читать полностью »

Оптимизация сравнения this с нулевым указателем в gcc 6.1 - 1

Хорошие новостиTM ждут пользователей gcc при переходе на версию 6.1 Код такого вида (взят отсюда):

class CWindow {
    HWND handle;
public:
    HWND GetSafeHandle() const
    {
         return this == 0 ? 0 : handle;
    }
};

«сломается» — при вызове метода через нулевой указатель на объект теперь может происходить разыменование нулевого указателя, потому что компилятор теперь может просто взять и удалить проверку. Код, конечно, с самого начала сломан, а gcc 6.1 его только немного доломает.
Читать полностью »

Не так-то просто обнулять массивы в VC++ 2015 - 1В чем разница между двумя этими определениями инициализированных локальных переменных С/С++?

char buffer[32] = { 0 };
char buffer[32] = {};

Одно отличие состоит в том, что первое допустимо в языках С и С++, а второе — только в С++.

Что ж, давайте тогда сосредоточимся на С++. Что означают эти два определения?

Первое гласит: компилятор должен установить значение первого элемента массива в ноль и затем (грубо говоря) инициализировать нулями оставшиеся элементы массива. Второе означает, что компилятор должен инициализировать нулями весь массив.

Эти определения несколько различаются, но по факту результат один — весь массив должен быть инициализирован нулями. Поэтому согласно правилу «as-if» в С++ они одинаковы. То есть любой достаточно современный оптимизатор должен генерировать идентичный код для каждого из этих фрагментов. Верно?Читать полностью »

Некоторое время назад (о, боже, уже год прошёл!) на вопрос, будет ли кому-то интересен обзор по современным методам сегментации изображения страницы документа, я получил положительный ответ (от massimus). И сегодня наконец-то решил этот обзор сделать.

Вот как-то так страницу сегментируемНо для начала – маленькое отступление. Систему распознавания текста в наших продуктах можно описать очень просто. У нас есть страница с текстом, мы разбираем ее на текстовые блоки, затем блоки разбираем на отдельные строчки, строчки на слова, слова на буквы, буквы распознаем, дальше по цепочке собираем все обратно в текст страницы. Задача сегментации ставится примерно так: есть страница, надо её декомпозировать на текстовые и нетекстовые элементы.

Дальше задачу можно уточнять и уточнять (здесь я уже вам поднадоел с разъяснениями, что правильная формулировка задачи — уже полшага к её решению; можете не сомневаться, коллег и начальство я достал этим ещё сильнее). Научные работники из разных стран, авторы приводимых методов, хотят заниматься наукой, а не казуистикой, поэтому формулируют свою задачу попроще:

На странице есть текст и картинки. Требуется разбить на блоки текст и выделить картинки. Читать полностью »


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