Kraken OCR

Kraken OCR распознаёт печатный и рукописный текст на сканах, выделяет строки и области страницы, восстанавливает порядок чтения и сохраняет результат в TXT, ALTO, PageXML, hOCR или ABBYY XML. Пользователь может выбрать готовую модель для нужного письма, обработать одну страницу или серию файлов, проверить точность на эталонной выборке и дообучить распознавание под конкретный шрифт, почерк или сложную историческую вёрстку.

Работа строится как последовательность проверяемых этапов: подготовка изображения, анализ геометрии страницы, распознавание каждой строки выбранной моделью и экспорт координат вместе с текстом. Такой порядок особенно полезен для архивных книг, рукописей, газет и документов со смешанными письменностями, где обычное распознавание всей страницы одним действием часто путает колонки, примечания и направление чтения.

Основные команды запускаются из терминала, поэтому все параметры можно сохранить в сценарии и повторить на сотнях страниц без ручного щёлканья. Для разметки обучающих строк применяется создаваемая программой HTML-страница, а качество модели измеряется на отложенных строках по ошибкам символов и слов; результат не приходится оценивать только на глаз.

Скачать Kraken OCR

Оценка 9.7 Рекомендуем
  • Редактирование PDF
  • Русский интерфейс
  • Просто новичкам
Скачать бесплатно на Windows
Лучшая альтернатива
Kraken OCR
Оценка 8.5
  • Нет графического интерфейса
  • Нужна модель распознавания
  • Нет готового PDF-редактора
Скачать Kraken OCR
Загрузка начнётся после нажатия

Как устроен рабочий процесс Kraken OCR

Kraken разделяет задачу на анализ макета и собственно чтение текста. Сначала изображение превращается в набор геометрических объектов: текстовые области, базовые линии строк, направления письма и последовательность чтения. Затем модель распознавания получает отдельные строки вместе с их координатами. Благодаря этому ошибка в колонках не маскируется внутри распознавания: можно отдельно проверить, правильно ли найдены строки, и только потом оценивать символы.

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

Командная строка не показывает страницу в привычном редакторе, зато позволяет соединять этапы в конвейер. Например, изображения из каталога можно последовательно передать сегментации и OCR, а структурированные файлы складывать рядом с оригиналами. Для разового чтения одной страницы такой способ кажется строгим, но на коллекции из сотен сканов он устраняет ручные операции и случайные различия между страницами.

Исходная историческая страница перед сегментацией и распознаванием в Kraken OCR

Какие файлы подавать на вход

Наиболее надёжный вход — изображение страницы без потери деталей: TIFF или PNG для архивной работы, качественный JPEG для обычных сканов. Важнее расширения фактическая читаемость штрихов. Если тонкие засечки уже размыты сжатием, модель не восстановит их из контекста без риска подменить символ. Для фотографий полезно заранее исправить перспективу, убрать сильный цветовой оттенок бумаги и обрезать лишний фон.

PDF следует рассматривать как контейнер страниц. Kraken умеет подключать дополнительную поддержку PDF и многостраничных форматов, но распознавание всё равно опирается на растровое представление. Когда исходный PDF уже содержит цифровой текст, извлечение текстового слоя обычно точнее OCR. Когда внутри сканы, следует контролировать разрешение при растрировании: слишком низкое уменьшает детали, слишком высокое расходует память и не добавляет информации.

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

Подготовка изображений без потери полезных признаков

Автоматическая бинаризация не является обязательным первым шагом. Современные модели могут принимать полутоновые или цветные изображения, а грубое преобразование в чёрно-белый вид иногда стирает тонкие диакритические знаки, карандашные пометы и слабые элементы почерка. Бинаризацию стоит применять только после сравнения на небольшой выборке, причём исходные изображения лучше сохранять отдельно.

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

Шум по краям листа часто принимается за короткие строки. Его можно уменьшить обрезкой полей или маской, но нельзя удалять поля механически, когда там находятся колонтитулы, номера страниц либо маргиналии. Практичнее сначала решить, какие области нужны в итоговом тексте, и только затем исключать остальные из анализа макета.

  • Сохраняйте исходный скан без перезаписи.
  • Проверяйте ориентацию и порядок страниц.
  • Не повышайте разрешение интерполяцией ради формального числа DPI.
  • Сравнивайте цветной и полутоновый вход на одинаковой модели.
  • Фиксируйте все операции предобработки в сценарии.

Установка и изолированное окружение

Kraken распространяется как пакет Python и устанавливается вместе с библиотеками машинного обучения, обработки изображений и разбора документов. Для рабочего проекта разумно создавать отдельное виртуальное окружение. Тогда обновление другой программы не заменит зависимость, от которой зависит сегментация или загрузка модели, а список пакетов можно сохранить для повторного развёртывания.

Перед установкой необходимо сверить версию Python с диапазоном, указанным в метаданных пакета. Несовместимый интерпретатор обычно проявляется не во время распознавания, а раньше: менеджер пакетов не находит подходящий выпуск либо пытается собрать тяжёлую зависимость из исходного кода. Изолированное окружение также позволяет держать несколько проектов с разными наборами зависимостей.

Базовая установка подходит для изображений. Дополнительные зависимости для PDF и некоторых многостраничных форматов подключаются отдельно. Это важно учитывать при переносе сценария на другой компьютер: команда может быть одинаковой, но чтение PDF завершится ошибкой, если дополнительный набор библиотек не установлен. Проверку лучше выполнять на одном коротком документе до запуска всей очереди.

python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install kraken
kraken --help

Проверка установки и доступных команд

Первый тест не должен начинаться с большой рукописи. Команда справки подтверждает, что запускается нужное окружение и доступны подкоманды. Затем следует вывести список или сведения о моделях и обработать одну небольшую страницу. Если ошибка возникает на этом этапе, её проще связать с установкой, чем с данными.

