На собеседованиях нас часто спрашивают, чем занимается Департамент продуктов для разработчиков. Мы коротко рассказываем про ABBYY FineReader Engine, но многие соискатели только понаслышке знают о том, что такое SDK и как его можно использовать, и воспринимают наш рассказ как общие слова.

Сегодня отличный пример того, как ABBYY FineReader Engine применяется в реальном продукте реальной компании для решения реальных проблем. Недавно российская компания SECURIT встроила FineReader Engine в свои продукты для обнаружения утечек данных (DLP), в том числе в продукт под названием Zgate. Об этом был пресс-релиз, а мы внимательно посмотрим на техническую сторону.

Для выявления утечек данных Zgate анализирует сообщения, создаваемые пользователями в процессе работы, – почтовые сообщения (в том числе – отправляемые через сервисы веб-почты), сообщения в социальных сетях, на форумах, в блогах и интернет-пейджерах. Для этого он интегрируется с почтовым сервером и прокси-сервером и таким образом может контролировать весь трафик (обычно достаточно контролировать только исходящий).

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

При поиске подозрительных сообщений используются заданные администратором правила. Поиск выполняется по словарю, в том числе с использованием регулярных выражений и морфологии («размер отката» и «размером отката» должны выявляться одинаково надежно), или путем сравнения передаваемого сообщения с образцами документов – в этом случае используются такие же методы выявления дубликатов, как в Google Search и других поисковых системах. Методы анализа текста включают и приятные мелочи – например, продукт может считать равнозначными буквы из разных алфавитов с одинаковыми начертаниями («а» из кириллицы и «a» из латиницы) или цифры и определенные сочетания букв («w8ing» и «waiting»).

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

Zgate – сложный DLP-продукт с хорошо понятной функциональностью, который мог бы и дальше работать сам по себе. В то же время прежде продукт мог просматривать только документы, сверстанные в цифровом виде, – RTF, MS Word, PDF с текстовым слоем и пр., но в таком виде существуют не все документы в организациях. Документы могут быть и в виде графических изображений (сканы и фотографии) или PDF без текстового слоя, и передачу документов в таких форматах тоже может быть нужно контролировать.

После встраивания FR Engine Zgate работает ровно в тех же сценариях, но теперь умеет просматривать и анализировать и файлы изображений. Соответственно, если прежде такие файлы нужно было либо всегда пропускать (безусловное доверие), либо всегда блокировать (безусловное недоверие), теперь можно принимать взвешенное решение по каждому файлу.

Zgate извлекает файлы из сообщений, передает их FR Engine для распознавания, распознанный текст передается на вход тех же методов анализа, что и прежде. Благодаря высокой точности распознавания текстов на самых разных языках применимость Zgate расширяется.

Если бы не было SDK, разработчикам Zgate пришлось бы делать распознавание самим, а это не так просто (наша компания уже много лет разрабатывает и улучшает технологии распознавания). Вместо этого они лицензируют наш SDK и могут, например, просто написать такой код на C# (по мотивам примера, поставляемого с SDK):


void processOneImage( FREngine.IEngine engine, string imageFilePath, string resultPath )
{
   FREngine.FRDocument document = engine.CreateFRDocument();
   try {
      document.AddImageFile( imageFilePath, null, null );
      document.Process( null, null, null );
      document.Export( resultPath, FREngine.FileExportFormatEnum.FEF_Text, null );
   } finally {
      document.Close();
      // кстати, у нас есть вакансии - www.abbyy.ru/vacancy
   }
}

И все – FR Engine откроет изображение, распознает с настройками по умолчанию, экспортирует результат в текстовый файл. При необходимости легко можно выбрать нужный набор языков, другие параметры. Не имеет значения, что внутри работает несколько миллионов строк кода самых разных подсистем – открытия изображений, распознавания, экспорта. Пользователю FR Engine предоставляется продуманный программный интерфейс, который позволяет использовать все возможности продукта.

Возможности продукта – это, например, почти две сотни языков распознавания, из них многие со словарной поддержкой, открытие широкого спектра форматов изображений, очень высокая точность распознавания. Все это разработчики продукта могут не делать сами, а лицензировать в виде SDK. Текстовый файл с результатами распознавания, выданный FR Engine, можно передать на вход методов анализа текста и принять решение, что делать с изображением.

SECURIT Zgate – отличный пример интеграции FR Engine. Так часть функциональности продукта разработчики Zgate создают сами, а часть лицензируют у нас. Это дает возможность каждому заниматься тем, в чем он лучше разбирается.

Пара слов о Linux. Такие решения как Zgate могут позволить себе работать на одной системе – в данном случае на Windows, потому что стоимость внедрения обычно достаточно велика, чтобы стоимость лицензии на Windows не вызывала беспокойств – просто закупается нужное железо с нужной операционной системой. Для примера, в сферической компании в вакууме с несколькими тысячами пользователей объем исходящего трафика составляет обычно около 20 гигабайт, для его обработки обычно используется пара серверов уровня HP ProLiant DL160 G6 E5620 с четырехядерным процессором на каждом. Если разработчики Zgate решат перейти на Linux, версия FR Engine для Linux у нас есть.

Дмитрий Мещеряков,
Департамент продуктов для разработчиков

 

Источник: habrahabr.ru