Обновить
16K+
139

Пользователь

16,6
Рейтинг
113
Подписчики
Отправить сообщение

Как крупные компании организуют Общий центр обслуживания клиентов (ОЦО)

Время на прочтение5 мин
Охват и читатели10K
Современный мир требует от бизнеса быстрого взаимодействия с клиентами. Чтобы обслужить как можно больше пользователей, компании стараются снимать нагрузку с фронт-офисов, перенося обработку документов в бэк-офисы. Для этого бизнес создает центры – shared services centers или общие центры обслуживания, где происходит обработка и проверка документов и данных, которые пришли из офисов, взаимодействующих с клиентами.

Такой же подход к организации обработки документов применяют и наши заказчики. Продукты ABBYY позволяют реализовать различные сценарии обработки документов, при этом учитывая особенности бизнес-процессов компании. Мы расскажем о нескольких моделях общих центров обслуживания клиентов, реализованных с помощью ABBYY FlexiCapture, – решения, которое позволяет извлекать данные из структурированных и неструктурированных документов и сохранять их в информационных системах компаний.
Читать дальше →

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

Время на прочтение9 мин
Охват и читатели49K

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


Все началось с простого макроса: (приблизительный код)
#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 байт).

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

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

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

Время на прочтение2 мин
Охват и читатели33K
Как отличить программиста от музыканта? Спросите у них, что такое C#.

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

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

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



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

Знакомо, правда?
Читать дальше →

FlexiCapture. Так ли он гибок, как называется?

Время на прочтение8 мин
Охват и читатели26K
О продукте FlexiCapture, как показывает опыт, обычные пользователи за пределами компании знают совсем мало («Уж не этим ли ЕГЭ распознают?»), несмотря на то, что он используется во многих крупных организациях. Можно с этим мириться, считая, что продукт не для конечного пользователя, а корпоративный. А можно периодически рассказывать про него всякое, что будет не только полезно тем, кто с ним уже знаком, но и намекнёт далёким от продукта людям, что Flex — это не просто 4 буквы в названии.

Наши партнеры из новосибирской компании АТАПИ Софтвер поделились своим приемами обработки разных сложных случаев. Это набор конкретных практических советов, которые, мы надеемся, будут вам полезны. Кроме того, каждая из этих историй подобна дзенскому коану — помогает раскрыть истинную природу FlexiCapture во всем ее многообразии.
Читать дальше →

Английские идиомы с именами

Время на прочтение2 мин
Охват и читатели64K
Сегодня в рамках наших уроков английского мы расскажем об английских идиомах с именами.

John


John – одно из самых распространённых английских имён. Наверное, именно поэтому оно породило так много интересных идиом, а вымышленные и вполне себе реальные Джоны превратились в нарицательных персонажей:

John Q. Public или John Q. Citizen (товарищ или гражданин Джон Кью) – американизм, обозначающий среднестатистического гражданина, обычного человека. К слову, среднестатистическую гражданку называют Jane Q. Public.

John Hancock (Джон Хэнкок) – имя этого американского государственного деятеля, чья размашистая подпись под Декларацией независимости США приобрела всеобщую известность, стало нарицательным и используется для обозначения вообще всякой подписи. У нас шутливо говорят «поставить закорючку», а американцы просят «поставить своего джона хэнкока», тоже в шутку, разумеется.
Читать дальше →

Участники Кубка Lingvo 2014 помогут с переводом Coursera

Время на прочтение2 мин
Охват и читатели3.7K
Спешим сообщить, что сейчас проходит шестой онлайн-чемпионат по переводу — «Кубок Lingvo 2014». Как и раньше, в соревновании могут принять участие школьники старше 16 лет, студенты всех учебных заведений и форм обучения, а также аспиранты, получившие диплом об окончании вуза не ранее 2012 года. Участники поборются за звание лучшего переводчика, а также за призы и подарки, среди которых поездка в страну изучаемого языка.

В этом году задания Кубка составлены на основе лекций Coursera, а лучшие переводы наших участников станут доступны всем слушателям этого образовательного онлайн-проекта.
Читать дальше →