В Kraken основная команда отвечает за обработку изображений, а ketos — за подготовку обучающих данных, обучение и тестирование. Их роли нельзя смешивать: отсутствие параметра в одной команде не означает, что функции нет вообще. Встроенная справка каждой подкоманды показывает допустимые опции именно для установленного выпуска и поэтому надёжнее случайной команды из старой инструкции.

В сценариях полезно записывать полный путь к исполняемому файлу или активировать окружение явно. Иначе планировщик задач может запустить системный Python, где Kraken отсутствует, хотя интерактивная команда в терминале работает. Та же причина объясняет случаи, когда одна и та же строка успешно выполняется у пользователя, но не выполняется в служебном задании.

Процессор, память и ускорение

Распознавание возможно на процессоре, но время зависит от размера изображения, числа строк и сложности нейронной сети. Графический ускоритель особенно полезен при обучении и больших очередях, однако его наличие само по себе не гарантирует ускорение: должны совпадать драйвер, сборка библиотеки машинного обучения и доступная память устройства.

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

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

Выбор модели распознавания

Модель определяет, какие визуальные формы и символы Kraken умеет сопоставлять. Модель для современной латиницы может прочитать часть старопечатного текста, но будет систематически ошибаться на лигатурах, исторических вариантах букв и нестандартных сокращениях. Для рукописи различие ещё сильнее: близкий язык не компенсирует другой почерк и способ соединения букв.

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

Kraken предоставляет команды для просмотра доступных моделей, вывода подробностей и загрузки выбранного файла. После получения модель лучше хранить вместе с проектом либо фиксировать её точный идентификатор. Название вроде латинская модель недостаточно для воспроизводимости: разные файлы могут иметь другой алфавит, архитектуру и правила нормализации.

kraken list
kraken show <идентификатор_модели>
kraken get <идентификатор_модели>

Как сравнить две модели на своём материале

Для сравнения выбирают страницы, представляющие реальные сложности: обычный текст, редкие символы, повреждённую бумагу, заголовок, курсив и примечания. Обе модели должны получить одинаковые строки после одной и той же сегментации. Если заново сегментировать страницу для каждой модели, изменение количества строк смешает ошибку макета и ошибку чтения.

Помимо общего CER надо просмотреть типы замен. Модель с чуть худшим средним показателем может быть полезнее, если она правильно различает важные для поиска имена и цифры, а ошибки сосредоточены в декоративных инициалах. Наоборот, низкий CER может скрывать регулярную подмену пробелов или знаков пунктуации, которая портит индексацию и разбиение слов.

Результат сравнения следует хранить в таблице с именем модели, набором страниц, параметрами сегментации и датой. Это защищает от субъективного выбора по одной удачной строке. При повторном обучении та же тестовая выборка показывает реальное улучшение, если она не использовалась как обучающая.

Когда нужна собственная модель

Дообучение оправдано, когда готовая модель стабильно повторяет одни и те же ошибки: не знает конкретные знаки, путает пары букв данного шрифта, плохо читает характерные соединения почерка или не соответствует правилам транскрипции проекта. Одиночные ошибки на пятнах и разрывах бумаги не обязательно исчезнут после обучения, потому что в изображении может не быть достаточного сигнала.

Сначала полезно дообучить подходящую базовую модель, а не начинать с случайных весов. Базовая сеть уже знает общие контуры и быстрее адаптируется к конкретной коллекции. Но алфавит и направление письма должны быть совместимы; иначе требуется проверить, как добавляются новые символы и не теряются прежние классы.

Собственная модель требует постоянной тестовой выборки, которую не включают в обучение. Без неё легко принять запоминание знакомых строк за улучшение. Чем однороднее коллекция, тем меньше разметки может понадобиться для заметного эффекта, но качество всё равно оценивают на страницах, которых сеть не видела.

Сегментация страницы и базовые линии

Сегментация отвечает на вопрос, где именно находится текст. Для Kraken основной геометрический объект строки — базовая линия, вдоль которой располагаются символы. Контур строки задаёт область изображения, связанную с этой линией. Такой подход устойчив к умеренному изгибу рукописи и позволяет хранить координаты в структурированных форматах.

Если базовая линия проходит через соседнюю строку, распознаватель получает лишние штрихи и начинает вставлять чужие символы. Если линия обрывается раньше текста, конец строки теряется. Поэтому при неудовлетворительном результате первым делом следует открыть координаты в редакторе PAGE или ALTO либо наложить их на изображение. Исправлять модель бессмысленно, пока входные строки выделены неправильно.

На простой странице достаточно стандартной модели сегментации. Газеты, таблицы, маргиналии, вертикальные подписи и несколько письменностей требуют дополнительных настроек или собственной модели анализа макета. Сегментация может определить строки хорошо, но неправильно объединить их в области; это отдельная ошибка, влияющая на экспорт и порядок чтения.

Первая выделенная строка обучающего примера Kraken OCR

Текстовые области, колонки и исключаемые фрагменты

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

Иллюстрации, печати и декоративные рамки желательно не отдавать текстовой модели. Сложный орнамент способен породить ложные короткие строки. В структурированном результате такие объекты можно сохранить как нетекстовые области, если схема и рабочий процесс это поддерживают. Главное — не подменять удаление нежелательного фрагмента вырезанием страницы, когда координаты должны совпасть с оригиналом.

Для справочников и газет нужно проверить не только колонки, но и врезки, подписи, номера страниц и заголовки. Универсального порядка для них нет: проект должен заранее определить, где заголовок находится относительно основного текста и включаются ли служебные элементы в выгрузку. Эти правила затем отражаются в разметке и обучении порядка чтения.

Порядок чтения

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

Проверка выполняется на уровне номеров или связей между областями. Если TXT выглядит перемешанным, а XML содержит правильные слова и координаты, проблема находится именно здесь. Не следует повторно обучать OCR-модель: она уже прочитала строки. Нужно изменить анализ макета, правила сортировки или модель порядка чтения.

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

Письмо справа налево и двунаправленный текст

