транслитерация по правилам

Опубликовано Cyrill 02.04.2008

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

Собственно, пользуйтесь =)

  1. public function transliterate(&$wordarr)
  2. {
  3.         $ru_vowels = array( ‘/же/’,  ‘/ше/’,  ‘/че/’,  ‘/ще/’, ‘/ье/’,‘/ъе/’,‘/ьи/’,‘/ъи/’,‘/ъо/’,‘/ьо/’,‘/а/’,‘/е/’, ‘/ё/’ ,‘/и/’,‘/о/’,‘/у/’,‘/ы/’,‘/э/’,‘/ю/’, ‘/я/’,);
  4.         $en_vowels = array( ‘zhe’, ’she’, ‘che’, ’shche’, ‘ye’,‘ye’,‘yi’,‘yi’,‘yo’,‘yo’,‘a’,‘e’,‘yo’,‘i’,‘o’,‘u’,‘y’,‘e’,‘yu’,‘ya’ );
  5.  
  6.         $ru_consonants  = array(‘/б/’,‘/в/’,‘/г/’,‘/д/’,‘/ж/’, ‘/з/’,‘/й/’,‘/к/’,‘/л/’,‘/м/’,‘/н/’,‘/п/’,‘/р/’,‘/с/’,‘/т/’,‘/ф/’,‘/х/’, ‘/ц/’, ‘/ч/’, ‘/ш/’, ‘/щ/’,‘/ъ/’,‘/ь/’);
  7.         $en_consonants  = array(‘b’,‘v’,‘g’,‘d’,‘zh’,‘z’,‘y’,‘k’,‘l’,‘m’,‘n’,‘p’,‘r’,’s’,‘t’,‘f’,‘kh’,‘ts’,‘ch’,’sh’,’shch’,,  );
  8.  
  9.         $pattern = array_merge($ru_vowels,$ru_consonants);
  10.         $replace = array_merge($en_vowels,$en_consonants);
  11.  
  12.         foreach ($wordarr as $key=>$item) {
  13.                 $wordarr[$key] = preg_replace($pattern,$replace,strtolower($item));
  14.         }
  15. }
[Slashdot] [Digg] [News2] Бобрдобр [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Продолжение автоматизации FineReader: работа над ошибками

Опубликовано Cyrill 28.03.2008

Друзья, вынужден признать, что опубликованный мной скрипт AutoIT для автоматизации Finereader работает из рук вон плохо, кроме того неоптимален по времени и использованию ресурсов. После небольшого прохода по Google была обнаружена компания Ranorex GmbH, предлагающая замечательные средства для работы с Windows GUI. Поскольку я давно собирался начать осваивать Python, выбор скриптового языка для работы с FR не был вопросом.

Итак, под катом - очередная вариация скрипта на тему “Как автоматизировать FineReader”. Требуется Python и библиотеки Ranorex, которые скачиваются с сайта программы.
Читать полностью »

Пакетное распознавание документов при помощи FineReader и AutoIT

Опубликовано Cyrill 25.03.2008

Привет,

Прошу прощения, что давно не писал - исправляюсь.

Возможно вам доводилось сталкиваться с задачей, когда надо распознать в удобочитаемый (или редактируемый) вид сканированные или отфотографированные изображения каких-нибудь текстов. Например, редкие учебные пособия, переснятые в перерыве или, например, куча сканированной рабочей документации. Основная проблема в такой ситуации состоит в том, что FineReader, являющийся, на мой взгляд, лидером в точности распознавания, не имеет встроенных средств для пакетной обработки. Существует корпоративная версия, но она, по сути, решает несколько другие задачи: работа по расписанию и т.п. В общем, не совсем то, что нужно. Теоретически, существует Abbyy Recognition Server - но он стоит совсем других денег и лицензируется на объем обрабатываемых документов (либо абсолютное значение, либо помесячный лимит), что не вполне подходит под мои требования =)

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

После дискуссии на форуме Abbyy, обнаружил скрипт автоматизации FineReader 8 средствами абсолютно бесплатного средства автоматизации действий с интерфейсом AutoIT. Выяснилось, что с девятым FR скрипт работает не совсем корректно, посему пришлось дорабатывать напильником.

Результат тестировался в русских версиях Vista HB и Windows XP Prof, и, в общем, работает =) В скрипте есть ряд задержек, выявленных эмпирическим путем. Допускаю, что серией экспериментов эти задержки можно сократить.

Как пользоваться скриптом?

  1. Скачайте и установите AutoIT.
  2. Установите ABBYY FineReader.
  3. Установите в системе английскую раскладку клавиатуры умолчанию
  4. Запустите FR и его переключите его интерфейс на английский язык
  5. Откройте и распознайте в ручном режиме любые (желательно небольшие) файлы изображений из папки, предварительно установив необходимые опции распознавания (это нужно для сохранения настроек FR, эти же настройки будут применяться ко всем автоматически распознаваемым файлам)
  6. После сохранения распознанного вручную файла, FR нужно закрыть; в диалоговом окне сохранения файла нужно выключить галочку “Открыть сохраненный файл в родном приложении”, иначе открытые файлы очень быстро съедят память
  7. При поврежденном файле изображения скрипт приостанавливает выполнение и ждет нажатия кнопки, после чего выполнение продолжается.
  8. При необходимости изменить в коде скрипта константы $FR_dir, $drive и $START_dir
  9. Чтобы построить список папок, выполните небольшой батничек, приведенный под катом, результат его работы положите в папку $START_dir. Обратите внимание, что пустые папки тоже попадают в список, поэтому их надо вычистить вручную.

Известные слабые места скрипта:

  1. Для каждой итерации FR запускается заново
  2. Существуют случайные баги в работе скрипт - подозреваю, это связано с AutoIT, но у меня скрипт стабильно работает при выключенном explorer.exe, отключенном антивирусе, остановленных некритичных службах XP и остановленном антивирусе - чтобы минимизировать возможность воздействия на работу скрипта
  3. Задержка в 15 секунд после сохранения файла - чудовищно велика при большом количестве папок; уменьшение ее, однако, влечет увеличение сбоев в работе скрипта

Вот так - сыро, местами глючно, но чертовски дешево (100 € за FineReader Prof).
Под катом - код для AutoIT и bat-файл для сбора дерева папок. Удачного распознавания! Спасибо Alexrey (ник U235 на форумах ABBYY) за скрипты для FR8.

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


Copyright © 2007 Cyrill. All rights reserved.