Как можно получить церковнославянские тексты при помощи сканирования

Здесь мы хотели бы поделиться своим опытом сканирования ЦС-текстов.

Единственный инструмент, который довольно неплохо можно настроить для распознавания произвольного текста — это FineReader (FR). Начиная с версии 3.0 в данной программе существенно повысилось качество распознавания текстов, набранных стандартными шрифтами. После некоторых экспериментов было обнаружено, что FR неплохо настраивается для распознавания произвольного печатного текста. Главное, чтобы распознаваемые символы были хорошо пропечатаны и чтобы четко выделялись строки текста.

Для того, чтобы научить FR распознавать текст на языке, который ему незнаком, необходимо сделать следующие шаги. Первое — задать алфавит всех разрешенных символов (внутри FR он задается при помощи языков слова и языков текста; первые являются подмножеством вторых, находится здесь: "сервис" —> "опции", закладка "распознавание", группа "языки"). А второе — создать эталон для распознавания. Эталоном внутри FR называется обычно набор образов-шаблонов букв, которые накапливаются при обучении и с которыми затем сравнивается новопросканированный текст.

Поскольку текст на церковнославянском языке довольно сильно отличается от всех современных шрифтов, то при обучении FR церковнославянскому целесообразно создать новый эталон, а также задать новый язык. На данном этапе отсылаем всех к спецификации языка HIP, потому что задавая набор символов языка, удобно максимально приближать выходной текст к стандарту HIP. Для этого, задавая символы языка, следует добавить ко всем русским символам несколько латинских, а именно: FfJjIiUuWwSs, а также символы: '`^~"\@.

Для того, чтобы наполнить эталон образами букв, нужно включить использование новосозданного эталона и распознать несколько страниц в режиме обучения (включается здесь: "сервис" —> "опции", закладка "распознавание", группа "обучение"; для церковнославянского текста обязательно следует отключить опцию "использовать омнифонт"). В данном режиме FR, встретив незнакомый ему образ, спросит, какому символу языка этот образ сопоставить. И как раз здесь можно научить FR сохранять все надстрочные знаки. Программа, пытаясь выделить отдельные символы  среди сплошного текста, обычно буквы захватывает вместе с ударениями, придыханиями и титлами. Каждому такому сложному образу следует сопоставить не один символ алфавита, а сразу несколько. FR будет считать такую комбинацию лигатурой, а мы на выходе будем сразу получать что-то вроде следующего — а=' (в слове а='гг~елъ — ангел), ц\д (в слове бц\да — Богородица). 

Обычно для качественного обучения бывает достаточно пройти несколько страниц текста. Затем можно сканировать тексты уже без обучения. Потом, если на каких-то конкретных символах программа часто будет ошибаться, ее всегда можно дообучить. Для FR важно, чтобы весь текст сканировался в одном разрешении. То есть в эталоне одна и та же буква в разных разрешениях будет храниться как два разных образа.

Несмотря на все обучение, FR все равно будет делать довольно большое количество ошибок, которые хотя и не исправляются дополнительным обучением, но сами по себе довольно однотипны. Эти стандартные ошибки сканирования мы обычно исправляем при помощи макроса в текстовом редакторе Word. Это удобно тем, что макрос всегда можно пополнить, встретив какую-либо регулярно повторяющуюся ошибку.

На нашей страничке лежат вариант макроса (102k), с помощью которого мы исправляем стандартные ошибки сканирования, и пакет (2,9Mb) для FR5.0, в котором уже есть готовые шаблоны (разрешение 300dpi).

Мы сами успешно работали и настраивали  FR версии 3.0 и и 5.0. От пользователей и соработников были положительные отзывы о 4.0 и 6.0 версиях FR.  Советуем также почитать руководство по сканированию цс-текстов на сайте Даниила Дремачева "Акафистник".

Если решились попробовать воспользоваться данной информацией, напишите, пожалуйста, нам о результатах на адрес библиотеки.