Распознавание текстов

Выбор программы

Существуют только две передовые программы распознавания: ABBYY FineReader и Tesseract. Программа FineReader — передовая, коммерческая, только под Windows. Tesseract — бесплатная, в основном рассчитана на Linux, поэтому имеются сайты, являющиеся веб-интерфейсами Tessercat.

  • Tessercat, при его бесплатности, имеет много существенных недостатков — медленней, плоховато распознаёт русский, нет распознавания дореформенных букв и орфографических словарей той эпохи, а также ударения и вёрстки страниц (колонки, колонтитулы, текст на полях внизу и сбоку страниц). Tessercat v4, вышедший в последние годы, сделан на основе нейросети, его обучение основным мировым языкам длилось несколько лет, имеется поддержка только современного русского.
  • Профессиональной программой вне конкуренции является коммерческий ABBYY FineReader. Начиная с версий 11 и 12 он имеет словари распознавания дореволюционной орфографии и ударений в словах. Ниже описана справка применительно к этой программе, другие программы имеют схожие функции.
Ссылки

Тип страниц в файле скана

Файлы pdf и djvu представляют собой пакет из изображений (в форматах jpeg, gif) постраничных сканов документа. В файле может присутствовать отдельный текстовый слой, который будет отображаться при публикации в Викитеке (в пространстве имён «Страница»). Если текстового слоя нет, то его необходимо сделать, в этом помогут программы распознавания текста. Реже, изображений страниц нет, а текст изначально хранится в особом формате (как в MS Word).

Выбор языков документа

Для качественного распознавания надо уточнить языки документа в настройках FineReader.

  • Если в книге лишь изредка встречаются иностранные слова, лучше оставить только поддержку русского языка. Иначе, половина текста ошибочно распознается как иностранные буквы[1]. К тому же, лишние словари замедляют работу.
  • По возможности не включать редкие языки, они могут распознаются некачественно[2].

Словари

FineReader использует словари, существенно улучшающие точность распознавания. Можно пополнить словарь часто используемыми в книге терминами — сокращениями, специальной терминологией.

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

Размер файла и форматы сжатия

На Викисклад возможно загрузить файл размером до 4 Гб. Но сделать это можно только через инструмент Chunked uploads, или сделав запрос администраторам.

В обычном загрузчике лимит — 100 Мб.

Формат изображения в файле выясняется при масштабировании текста сканированной страницы:[3]

Тип страниц в pdf Признаки Рекомендации по сжатию файла
Векторные шрифты Края букв ровные при любом увеличении, без «лесенки» из пикселей Хорошее сжатие без потери качества.
Растровое чёрно-белое изображение Видны точки пикселей Можно использовать опцию сканирования «чёрно-белый режим», и попробовать сжатие
Растровый jpg с градациями яркости Буквы состоят из точек разных оттенков Лучше включить «сохранить оригинальное изображение», оставить включённым «цветной» или «серый» режим, и выключить сжатие.

Примечание:
В FineReader замечена недокументированная особенность, что при выборе опции «сохранить исходное разрешение» по умолчанию включается «сжимать, с потерей качества до 80 %». Поэтому альтернативно можно выбирать «Пользовательское…» и явно запретить сжатие.
Однако, визуально это никак не меняет пиксели изображения, а размер файла может получится даже чуть больше.
Также, при этом визуально djvu выглядит также плохо, хотя размер файла увеличивается в 3 раза, становясь почти равным оригиналу.


Формат выходного файла
Формат Рекомендации
djvu На обычном тексте даёт уменьшение размера документа без существенной потери качества. На книгах с мелким и «тонким» шрифтом может безвозвратно испортить скан, тестируйте предварительно!
pdf с опцией сохранения MRC[4] (только в FineReader) По сравнению с djvu сжатие и качество лучше, при этом файл может открываться почти во всех читалках. Режим заимствован из djvu. Если разница несущественная, рекомендуется эту опцию выключить.
pdf с опцией сохранения Precise Scan[5] (FineReader) Сжатие меньше, но сглаживаются «лесенки пикселей» присутствующие в предыдущих форматах[6].