Поиск в пространстве состояний

Время на прочтение5 мин
Охват и читатели31K
Мы продолжаем серию постов про искусственный интеллект, написанных по мотивам выступления в «Технопарке» Mail.ru Константина Анисимовича — директора департамента разработки технологий ABBYY. Вторая статья будет посвящена алгоритмам поиска.

Навигатор по серии постов:
Искусственный интеллект для программистов
• Применение знаний: алгоритмы поиска в пространстве состояний
• Получение знаний: инженерия знаний и машинное обучение

В зависимости от того, какой способ представления знаний мы выбрали — декларативный или продукционный — мы определяем способ применения знаний. С продукционной системой все достаточно просто: мы непосредственно интерпретируем продукции.

Если же мы выбрали декларативное представление знаний, то все происходит несколько сложнее. Для этого нам нужно реализовать поиск в пространстве состояний. Дело в том, что структурированное представлений знаний организовано иерархически. А если мы пытаемся применить иерархическое описание к входным данным, то мы на каждом его уровне получим возможные варианты интерпретации данных — гипотезы.
Читать дальше →

Искусственный интеллект для программистов

Время на прочтение5 мин
Охват и читатели90K
Как случилось, что искусственный интеллект успешно развивается, а «правильного» определения для него до сих пор нет? Почему не оправдались надежды, возлагавшиеся на нейрокомпьютеры, и в чем заключаются три главные задачи, стоящие перед создателем искусственного интеллекта?

На эти и другие вопросы вы найдете ответ в статье под катом, написанной на основе выступления Константина Анисимовича, директора департамента разработки технологий ABBYY, одного из ведущих экспертов страны в сфере искусственного интеллекта.
При его личном участии были созданы технологии распознавания документов, которые применяются в продуктах ABBYY FineReader и ABBYY FormReader. Константин рассказал об истории и основах разработки AI на одном из мастер-классов для студентов Технопарка Mail.Ru. Материал мастер-класса и стал базой для цикла статей.

Всего в цикле будет три поста:
Искусственный интеллект для программистов
Применение знаний: алгоритмы поиска в пространстве состояний
• Получение знаний: инженерия знаний и машинное обучение
Читать дальше →

Как прочитать патент за одну минуту

Время на прочтение3 мин
Охват и читатели40K
Допустим, кто-то подал на вас в суд за нарушение патента. Вам нужно выяснить, насколько все плохо. Или, например, ваш начальник дал вам поручение проверить, нарушает ли кто-либо патент, который вы когда-то получили. А вы совершенно ничего про это не помните, потому что в среднем на патентную экспертизу уходит около четырех лет и к тому времени, когда случится что-то интересное, вы обо всем этом благополучно забудете.

Или, например, читаете вы одну из восьмидесяти сиксилиардов историй на Slashdot, в которых используется название патента, чтобы порассуждать на тему из разряда «догадайтесь, какую простую вещь додумались запатентовать». При этом вы понимаете, что название — это еще не само изобретение, и вам любопытно, о чем же все-таки идет речь.

На полную оценку патента может уйти несколько часов или даже дней. Если времени у вас мало, вот неприлично быстрый способ выяснить, что представляет собой патент, меньше чем за одну минуту.
Читать дальше →

По гамбургскому счёту

Время на прочтение5 мин
Охват и читатели4.9K
Недавно мы выпустили ABBYY FlexiCapture for Invoices – решение для потокового ввода европейских счетов в СЭД (системы электронного документооборота). Строго говоря, обрабатывать счета умеет и «большой» ABBYY FlexiCapture, на основе которого сделано новое решение. Но в нем нужно самостоятельно задавать все настройки для работы со счетами, а многие наши клиенты, как выяснилось, предпочитают уже настроенные решения. Ну, вы понимаете – достать «из коробки» программу, установить на компьютер оператору Мэри (продукт продается пока только в странах Европы), подключить к СЭД – и пусть работает.

И как же оно работает?

Как работает автоматическое выделение документа на изображении в программе ABBYY FineScanner?