Kraken рассчитан не только на строки слева направо. Для арабского, еврейского и смешанного текста надо различать геометрическое направление строки, логический порядок символов и отображение в программе просмотра. Строка может храниться в корректном логическом порядке, но выглядеть переставленной в редакторе, который неправильно применяет алгоритм BiDi.

При смешении арабских букв, латинских сокращений и цифр полезно проверять кодовые точки, а не только картинку на экране. Знаки пунктуации и скобки особенно чувствительны к направлению. Экспорт в Unicode должен сохранять логическую последовательность, тогда совместимый браузер или редактор сможет отобразить её корректно.

Модель распознавания должна знать нужное письмо, а сегментация — направление строк. Если один этап считает строку слева направо, а другой обучен на обратной последовательности, результат может выглядеть как набор правильных, но переставленных символов. Исправление заключается в согласовании метаданных и обучающей транскрипции.

Распознавание одной страницы

Базовый конвейер задаёт входной и выходной файл, затем выполняет сегментацию и OCR выбранной моделью. Названия подкоманд и параметров следует сверять со встроенной справкой, поскольку допустимые сочетания зависят от типа входа и желаемого формата. Важен сам принцип: одна команда может последовательно создать геометрию и прочитать строки.

Перед массовой обработкой нужно открыть полученный результат и проверить три уровня. Первый — все ли текстовые строки найдены. Второй — идут ли они в правильной последовательности. Третий — насколько точно распознаны символы. Такая диагностика показывает, какой компонент менять, вместо бессистемного переключения параметров.

Имя выходного файла должно однозначно соответствовать входному. В пакетной работе удобно сохранять исходную основу имени и менять только расширение, например page_001.png и page_001.xml. Тогда страницу легко найти по ошибке из журнала, а повторный запуск можно направить в отдельный каталог и сравнить результаты.

kraken -i page.png page.txt segment -bl ocr -m model.mlmodel

Пакетная обработка каталога

Для серии изображений список входов лучше формировать в естественном порядке страниц, а не полагаться на строковую сортировку. Имена page_2 и page_10 могут расположиться неожиданно; нумерация с ведущими нулями устраняет проблему. Перед запуском список стоит сохранить в журнал, чтобы обнаружить пропущенный или продублированный файл.

Сценарий должен отдельно отмечать успешные, ошибочные и пустые результаты. Наличие выходного файла ещё не доказывает, что в нём есть текст: сегментация могла не найти строк. После очереди полезно проверить число выходов, размер каждого файла и количество строк или текстовых элементов в XML.

Повторный запуск не должен безусловно перезаписывать проверенные данные. Практичный вариант — писать в новый каталог с датой или идентификатором профиля. После сравнения выбранный набор становится основным. Это особенно важно при обновлении модели: улучшение одной группы страниц может сопровождаться ухудшением другой.

  1. Сформировать отсортированный список страниц.
  2. Проверить одну страницу каждым выбранным профилем.
  3. Запустить очередь с журналом ошибок.
  4. Найти пустые и подозрительно короткие результаты.
  5. Сверить несколько страниц вручную.
  6. Только после проверки объединять текст или импортировать XML.

Обработка многостраничных документов

Многостраничный файл удобен как единица хранения, но для диагностики страницы всё равно должны иметь собственные идентификаторы. При импорте PDF или TIFF следует убедиться, что порядок кадров совпадает с логической нумерацией. Отдельный сбой одной страницы не должен останавливать сохранение уже обработанных страниц, если сценарий допускает продолжение.

Разрешение растрирования PDF выбирают по фактической высоте знаков. Слишком маленький масштаб делает похожими е и с, точки над буквами исчезают, а тонкие штрихи сливаются с фоном. Избыточный масштаб увеличивает время и память, но не восстанавливает детали, которых нет в исходном скане.

Kraken не предназначен для правки структуры самого PDF, перестановки страниц, добавления комментариев или изменения текста как объектов документа. После OCR структурированный результат можно передать в систему сборки поискового PDF либо редактор, но этот этап должен быть спроектирован отдельно.

Форматы результата

Простой текст удобен для чтения, поиска и языкового анализа, но теряет координаты. Структурированные форматы сохраняют связь слова или строки с изображением страницы. Выбор зависит от следующего этапа: для полнотекстового индекса может хватить TXT, для научной разметки, подсветки совпадений и исправления OCR нужен XML или hOCR.

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

Если проекту нужны и текст, и координаты, основным архивным результатом лучше сделать структурированный формат, а TXT генерировать из него. В обратном направлении восстановить координаты невозможно. Также следует сохранять исходное изображение и идентификатор модели, чтобы при необходимости пересчитать результат.

TXT: простой текст без геометрии

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

Кодировка должна оставаться Unicode, обычно UTF-8. При открытии в старом редакторе правильный файл может выглядеть как набор неправильных символов из-за ошибочного выбора кодировки. Для смешанных письменностей важно использовать программу с корректной поддержкой BiDi и подходящими шрифтами.

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

ALTO XML

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

Координаты полезны для автоматического контроля. Например, строка с необычно большой высотой или слово за пределами страницы указывают на ошибку сегментации. При преобразовании изображения нельзя забывать, что координаты относятся к конкретным размерам исходного растра; ресайз после OCR нарушит совпадение.

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

PageXML

PageXML ориентирован на подробное описание страницы и часто применяется в проектах исторических документов. Он может хранить текстовые регионы, базовые линии, контуры строк, текстовые эквиваленты, классы областей и порядок чтения. Это делает формат удобным для редактирования разметки и повторного обучения.

При работе с PAGE важно не потерять связь между изображением и XML. Имя файла, размеры страницы и координаты должны соответствовать одному растру. Если изображение переименовали или обрезали, XML требуется обновить либо создать заново; иначе визуальный редактор покажет смещённые полигоны.

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

HTML-интерфейс исправления транскрипций, созданный в рабочем процессе Kraken OCR