Открытый и записанный в том же формате файл не идентичен оригиналу (обычно хуже). Поскольку при открытии файла он программно обрабатывается.

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

Сохранение файла со сжатием обычно приводит к уменьшению его размера без существенной потери качества, поэтому в общем рекомендуется сжимать все файлы. Разрешение лучше делать до 300—400 dpi, а для текста с мелким кеглем — до 600 dpi[7]. Сохранять можно в формат djvu, или в pdf, с режимами MRC и Precise Scan программы FineReader, дающими лучше качество и/или сжатие, чем djvu (см. таблицу).

Однако, сжатие рекомендуется не для всех книг. Например, в сканах словарей могут содержаться мелкие и тонкие шрифты (греческий алфавит), мелкие иллюстрации, рукописные надписи. Сжатие необратимо повредит их, ухудшив возможное последующее OCR-распознавание. Поэтому, если существует какое-то ограничение на размер файла, то лучше добавить в файл распознанный текст оригинала, как резервный источник оригинальной информации, и в описании загруженного файла указывать ссылку на оригинал.

Время обработки

FineReader, перед ковертацией в djvu, требует распознавания текста. Итого потребуется 3 операции: 1) анализ книги — конвертация в формат FineReader, с разметкой областей текста и картинок; 2) распознавание; 3) запись в djvu.

Каждая из операций занимает примерно равное время, и в целом может занять до 1—2 часов машинного времени. В особо сложных случаях, и на старом компьютере, может потребоваться около трёх дней.

  Имеются риск потратить впустую десятки часов работы, получив некачественный документ из-за неточных настроек. Поэтому предварительно стоит тестировать настройки на отдельных страницах скана. (Используйте опции «сохранить выбранные страницы как…», и в меню «Страница»).

Сохранение только распознанного текста

Бывает, что надо опубликовать или обновить распознанный текст без загрузки файла скана. Опишем как это лучше сделать в FineReader. Также, если в файле уже есть распознанный текстовый слой хорошего качества, можно попробовать экспортировать его, например программой STDU Viewer.

Экспорт в файл

  1. Открыть файл скана в FineReader. (Возможно он потребует распознать текст, даже если в файле уже есть текстовый слой, распознанный другими программами.)
  2. Выбрать формат сохранения HTML, или FB2 (формат XML). В этих форматах сохраняется оформление текста и они имеют оптимальную структуру. Также можно выбрать простой текст (TXT), если оформление сохранять не нужно или оно отсуствует.
  3. Внизу окна сохранения файла есть «Опции файла». Там выбрать «Создавать один файл для всех страниц» если планируется заливка текста в основное пространство. Или «Создавать отдельный файл для каждой страницы», если текст нужен для постраничной заливки скриптом в пространство «Страница».
  4. Нажать «Параметры сохранения» и проверить опции:
  • «Форматированный текст» — сохраняет тэги курсивного и др. выделения слов, и таблицы.
  • «Сохранять css» (для html) — включить, файлы получатся короче.
  • «Сохранять картинки» — если в документе они есть и хочется сделать пометки о них на страницах. Обратите внимание, что сами картинки в Викитеке таким образом не разместить.

Нажав «Ок» сохранить файл.

Викификация распознанных текстов

Теперь надо викифицировать и почистить полученные файлы.

Очистка html

Зачастую, в Викитеке можно сохранять текст и в html формате, только желательно удалить CSS оформление. Некоторые вики-гаджеты умеют конвертировать html в вики-разметку.

  • Конвертер. (Выкл. в нём опцию «Replace other HTML tags if possible», иначе он некорректно убирает тэги <p>, не перевода стро́ки. И для таблиц с короткими значениями в ячейках можно установить «Use one-line position of cells in a row» в «yes».)

/ Скрипт для html будет добавлен позже /

Очистка fb2