Время на прочтение5 мин
Охват и читатели17K
image
Что такое ABBYY FineScanner
ABBYY FineScanner – программа для iOS-устройств, которая может фотографировать документы и обрабатывать снимки так, чтобы получившиеся электронные копии (по сути – сканы) были удобны для работы – чтения, печати или хранения/пересылки в удобочитаемом виде. О выходе первой версии мы писали здесь.

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

Весь процесс можно разделить на несколько основных этапов:

1) Уменьшение исходного изображения
2) Выбор наиболее информативного канала
3) Предобработка изображения, выделение контуров
4) Детектирование границ и определение углов документа
5) Проверка полученных гипотез
6) Уточнение координат углов документа

Рассмотрим каждый из этапов подробнее.
Читать дальше →

Не могу поверить, что вы выбрасываете книги!

Время на прочтение10 мин
Охват и читатели55K
От редактора. Тема книг, вернее, тема знаний, которые в них содержатся, всегда была близкой для ABBYY. Мы многожды участвовали в проектах по оцифровке книжных собраний – и европейских, и отечественных. Поэтому, когда ваш редактор наткнулся на весьма неожиданную англоязычную статью на тему сохранения библиотечных книг, у него сразу возникло желание перевести её на русский и обсудить с вами, читателями. Автор материала — библиотекарь в школе.

Не могу поверить, что вы выбрасываете книги!


Я библиотекарь, но уже не библиофил.

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

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

Ученик программиста

Время на прочтение6 мин
Охват и читатели102K
Школу я бросил, когда мне исполнилось 16. Просто это было не для меня. Компьютеры – вот, что меня привлекало. Может быть, я был и неправ, но мне казалось, что в школе я только терял время, а мое настоящее образование начиналось только тогда, когда я возвращался домой. Я перестал уважать это учебное заведение и, естественно, совсем бросил учиться. Ну, и понаставили мне кучу диагнозов типа «необучаемый» и начали лечить. Оставалось только ждать, чтобы все это поскорее закончилось.

В конце концов я решил, что лучшее, что можно было сделать, – это бросить школу и пойти учиться на специалиста по информатике – программиста. Может быть, для тех, кто живет в США и Канаде, это звучит и глупо. Ведь там для того, чтобы получить диплом по специальности «компьютерные науки», надо закончить колледж или университет, но в Германии уйти из школы в ученики – обычное дело. У нас это называется «двойная система среднего профессионального образования». Наверное, эта система и есть одна из основных причин успеха Германии.
Читать дальше →

Олимпиадные задачи по программированию: что за зверь?

Время на прочтение5 мин
Охват и читатели62K
Недавно мы анонсировали конкурс задач по спортивному программированию. Организаторы конкурса попросили написать короткое объявление о конкурсе в блог ABBYY, но строгий редактор отказался печатать анонс без объяснения того, что же такое олимпиадная задача. Из этого родилась целая статья. Начнем, пожалуй, с примера олимпиадной задачи.
Этот же пример, чтобы по ссылке не ходить

ИТ-рестораны


ограничение по времени на тест: 4 секунды
ограничение по памяти на тест: 256 мегабайт
ввод: standard input
вывод: standard output

В городе N. очень плохо с дорогами, общепитом и IT-инфраструктурой. Всего в городе n перекрестков, некоторые пары которых соединены двусторонними дорогами. Дорожная сеть состоит из n - 1 дороги, по дорогам можно добраться с любого перекрестка на любой другой. Да, вы правы — дорожная сеть образует неориентированное дерево.

Недавно мэр города придумал способ, устраняющий проблемы с общепитом и IT-инфраструктурой, причем одновременно! Решено поставить на перекрестках города ресторанчики двух известных сетей кафе для IT-шников: «iMac D0naldz» и «Burger Bing». Так как владельцы сетей не дружат, категорически запрещается размещать рестораны двух разных сетей на соседних перекрестках. Есть и другие требования. Вот полный список:

  • в каждом перекрестке должен находится не более чем один ресторан;
  • каждый ресторан принадлежит либо «iMac D0naldz», либо «Burger Bing»;
  • каждая сеть должна построить не менее одного ресторана;
  • не существует пары перекрестков, которые соединены дорогой и на которых стоят рестораны разных сетей.

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