hOCR и ABBYY XML

hOCR представляет структуру OCR внутри HTML-разметки и удобен для просмотра в браузере, преобразований и некоторых конвейеров создания поисковых документов. Координаты обычно записываются в атрибутах элементов. При обработке следует использовать парсер, а не регулярные выражения, потому что вложенность и экранирование текста имеют значение.

ABBYY XML применяется в системах, которые ожидают совместимую структуру блоков, строк и символов. Экспорт позволяет встроить Kraken в существующий конвейер без распознавания закрытым движком, но фактическую совместимость нужно проверять на конкретном потребителе: набор поддерживаемых полей может отличаться.

Выбор между форматами определяется не престижем схемы, а необходимыми данными. Если целевой интерфейс подсвечивает слова, нужны координаты на уровне слова. Если исправление выполняется по строкам, достаточно линий и текста строк. Чем детальнее экспорт, тем больше требований к проверке согласованности.

Координаты слов, разрезы символов и уверенность

Структурированный результат может содержать границы слов и более мелкую информацию о положении символов. Эти данные полезны для подсветки, создания обучающих примеров и поиска подозрительных участков. Однако геометрия символа в нейронном распознавании не всегда соответствует отдельной прямоугольной букве: лигатуры и соединённый почерк распределяют признаки по последовательности.

Показатель уверенности помогает сортировать строки для ручной проверки, но не является абсолютной вероятностью правильности. Модель может быть уверена в систематической ошибке на неизвестной лигатуре. Порог следует калибровать на размеченной выборке: сравнить уверенность с фактическими ошибками и выбрать диапазон, который действительно отбирает проблемные строки.

Для контроля качества полезно сочетать несколько сигналов: низкую уверенность, неизвестные символы, необычную длину, расхождение со словарём и подозрительную геометрию. Один сигнал создаёт слишком много ложных предупреждений. Например, имя собственное может отсутствовать в словаре, но быть прочитано правильно.

Как находить подозрительные строки автоматически

После распознавания сценарий может вычислить долю редких знаков, количество последовательных пробелов, повторов одного символа и длину строки относительно ширины области. Резкий выброс часто указывает на декоративную рамку, ошибочно принятую за текст, или на строку, захватившую соседний фрагмент.

Для коллекции одного языка полезно построить частоты символов по всему корпусу. Новый знак, появившийся только на одной странице, может быть реальной буквой, но заслуживает проверки. Нельзя автоматически заменять его наиболее частым аналогом: исторические документы содержат редкие сокращения и знаки, ради которых часто и выполняется распознавание.

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

Подготовка обучающих данных

Обучение распознавания требует пар изображение строки — точная транскрипция. Качество этой разметки важнее количества плохо проверенных строк. Один и тот же знак должен транскрибироваться одинаково во всём наборе, иначе сеть получает противоречивые цели. До разметки проекту нужен документ с правилами: как записывать лигатуры, сокращения, пробелы, дефисы, нечитаемые места и нормализованные формы.

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

Изображение строки нельзя менять после создания транскрипции без проверки координат и содержимого. Автоматическая обрезка может отрезать точку или захватить часть соседней строки. Каждый пакет полезно просматривать миниатюрами: слишком пустые, чрезмерно высокие и необычно широкие строки заметны визуально.

Строка исторического текста для обучения модели Kraken OCR

Транскрипция в создаваемой HTML-странице

Kraken может подготовить HTML-документ, в котором изображения строк располагаются рядом с полями ввода транскрипции. Такой файл открывается в браузере как локальный инструмент разметки. Он удобен для небольшого проекта, потому что не требует отдельной серверной системы, но ответственность за резервные копии и распределение работы остаётся у пользователя.

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

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

Короткий фрагмент строки в наборе данных Kraken OCR

Unicode и единые правила разметки

Unicode допускает несколько представлений визуально одинаковой последовательности, например составной символ и базовую букву с комбинируемым знаком. Если обучающие данные смешивают формы, метрики и словари могут считать их различными. Нормализацию выбирают один раз и применяют к обучению, эталону и результату одинаково.

Исторические символы не следует автоматически заменять современными, если цель проекта — дипломатическая транскрипция. Для поисковой копии можно создать отдельный нормализованный слой после OCR. Разделение сохраняет научную точность и одновременно позволяет искать современное написание.

Нечитаемые места обозначают по заранее утверждённому правилу. Случайные вопросительные знаки обучат модель печатать вопросительный знак вместо неясного фрагмента. Если строка слишком повреждена и точную цель задать нельзя, её лучше исключить из обучения, но можно оставить для отдельного стресс-теста.

Компиляция наборов командой ketos

Команды ketos преобразуют размеченные данные в структуру, пригодную для обучения и оценки. На этом этапе проверяются изображения, транскрипции и алфавит. Путь к данным следует задавать явно и не смешивать обучающий и тестовый каталоги. Названия наборов полезно включать в журнал обучения.

Если компиляция сообщает о пустой строке, неизвестном файле или ошибочной разметке, предупреждение нельзя игнорировать только ради запуска. Такие дефекты часто превращаются в нестабильное обучение или неверную метрику. Сначала исправляют источник, затем полностью пересобирают набор.

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