Открываем файл в текстовом редакторе (текстовый процессор типа MS Word не подходит; для Windows рекомендуется редактор Notepad++, альтернативно Sublime Text). Можно просто скопировать текст в редактор Викитеки, и убирать теги в нём, но он медленный, что ощутимо на больших файлах, и сравнительно примитивный.

  • Удаляем тэги заголовков (<body>, <?xml>, <FictionBook> и т. п.).
  • Заменяем тэг emphasis на em (кнопка ctrl-h или в меню «Поиск» → «Замена», «Заменить всё»).
  • Таблицы можно оставить в формате html или конвертировать их следующими инструментами:
    • Конвертер. (Выкл. в нём опцию «Replace other HTML tags if possible», иначе он некорректно убирает тэги <p>, не перевода стро́ки. И для таблиц с короткими значениями в ячейках можно установить «Use one-line position of cells in a row» в «yes».)
    • Конвертацию может делать бот Pwb скриптом table2wiki.py.

Текстовый документ (TXT)

В формате txt сохраняются лишь текстовые символы, без оформления, разметки таблиц, картинок. Настройка «Параметров сохранения»:

  • «Форматированный текст» — включить.
  • «Сохранять деление на строки» — выключить.
  • «Разделять страницы символом конца страницы (#12)». Включить, если нужны маркеры — разделители страниц. Они могут быть необходимы при заливке текста в пространство имён «Страница», создании словника, при публикации.
  • «Разделять абзацы пустыми строками» — включить.
  • «Сохранять колонтитулы». Колонтитулы лишь мешают при размещении текста в основном пространстве. Однако они могут быть желательны в пространстве имён «Страница», где текст приводится в соответствие оригиналу.
  • «Кодировка» — UTF-8.

Нажать «Ок». Далее выбрать одно из:

  • «Создавать один файл для всех страниц».
  • «Создавать отдельный файл для каждой страницы» — если нужно сохранить нумерацию страниц. При выборе этой опции документ сохранится во множестве файлов, нумерованных по порядку страниц скана. Сохраняем их в пустой папке, чтобы избежать казусов. Далее, открываем командную консоль Windows и переходим в эту папку[8], вводим команды:
    > chcp 65001
    > for %f in (*.txt) do (echo ^<newpage n="%f"/^> && type «%f») >> output.lst
    
    Это создаст файл output.lst, состоящий из склеенных страниц, разделённых маркерами с нумерацией этих страниц. (Обратите внимание, что если запустите команду дважды, то файл допишется, поэтому перед перезапуском рекомендуется удалять этот файл.)

Программы OCR

Распознавание

Windows
  • FineReader — коммерческий и самый качественный инструмент. Начиная с версий 11 и 12 имеет словари распознавания дореволюционной орфографии и ударений в словах.
Linux
Online-сервисы
Конверторы и утилиты для djvu
Постобработка скана перед распознаванием

Извлечение текстового слоя в файл

Список программ, способных извлекать текстовый OCR-слой, если он имеется в сканированном файле. Заметьте, что при экспорте в текст теряется оформление шрифта (если оно было), и могут портится символы.

Windows: STDU Viewer, PDF-XChange Editor (экспорт в Word с частичным сохранением оформления)

Примечания

  1. В программе нет настройки приоритета языков. Следовательно: при выборе двух языков — русский + иностранный — приоритет 50 % (½); если русский + 2 иностранных языка → выберется русский лишь в 33 % случаев (⅓).
  2. Из-за их малого словаря с ограниченным числом растровых масок.
  3. Видео: Разъяснения автора оболочки одного из конверторов pdf в djvu
  4. Как технология MRC уменьшает размер PDF-документов. Блог компании ABBYY
  5. Сохранение в формат PDF Справка FineReader
  6. Обзор Abbyy FineReader 12 Professional
  7. Основы распознавания изображений с помощью FineReader
  8. http://ru.wikihow.com/соединить-текстовые-(TXT)-файлы-при-помощи-командной-строки