Помогите мэру проанализировать ситуацию. Найдите все такие пары (a, b), что a ресторанов может принадлежать «iMac D0naldz», b — «Burger Bing», а сумма a + b максимальна.

Входные данные

В первой строке входных данных содержится целое число n (3 ≤ n ≤ 5000) — количество перекрестков в городе. Далее в n - 1 строке перечислены все дороги, по одной дороге в строке. Каждая дорога задана парой чисел xi, yi (1 ≤ xi, yi ≤ n) — номерами соединяемых перекрестков. Считайте, что перекрестки пронумерованы от 1 до n.

Гарантируется, что заданная дорожная сеть представляет собой неориентированное дерево с n вершинами.

Выходные данные

В первую строку выведите целое число z — количество искомых пар. Далее выведите все искомые пары (a, b) в порядке увеличения первой компоненты a.
Примеры тестов
Входные данные

5
1 2
2 3
3 4
4 5

Выходные данные

3
1 3
2 2
3 1

Входные данные

10
1 2
2 3
3 4
5 6
6 7
7 4
8 9
9 10
10 4

Выходные данные

6
1 8
2 7
3 6
6 3
7 2
8 1


Первое, что бросается в глаза, это необычное условие. Такой подход сложился исторически: писать краткую математическую формулировку не принято. Обычно ее пытаются связать с реальной жизнью, ну или с не очень реальной. Например, в USACO героями всех задач являются фермер Джон и коровы. Прежде чем приступить к решению после прочтения условия, участнику требуется выделить математическую формулировку задачи.
Читать дальше →

Field-level OCR. What is it for?

Время на прочтение6 мин
Охват и читатели9.1K
Мы уже анонсировали крутую штуку под названием ABBYY Cloud OCR SDK. Она постепенно набирает популярность — на днях сервис распознал миллионную страницу. Кажется, это хороший повод повысить OCR-грамотность настоящих и будущих пользователей. Итак, начнём.

Сегодня речь пойдёт о существовании двух видов распознавания – Full Page OCR и Field-level OCR. Эти подходы отличаются не только ценой, между ними есть фундаментальные различия в том, зачем они нужны. К сожалению, далеко не все начинающие разработчики в области OCR понимают эти различия, и вынуждены учиться на ошибках. И более того, многие крупные и хорошо известные игроки на рынке Data Capture продолжают до сих пор использовать однопроходный алгоритм там, где будет хорош многопроходный (т.е. Full Page OCR вместо Field-level). Причины такого их поведения банальны: приложение написано много лет назад, и им слишком дорого переделывать архитектуру, UI, заново обучать своих партеров. И они вынуждены расплачиваться за это ограничениями в области качества распознавания.
Читать дальше →

Переводим с программистского на русский

Время на прочтение6 мин
Охват и читатели37K
Как вы думаете, кто лучше всего знает продукт? PM, или может быть DM? Аналитик? Интерфейс-дизайнер? Ответ на все эти вопросы, скорее всего, будет «нет». По крайней мере, в случае большого проекта. Почему?

Попробуем рассмотреть подробнее:

Главный. Он описывает концепт. Говорит: «Хочу, чтобы тут было синим, а эта кнопка всё уменьшала. А вот здесь, чтобы как в Windows 8 | iOS | в том приложении | лучше, чем у конкурента (ненужное зачеркнуть). И, очевидно, оно должно уметь делать всё красным и подкладывать квадратики».
Читать дальше →

Европейцы и европейские языки: переводить или не переводить?

Время на прочтение5 мин
Охват и читатели49K
Европа известна своим языковым разнообразием: в этой части света говорят на 23 официальных языках и более чем на 60 региональных языках коренного населения. К тому же согласно полному докладу Европейской комиссии от 2012 года «Европейцы и европейские языки» множество мигрантов, приехавших в Европу, разговаривают на своих родных языках.

