Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверка орфографии с помощью Perl и MS Word 
:(
    Опции темы
Suppir
Дата 26.9.2011, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Добрый день!

Подскажите, кто уже делал подобное. Есть большие текстовые файлы, я прогоняю их Perl-скриптом и достаю нужные абзацы. Теперь нужно в этих абзацах сделать проверку орфографии (проверка пунктуации не нужна). Можно ли использовать словари Word'а для проверки орфографии? Чтобы Perl вызвал Word в фоновом режиме и прогнал через его спеллчекер?

Добавлено через 13 минут и 44 секунды
Причем, мне не нужно, чтобы всплывало окно проверки орфографии Word. 

Мне нужно, например, послать переменную "миниципального"
и в результате вернуть 1, если такое слово есть в словаре Word, и 0, если такого слова нет. 
PM MAIL   Вверх
Pfailed
Дата 26.9.2011, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



Помоему есть средства более подходящие чем word. Попробуйте Text::Aspell


--------------------
PM MAIL   Вверх
Suppir
Дата 26.9.2011, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Дело в том, что у пользователей уже "хорошо обученные" словари Word.
Словари Aspell  придется заново обучать специфичной тематике. 

Это сообщение отредактировал(а) Suppir - 26.9.2011, 16:46
PM MAIL   Вверх
shamber
Дата 26.9.2011, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



смотрите сюда(Lingua::MSWordSpell)

Это сообщение отредактировал(а) shamber - 26.9.2011, 20:32
PM MAIL Jabber   Вверх
Suppir
Дата 27.9.2011, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Смотрите, на AutoIt получилось решить:
http://autoit-script.ru/index.php/topic,68...icseen.html#new


shamber, спасибо, попробую.
PM MAIL   Вверх
Suppir
Дата 27.9.2011, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



На Perl написал, используя OLE. Смотрите, как все просто:

Код

use Win32::OLE;
$word = CreateObject Win32::OLE 'Word.Application';
$word->{'Visible'} = 0;

@words = ("Муниципального", "МуницЫпального", "Закон", "Зокон");
foreach (@words){
    my $result = $word -> CheckSpelling($_);
    print "$_ - $result\n";
}
$word->Quit;

<>;




Только нужно в кодировке ANSI посылать.

Добавлено через 2 минуты и 44 секунды
Имхо, очень полезная вещь!

Это сообщение отредактировал(а) Suppir - 27.9.2011, 10:56
PM MAIL   Вверх
Suppir
Дата 27.9.2011, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Вопрос:

Я создаю объект

use Win32::OLE;
$word = CreateObject Win32::OLE 'Word.Application';


Но не дожидаюсь окончания работы скрипта и закрываю консоль. При этом в задачах приложение Word продолжает висеть и работать. Можно ли как-то связать выполнение скрипта и запущенный Word - если скрипт принудительно закрывают, то для объекта предварительно делать $word->Quit; 
?
PM MAIL   Вверх
shamber
Дата 27.9.2011, 14:49 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Код

    sub DESTROY {
    my $self = shift;
     
$word->Quit; 
    }

?

Это сообщение отредактировал(а) shamber - 27.9.2011, 14:51
PM MAIL Jabber   Вверх
Suppir
Дата 27.9.2011, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



shamber

нет, процесс Winword остается!

Т.е. я закрываю консоль Perl-скрипт с помощью крестика, не дождавшись до завершения скрипта. Можно ли в таком случае закрыть процесс winword, который был вызван этим скриптом?
PM MAIL   Вверх
Pfailed
Дата 27.9.2011, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



При закрытии консоли приложению обычно прилетает SIGHUP, хотя не факт что в windows это так.


--------------------
PM MAIL   Вверх
KSURi
Дата 27.9.2011, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



В конструктор OLE-объекта можно передать ссылку на кастомный "деструктор". Читайте документацию внимательней.


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0809 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.