Форум » Вопросы по форуму » Скрипт для обработки результатов распознавания » Ответить

Скрипт для обработки результатов распознавания

Игорь Ф.: После распознавания пары книжек для этого сайта мой энтузиазм заметно угас от утомительного вычитывания текста в Файнридере и не менее утомительного форматирования в Ворде и я стал задумываться над способами облегчить данный процесс. Не зря Владимир предлагает распознавателям кусочки поменьше, затраты времени и монотонность способны отпугнуть кого угодно, кроме самых больших энтузиастов. Ни к чему излагать все подробности проб и ошибок, но в конце концов я пришел к скрипту на perl-е, который хотя и не избавляет от вычитывания и правки но исправляет какое-то количество ошибок а заодно форматирует документ в html с минимальным количеством тегов. Я понимаю, что работа в терминале незнакома современному "обычному пользователю" (ТМ), но ничего страшного нет- если следовать инструкции. В конце концов, если хотите работать на компьютере действительно производительно, рано или поздно придется работать с самим компьютером, а не с одной программой. Итак, скрипт делает: 1. Пагинация страниц. Если экспортировать результат распознавания из файнридера в .doc с сохранением макета страницы, а затем при помощи ворда 2003 преобразовать полученный файл в хтмл, можно увидеть, что ворд пытается сохранить разбивку на страницы при помощи тегов div class=sectionXXX, где ХХХ- порядковый номер страницы (пакета, конечно, а не исходного документа). (Примечание: в опеноффисе этого мне добиться не удалось, вордов других не пробовал). На место этих тегов скрипт и вставляет красный номер в квадратных скобках. Номер первой страницы задается пользователем, дальше нумерация сплошная (т.е. если хотите, чтобы она была правильной, в пакете страницы должны идти подряд). Хтмл-код, сгенеренный вордом - зрелище не для слабонервных, но вы этого мусора не увидите - все остальные теги, кроме p, i и табличных скриптом безжалостно удаляются. А в оставшихся сохраняются только атрибуты align=center и right. 2. Правка. Значительная часть ошибок распознавания представляет собой замену сходных по начертаниям букв: окончание -кне вместо -кие, приставка прн- вместо при-, слово герсрал вместо генерал и т.д. Скрипт просматривает текст на предмет шаблонов таких ошибок и меняет их на правильные сочетания букв. Т.к. список шаблонов этих может (и даже должен) редактировать и пополнять пользователь, список замененных скриптом слов выводится в отдельный файл, чтобы проверить, нет ли среди них правильных. 3. Сшивка разделенных слов. Некоторая часть переносов распознается как дефисы, иногда слова разрываются пробелами или внутри слова распознается точка. Эта часть скрипта использует программу проверки орфографии hunspell. Эта программа используется для проверки орфографии в мозилле и опеноффисе в виде модулей и в линуксе как отдельная программа, отличается большой скоростью работы и главное- простым текстовым форматом словарей, доступных для редактирования пользователю. Под винду имеется сборка, работающая в терминале и не требующая установки. Подробнее см. инструкцию к скрипту. Алгоритм сшивки следующий: при помощи hunspell составляется список несловарных слов в тексте, затем скрипт для каждого из них ищет справа и слева непрерывные последовательности русских букв, отделенных дефисом, пробелом или точкой и составляет их список. Удалив разделитель, снова проверяет получившиеся слова на словарность, и если проверка успешна, заменяет их в тексте. В этой части на сотню замен возможны несколько ошибок при сшивке разорванных пробелами слов, так что надо внимательно проверить их список. Советую попробовать проверку орфографии в отдельно стоящей версии hunspell- работает молниеносно :) Ссылка на архив: http://slil.ru/28752002

Ответов - 7

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

Игорь Ф.: Игорь Ф. пишет: Хтмл-код, сгенеренный вордом - зрелище не для слабонервных, но вы этого мусора не увидите - все остальные теги, кроме p, i и табличных скриптом безжалостно удаляются. А в оставшихся сохраняются только атрибуты align=center и right. Thietmar пишет: Проблема в том что если преобразовывать .док в .хтмл с помощью Ворда 2003 то получается слишком много лишнего кода. Это самая маленькая проблема.

Thietmar: На самом деле это все нужно сообщить также разработчикам файнридеров. Это ведь файнридер должен опознавать нужные последовательности символов и безошибочно идентифицировать их с нужными словами. Попутно- вот тема на форуме АББУУ http://finereader.abbyy.ru/forum/actualtopics.aspx?bid=10


Игорь Ф.: Не думаю, что разработчикам файнридера интересен наколенный скрипт, да еще на перле. Их продукт совсем не должен идентифицировать последовательности букв со словами, а должен просто максимально правильно распознавать эти самые буквы. На тамошнем форуме кстати много жалоб на качество встроенных словарей и трудности с пользовательскими. А наши словари вообще очень специфические. Кстати, встроенный словарный контроль можно отключить? А то сейчас обратил внимание, что на не очень хорошем скане слишком часто распознается -ий вместо -ия -ыя. А это куда хуже, чем бессмысленное сочетание, т. к. отлавливается только глазами. Все-таки в юникс-вэй есть здравое зерно- каждая задача должна выполняться специализированным инструментом. Сканировать надо в программе для работы со сканером типа vuescan, а с текстом работать в текстовом редакторе.

Strori: Игорь Ф., а как насчет того, чтобы налабать нормальный скрип по конверту доков в хтмл? Если интересно - пишите сюда antonmur@inbox.ru Поясню, какие операции было бы желательно иметь в функционале.

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

Игорь Ф.: Новая версия скрипта - находится по обновленной ссылке в первом посте. Изменения: 1. Обработка тегов, правка и сшивка слов вынесены в подпрограммы, что позволяет отключить вызов любой из них. 2. Дополнен и откорректирован список шаблонов правки. 3. Словари для hunspell'а пополнены и сделаны отдельными для современности и 17 и 18 веков. (Последние 2 представляют собой тот же современный словарь, дополненный словами из документов соответствующего времени.) Оказывается, подобную проблему наши люди уже решали, в результате получилась программа AfterScan: http://www.afterscan.com/ru/ Сайт правда, давненько не обновлялся и программе нужна таблетка, но если кто все же попробует, было бы интересно узнать результаты. Лично меня в приведенном на их сайте примере несколько смущает неконтролируемое осовременивание текста.



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