Как же при наличии такой пестрой языковой среды решить, насколько целесообразным будет перевод?

Недавно компания TNS, которая проводит исследования общественного мнения и социальных сетей в 27 государствах Европейского союза, подготовила отчет о том, как европейцы используют и воспринимают языки. И мне хотелось бы ознакомить вас с несколькими самыми интересными выводами, сделанными в этом документе.
Читать дальше →

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

Время на прочтение9 мин
Охват и читатели47K
На Хабре не раз обсуждались вопросы локализации/интернационализации приложений. Мы – компания ABBYY Language Services – давно работаем в области лингвистических услуг, сервисов и технологий, и локализацией софта занимаемся постоянно. У нас в этом вопросе накопился значительный опыт, мы решили им поделиться, сделав больший акцент на организации всего процесса. Локализация приложений — более сложная задача, чем принято считать, и подойти к ней можно разными способами: можно изначально создать простой и понятный текст, можно вложиться в крутых переводчиков, которые из любого текста вытянут смысл, можно сделать подготовку и перевод текста «как-нибудь», но посадить сообщество или тестировщиков на выверку финального результата. Необходимо только помнить, что выверка исходного текста делается на одном языке, а выверка результата — на всех языках, т. е. усилий надо затратить в N раз больше.

Вообще, локализация — это по факту открытие еще одного рынка, и понятно, что, при принятии решения о локализации, руководство рассчитывает получить дополнительную прибыль. При этом зачастую в эту самую локализацию вкладывают лишь малую часть от общего бюджета разработки (скажем, порядка 1–2 %). Т.е. расчет идет на то, что, добавив 1 %, можно получить + 50 % дохода. Насколько реалистичными могут быть такие ожидания?
Много текста про это

«Hola, яблочные гаджеты!»

Время на прочтение2 мин
Охват и читатели4.1K
imageДавайте ненадолго заглянем в Мексику, где живёт и творит «Оксфорд Южной Америки» — издательство Ediciones Larousse Mexico. Эти замечательные люди с инстинктом первопроходцев подарили латиноамериканскому миру справочники, словари и кулинарные книги – всё на испанском языке. Недавно они пошли ещё дальше и наколдовали четыре словарных приложения на базе нашего движка ABBYY Lingvo Dictionaries for iOS, так что теперь владельцы яблочных девайсов с берегов двух Америк могут batir tambores и bailar la rumba. А мы расскажем, что это за софт и чего он умеет.
Читать дальше →

Грязное программирование с чистой душой: разработка эвристических систем (часть 1)

Время на прочтение6 мин
Охват и читатели28K
Химики любят говорить, что химия занимается исследованием грязных веществ чистыми методами, физика — чистых веществ грязными методами, а физическая химия, дескать, исследует грязные вещества грязными методами. В областях, традиционно относящихся к искусственному интеллекту или смежных с ними (распознавание образов, решение NP-трудных задач, обработка текста и т.д.), большинство задач являются грязными. Т.е. плохо поддающимися формальному описанию и не имеющими четких критериев правильности решения. Не знаю, как выкручиваются химики, а программистам редко удается порешать такие задачи, не запачкавшись. Программирование грязных задач тоже грязно, и здесь грязное — не значит плохое. Эта статья не о том, как сохранить чистоту и стерильность. Эта статья о том, как, вооружившись ломом мужеством и терпением, погрузиться в глубинные литосферные слои и выжить.

Итак, предположим, что вам необходимо разработать систему, демонстрирующую сложное поведение (например, переводящую бабушек через дороги, или, в порядке экзотики, распознающую текст на изображении). Если вам кажется, что задача недостаточно грязная, попытайтесь написать работающую систему, улучшить качество ее работы, насколько это возможно, а затем улучшить еще сильнее. Желательно, если при этом не ухудшится быстродействие, идеально — если улучшится.
Читать дальше →

Информация

В рейтинге
554-й
Откуда
Россия
Работает в
Зарегистрирован
Активность