ketos compile -f xml training/*.xml
ketos compile -f xml evaluation/*.xml

Обучение модели распознавания

Обучение запускается на подготовленном наборе и периодически оценивается на отложенных данных. Следить нужно не только за снижением ошибки обучения, но и за поведением проверки. Когда обучающая ошибка продолжает падать, а проверочная растёт, сеть начинает запоминать конкретные строки и хуже обобщать.

Начальные параметры зависят от размера изображений, алфавита и доступной памяти. Изменять сразу несколько параметров неудобно: если качество улучшилось, невозможно понять причину. Практичнее сохранить базовый запуск, затем проверять по одному изменению — состав данных, скорость обучения, размер пакета или продолжительность.

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

Выделенная строка для оценки распознавания Kraken OCR

ketos train -f binary training.arrow
ketos test -m model.mlmodel evaluation.arrow

Дообучение готовой модели

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

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

Хранить следует и базовую, и дообученную модель. Если позже обнаружится неверное правило транскрипции, проект сможет начать заново от проверенной основы, а не от веса, уже вобравшего ошибку.

CER и WER: как читать метрики

CER показывает долю операций вставки, удаления и замены символов относительно эталона. Он хорошо отражает качество точной транскрипции, но одна ошибка пробела может по-разному влиять на слова. WER считает ошибки на уровне слов и лучше показывает пригодность для поиска или чтения, однако для языков без явных пробелов требуется своё правило токенизации.

Метрику нельзя сравнивать между проектами без знания нормализации. Один тест учитывает пунктуацию и регистр, другой удаляет их; один сохраняет исторические формы, другой переводит их в современные. Внутри проекта правила должны оставаться постоянными, тогда изменение CER действительно отражает работу модели.

Среднее число полезно дополнить распределением по страницам. Одна крайне плохая страница может поднять общий показатель и скрыть, что остальные стали лучше. Таблица по документам показывает, для какого почерка или качества скана нужна отдельная модель.

Как устроить честное разделение данных

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

Тестовый набор нельзя исправлять под ошибки модели без сохранения предыдущей версии. Исправление реальной опечатки эталона необходимо, но изменение правила транскрипции меняет смысл метрики. Такие изменения фиксируют и пересчитывают сравниваемые модели на одном обновлённом наборе.

Для редких знаков полезен отдельный диагностический набор. Общий CER может почти не измениться после исправления редкой лигатуры, хотя для научной задачи это важное улучшение. Диагностический отчёт показывает точность по выбранным символам и контекстам.

Обучение сегментации и порядка чтения

Когда стандартный анализ макета регулярно пропускает строки или объединяет колонки, можно обучить модель сегментации на размеченных страницах. Здесь эталоном служат базовые линии, контуры и классы областей, а не только текст. Разметка должна быть геометрически последовательной: одинаковые объекты получают одинаковые классы.

Качество сегментации оценивают отдельно от OCR. Даже идеальный текстовый распознаватель не прочитает строку, которой нет в сегментации. И наоборот, хорошая геометрия может сочетаться с плохим чтением из-за неподходящей модели. Раздельные метрики помогают направить усилия.

Модель порядка чтения требует примеров связей или последовательности областей. Для газет необходимо решить, как обходить заголовки, колонки, подписи и врезки. Если разметчики используют разные правила, сеть учится противоречивому порядку.

ketos segtrain -f page training_pages/*.xml

Разметка базовых линий

Базовая линия должна следовать направлению текста и не пересекать соседнюю строку. Для наклонной рукописи линия может изгибаться, но лишнее количество точек усложняет разметку без пользы. Важно одинаково обрабатывать инициалы, надстрочные пометы и межстрочные вставки.

Контур строки должен включать все нужные штрихи, включая верхние и нижние выносные элементы, и не захватывать соседний текст. Слишком тесный контур обрезает диакритику; слишком широкий добавляет шум. Несколько проверенных страниц полезно использовать как эталон для всех разметчиков.

Перед обучением следует визуально наложить всю разметку на страницы и найти линии с необычной длиной, выходом за границы и пересечениями. Геометрические ошибки легче заметить как рисунок, чем по XML.

Пример отдельной строки после сегментации Kraken OCR

Классы областей

Классы позволяют отличать основной текст от заголовков, подписей, примечаний и других элементов. Они полезны, когда разные области нужно распознавать разными моделями или экспортировать по отдельным правилам. Число классов должно соответствовать реальным последующим действиям; десятки декоративных категорий усложняют обучение без практической пользы.

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

Названия классов и их смысл фиксируют в документации проекта. Иначе один разметчик назовёт подзаголовок заголовком, другой — основным текстом, а сеть получит конфликт. Проверка согласованности разметчиков является частью подготовки данных.

Практические сценарии

Kraken особенно полезен там, где готовый универсальный OCR не соответствует материалу. Его сила заключается не в автоматическом чтении любого файла без подготовки, а в возможности подобрать или обучить модели для конкретной письменности, шрифта, почерка и макета. Чем точнее определён корпус, тем легче построить устойчивый конвейер.

Для каждого сценария следует разделять конечную цель и промежуточный результат. Архив может хотеть поисковый индекс, исследователь — дипломатическую транскрипцию, издатель — вычитанный текст, а разработчик — координаты слов. Один запуск может создать несколько форматов, но правила проверки будут разными.

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

Исторические печатные книги

В старопечатной книге основными трудностями становятся непривычные формы букв, лигатуры, неравномерная краска, просвечивание оборота и декоративные инициалы. Сначала выбирают модель близкого периода и печатной традиции. Затем на нескольких разворотах проверяют, не принимает ли сегментация колонтитулы и рамки за основной текст.

Если требуется сохранить историческое написание, транскрипция и алфавит модели должны включать соответствующие знаки. Современную нормализацию выполняют отдельным шагом, иначе невозможно отличить ошибку OCR от редакторской замены. Для цитирования полезно сохранять PageXML или ALTO с координатами.

Инициалы и крупные заголовки часто требуют отдельной обработки. Их можно исключить из основного потока, размечать другим классом области или читать другой моделью. Попытка заставить одну строковую модель одинаково читать мелкий набор и декоративную букву обычно повышает число ложных символов.

Рукописные журналы и письма

Для рукописей решающим фактором является близость почерка к обучающим данным. Модель, хорошо читающая одного писца, может ошибаться на другом даже в том же языке. Коллекцию следует сначала сгруппировать по руке, периоду или типу документа, а затем сравнить готовые модели и объём необходимого дообучения.

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

Для писем важен порядок чтения: адрес, дата, основной текст, подпись и приписки могут располагаться свободно. Даже точное распознавание строк не создаст правильный поток без разметки областей. Поэтому PageXML часто полезнее TXT на раннем этапе проекта.

Распознаваемая строка исторического документа в конвейере Kraken OCR

Газеты и многоколоночные страницы

Газета объединяет заголовки разной ширины, несколько колонок, подписи к изображениям, объявления и таблицы. Главная проблема здесь — не отдельные буквы, а структура. Сначала проверяют области и порядок чтения на типовых макетах каждого издания, затем оценивают OCR внутри правильно выделенных строк.

Шаблонные правила могут работать для стабильной полосы, но ломаются на специальных выпусках и рекламных страницах. Модель сегментации лучше обобщает варианты, если обучение включает разные типы полос. Редкие макеты всё равно полезно направлять на ручную проверку по признаку необычного числа областей.

Экспорт должен сохранять принадлежность к статье или колонке, если дальнейшая система строит отдельные материалы. Простой TXT всей полосы теряет эти связи. Для поиска по странице достаточно координат слов, но для восстановления статей нужна дополнительная логика группировки.

Арабская и еврейская письменность

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

Цифры, латинские сокращения и знаки пунктуации создают двунаправленные фрагменты. Проверять следует логическую последовательность кодов и отображение в нескольких совместимых программах. Ошибка интерфейса просмотра не должна приводить к переобучению модели на визуально перевёрнутый текст.

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

Смешанные языки и алфавиты

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

Переключение моделей по областям требует надёжной сегментации и маркировки. Короткое иностранное слово внутри основной строки нельзя выделить как отдельную область без риска разрушить контекст. Для таких строк лучше многоязычная модель или последующая ручная проверка редких символов.

Контроль алфавита после OCR позволяет быстро найти символы из неправильной письменности. Например, визуально похожая латинская буква среди кириллицы может пройти обычный просмотр, но помешать поиску. Скрипт должен сообщать такие случаи, а не заменять их без проверки.

Создание корпуса для поиска

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

Координаты слов дают возможность открыть страницу на найденном месте. Для этого размеры изображения после OCR нельзя менять без пересчёта координат. Идентификатор страницы в индексе должен совпадать с именем изображения и структурированного файла.

Перед индексацией полезно исключить служебные колонтитулы, которые повторяются на каждой странице и создают шум в результатах. Но удалять их из архивного XML необязательно: можно задать тип области и фильтровать при построении индекса.

Автоматизация и воспроизводимость

Командный интерфейс позволяет превратить эксперименты в сценарий. Хороший сценарий хранит параметры, проверяет наличие входов, создаёт отдельный каталог результата, пишет журнал и возвращает ненулевой код при ошибке. Он не предполагает, что текущий каталог и активное окружение всегда одинаковы.

Конфигурацию полезно отделить от кода: пути, имя модели, формат экспорта и число процессов помещают в файл проекта. Тогда один сценарий обслуживает несколько коллекций, а изменение параметров видно в истории. Модель следует идентифицировать не только именем, но и контрольной суммой.

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

Журналы, коды завершения и повторный запуск

Журнал должен содержать входной файл, модель, время начала, выбранные параметры и сообщение ошибки. Вывод только на экран теряется после закрытия терминала. Для больших коллекций удобно вести краткий машинный журнал в JSON или CSV и отдельный подробный текстовый протокол.

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

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

Типовые ошибки установки

Сообщение о том, что команда не найдена, обычно означает неактивное виртуальное окружение или каталог исполняемых файлов, отсутствующий в PATH. Следует запустить модуль через тот же Python, которым выполнялась установка, и вывести путь к интерпретатору. Повторная установка в случайное системное окружение только усложняет диагностику.

Ошибка сборки зависимости часто связана с неподдерживаемой версией Python, отсутствующим компилятором или системной библиотекой. Сначала сверяют диапазон Python и наличие готовых колёс для платформы. На сервере без графической среды могут понадобиться системные библиотеки обработки изображений, хотя графический интерфейс не используется.

Если после обновления появилась несовместимость, нужно развернуть чистое окружение из зафиксированного списка, а не удалять пакеты по одному. Чистая установка показывает, является ли причиной конфликт старых зависимостей. Рабочее окружение проекта не следует обновлять непосредственно перед массовой обработкой без теста.

Не открывается PDF или многостраничный TIFF

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

Защищённый, повреждённый или необычно сжатый PDF может не растрироваться даже при наличии зависимостей. Его проверяют отдельным инструментом, извлекают одну страницу и сравнивают. Ошибку контейнера нельзя лечить параметрами OCR.

Для многостраничного TIFF важно проверить число кадров и цветовой режим. Некоторые страницы могут иметь другую битовую глубину. Преобразование в последовательность PNG упрощает диагностику и делает имена страниц явными.

Модель не загружается

Сначала проверяют, что путь указывает на файл модели, а не на страницу загрузки или архив. Размер и контрольная сумма помогают обнаружить неполную загрузку. Сообщение о несовместимой структуре может означать, что модель создана другим поколением инструмента или повреждена.

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

В автоматизированной среде модель лучше хранить в доступном для чтения каталоге проекта. Зависимость от пользовательского кэша приводит к ошибке при запуске от служебной учётной записи.

Ошибки сегментации и способы исправления

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

Лишние строки на иллюстрациях уменьшают маской, классами областей или обучением на похожих страницах. Простое повышение порога может одновременно удалить слабый настоящий текст. Проверять надо несколько типов страниц, а не один удачный пример.

Объединение соседних строк часто связано с малым межстрочным интервалом, изгибом у корешка или неправильным масштабом. Исправление перспективы и геометрии страницы может дать больший эффект, чем настройка распознавания.

Строки перепутаны между колонками

Если слова внутри строк правильные, но текст чередуется, OCR-модель менять не нужно. Следует проверить текстовые регионы и порядок чтения. Каждая колонка должна быть самостоятельной областью либо иметь явные связи.

На полосах с общим заголовком полезно задать заголовку отдельный класс и позицию до колонок. Сортировка только по верхней координате может поместить короткую строку из правой колонки перед продолжением левой.

Исправленный порядок следует проверить в структурированном файле и в производном TXT. Иногда XML хранит правильные связи, а утилита преобразования игнорирует их; тогда проблема находится после Kraken.

Диакритика обрезана или попадает в соседнюю строку

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

Слишком жёсткая обрезка строк в обучающем наборе закрепляет ошибку: модель никогда не видит полный знак. Нужно просмотреть изображения строк и пересоздать дефектные примеры. Добавление транскрипции без соответствующего пиксельного признака не помогает.

Если диакритика исчезла ещё на этапе бинаризации или уменьшения, возвращаются к исходному скану. Усиление резкости не восстанавливает удалённый штрих и может добавить ложные точки.

Строка с мелкими знаками для проверки качества Kraken OCR

Ошибки распознавания и способы исправления

Систематическая замена одной буквы другой указывает на несоответствие модели, недостаток примеров или конфликт транскрипции. Сначала проверяют алфавит и эталон. Затем сравнивают другую готовую модель либо добавляют корректные строки для дообучения.

Случайные ошибки только на загрязнённых местах чаще связаны с качеством изображения. Модель можно сделать устойчивее примерами похожих дефектов, но чрезмерная очистка способна изменить знаки. Ручная проверка таких страниц остаётся необходимой.

Повторы символов и длинные бессмысленные последовательности часто появляются, когда строка содержит рисунок, вертикальную рамку или часть соседнего текста. Следует вернуться к сегментации, а не применять словарную автозамену к результату.

Неверные пробелы и переносы

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

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

Для WER важно одинаково токенизировать эталон и результат. Иначе изменение одного пробела создаёт несколько ошибок слов и затрудняет сравнение моделей.

Неизвестные символы и испорченная кодировка

Квадрат или знак замены может появиться из-за отсутствия символа в алфавите, неправильного декодирования или шрифта, который не умеет его отображать. Сначала смотрят кодовую точку в файле. Если правильный код присутствует, проблема относится к просмотру, а не OCR.

Если модель не умеет выдавать знак, его добавляют через корректное дообучение с достаточными примерами. Одна строка редкого символа не гарантирует устойчивого различения. Нужно включить разные контексты и похожие конкурирующие знаки.

При импорте в базу и XML все компоненты должны использовать Unicode. Неверная перекодировка после распознавания способна испортить хороший результат, поэтому тест проходит полный путь от Kraken до целевой системы.

Контроль качества человеком

Автоматическая метрика оценивает только строки с эталоном. Для остального корпуса нужен выборочный контроль и приоритизация риска. Проверяют страницы с низкой уверенностью, необычным числом строк, редкими символами, новым почерком и сложным макетом.

Проверяющий должен видеть изображение и текст рядом, желательно с координатами. Чтение только TXT не обнаруживает пропущенную строку или перепутанную колонку. Исправления сохраняют в структурированном формате, чтобы они могли стать новым обучающим материалом.

Доля проверяемых страниц зависит от цели. Для приблизительного поиска допустимы ошибки, если пользователь видит скан. Для публикации транскрипции или извлечения имён требуется более строгая вычитка. Уровень качества следует формулировать через измеримые правила, а не слово точно.

Выборка для ручной проверки

Случайная выборка показывает среднее качество, но может не включить редкие проблемы. Её дополняют стратифицированной выборкой: страницы каждого документа, почерка, типа макета и диапазона уверенности. Так контроль охватывает как типичные, так и рискованные случаи.

Ошибки классифицируют: пропуск области, неверный порядок, замена символа, пробел, кодировка, экспорт. Категории показывают, какой этап улучшать. Общий список без классификации приводит к дообучению OCR на ошибках сегментации.

После исправления процесса выборку прогоняют повторно и сравнивают по тем же правилам. Нельзя выбирать только новые удачные страницы, иначе улучшение будет кажущимся.

Хранение исправлений

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

Версии разметки следует различать. Автоматический результат, ручная правка и нормализованный текст решают разные задачи и не должны перезаписывать друг друга. История изменений помогает восстановить, кто и почему изменил спорный знак.

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

Сравнение Kraken OCR с аналогами

Выбор инструмента зависит от того, нужен ли готовый редактор, обучаемое распознавание строк, полный серверный процесс разметки или простой движок для современного печатного текста. Kraken выделяется работой с историческими и не-латинскими материалами, моделями HTR и контролируемым конвейером, но требует подготовки окружения и команд.

Сравнивать точность без одинакового тестового корпуса некорректно. В таблице отражены практические роли решений и основные ограничения, которые влияют на организацию работы.

ПрограммаЛучше подходит дляГлавное ограничение
Kraken OCRИсторические документы, рукописи, сложные письменности и обучение собственных моделейОсновной процесс требует команд и подходящей модели
PDF CommanderРаспознавание и редактирование обычных сканированных PDF в готовом интерфейсеНе предназначен для обучения HTR под исторический почерк
Tesseract OCRАвтоматизация OCR современного печатного текста и встраивание в сценарииСложный макет и рукописи требуют внешней подготовки и обучения
Calamari OCRСтроковое распознавание, ансамбли моделей и исследовательские экспериментыРазметку макета страницы обычно выполняет другой компонент
OCR4allЦельный графический процесс для исторической печати и ручной коррекцииРазвёртывание тяжелее одиночной команды OCR
eScriptoriumСовместная серверная разметка, обучение и распознавание поверх KrakenНужны сервер, администрирование и организация пользователей

Как выбрать подходящее решение

Для пользователя, которому нужно открыть сканированный PDF, распознать обычный печатный текст и сразу исправить документ, практичнее готовый PDF-редактор. Kraken выбирают, когда решающими являются исторический шрифт, рукопись, направление письма, собственная разметка или повторяемая обработка коллекции.

Tesseract удобен как распространённый движок для типового печатного OCR, особенно если уже есть внешний анализ макета. Calamari полезен в экспериментах со строковыми моделями и ансамблями. OCR4all предоставляет более цельный визуальный процесс для исторической печати. eScriptorium подходит команде, которой нужен браузерный сервер совместной разметки и управление проектами, при этом распознавание может выполнять Kraken.

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

Ограничения, которые важно учитывать заранее

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

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

Сложная страница требует качественной сегментации. Даже сильная модель HTR не исправляет пропущенную строку или перепутанную колонку. Поэтому оценка только по нескольким заметным словам может создать ложное впечатление: нужно проверять полноту и структуру.

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

Что Kraken не делает вместо следующего этапа

После OCR может понадобиться собрать поисковый PDF, проиндексировать текст, отредактировать документ, нормализовать орфографию или опубликовать страницы. Эти действия выполняются другими компонентами. Kraken предоставляет текст, структуру и координаты, которые служат входом для них.

Автоматическая языковая коррекция также не должна незаметно перезаписывать исходный результат. Словарь может улучшить современные слова и испортить имя, историческую форму или сокращение. Корректирующий слой хранится отдельно с возможностью вернуться к изображению.

Управление пользователями, задачами разметчиков и централизованной базой не относится к основному командному процессу. Для командной работы применяют внешнюю платформу, систему контроля версий или специализированный интерфейс.

Практический рецепт для первой коллекции

Начинать следует не со всего архива, а с представительной пилотной группы. Выберите 20–50 страниц разных типов, сохраните оригиналы, определите требуемый формат результата и правила транскрипции. Затем сравните несколько моделей на неизменной сегментации и вручную проверьте строки.

Если качество готовой модели недостаточно, исправьте несколько сотен или тысяч строк в зависимости от сложности и однородности материала, разделите их по документам на обучение и тест и выполните дообучение. Объём не является единственным критерием: разнообразные и точные строки полезнее множества повторяющихся примеров.

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

  1. Определить цель и формат экспорта.
  2. Собрать представительную пилотную выборку.
  3. Проверить качество сегментации отдельно от OCR.
  4. Сравнить подходящие готовые модели.
  5. Сформулировать правила транскрипции.
  6. При необходимости дообучить модель и оценить её на закрытом тесте.
  7. Зафиксировать окружение, модель и параметры.
  8. Запустить пакетную обработку с журналом.
  9. Проверить рискованные и случайные страницы.
  10. Сохранить исходный, исправленный и нормализованный слои отдельно.

Минимальный пилот без обучения

Для однородной печатной книги пилот может ограничиться пятью типовыми страницами и несколькими готовыми моделями. Сначала один раз создают сегментацию, затем распознают её каждым кандидатом. Текст сравнивают по небольшому ручному эталону и по типичным ошибкам.

Если один кандидат уверенно читает алфавит и основные строки, не нужно сразу обучать собственную сеть. Сначала обработайте более широкую выборку и выясните, где именно появляются ошибки. Возможно, достаточно исправить анализ макета или заменить предобработку.

Решение о массовом запуске принимают после проверки экспорта. Правильный TXT недостаточен, если проекту нужны координаты и целевая система не принимает созданный XML.

Пилот с дообучением

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

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

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

Организация файлов проекта

Понятная структура снижает риск смешать оригиналы, промежуточные данные и исправления. Исходные сканы делают доступными только для чтения. Сегментацию, автоматический OCR, ручные правки, модели и отчёты размещают в отдельных каталогах с устойчивыми именами страниц.

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

Резервное копирование должно охватывать разметку и исправления в первую очередь: их восстановление дороже повторного OCR. Журналы и модели также важны для воспроизводимости. Временные растры PDF можно пересоздать, если сохранены параметры и исходный документ.

project/
  originals/
  segmentation/
  ocr_raw/
  corrected/
  normalized/
  models/
  reports/
  config/

Интерпретация реальных строк рабочего набора

Извлечённая строка является тем объектом, который фактически получает модель распознавания. На ней видны последствия сегментации: сохранены ли верхние и нижние элементы, не попал ли соседний текст, достаточно ли полей. Просмотр таких изображений часто быстрее объясняет ошибку, чем чтение полного журнала.

Короткие строки и одиночные слова тоже нужны в тесте. Они имеют меньше языкового контекста, поэтому модель сильнее опирается на форму букв. Если обучающий набор состоит только из длинных предложений, заголовки и номера могут распознаваться хуже.

Строки с необычным размером полезно выделять автоматически. Их не следует растягивать до стандартной ширины без сохранения пропорций: деформация меняет форму букв. Подготовка модели обычно нормализует высоту внутренними средствами.

Реальная строка рабочего набора для контроля распознавания Kraken OCR

Краткая памятка по диагностике

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

Меняйте один компонент и повторяйте тест на фиксированной выборке. Случайный перебор модели, порога, масштаба и предобработки одновременно может найти удачную комбинацию, но не объяснит её и не гарантирует устойчивость на других страницах.

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

  • Нет строк — проверить ориентацию, масштаб и модель сегментации.
  • Смешаны колонки — проверить регионы и порядок чтения.
  • Повторяются символы — открыть изображение строки и убрать лишнюю геометрию.
  • Неизвестные знаки — сверить алфавит модели и Unicode эталона.
  • Падает пакет — обработать проблемную страницу отдельно и проверить память.
  • XML не импортируется — сверить схему, размеры страницы и кодировку.

Итоговый порядок контроля

Надёжный проект начинается с небольшой эталонной выборки и заканчивается проверкой экспортных координат, кодировки и порядка чтения в целевой системе. Между этими точками полезно фиксировать имя модели, параметры сегментации, список входных файлов, версию схемы XML и показатели CER или WER. Тогда любой спорный результат можно воспроизвести, сравнить с предыдущим запуском и исправить изменением конкретного этапа, а не подбором случайных параметров.