BookTranslator
BookTranslator

OCR для фрактуры: сохраняйте оригинал перед его модернизацией

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

BookTranslator

BookTranslator Team

9 мин чтения

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

Мы протестировали два коротких учебных фрагмента на немецком языке, набранных фрактурой, а также контрольный образец с современным шрифтом. Даже на этих чистых изображениях модель для фрактуры заменила iſt на ift в одном отрывке и на if в другом. Главным полезным выводом стал не рейтинг лучших инструментов, а наглядное доказательство: распознавание символов, выбор правил транскрипции и модернизация языка — это три совершенно разные задачи.

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

Определите критерии правильности до запуска OCR

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

Наглядный пример такого различия предлагает проект OCR-D. В его руководстве для Уровня 1 длинное s и круглое s обозначаются как s; Уровни 2 и 3 разделяют их. Это именно правила транскрипции, а не указание заменять любое устаревшее написание современным эквивалентом. Ознакомьтесь с официальными правилами для буквы s на Уровне 1 и правилами для буквы s на Уровнях 2/3.

Для личного проекта по чтению держите эти результаты раздельно:

РезультатПример из нашего учебного текстаНазначение
Транскрипт, ориентированный на источникDie rothe Blume ſteht hier.Сверка распознанных символов с изображением
Производная версия с нормализацией долгой sDie rothe Blume steht hier.Поиск или чтение без учета различия долгой s
Модернизированная производная версияDie rote Blume steht hier.Отдельная редакторская версия с измененной орфографией

Вторая строка лишь заменяет ſ на s; она не реализует все правила OCR-D Уровня 1. Третья строка к тому же меняет орфографию оригинала. Ни одна из производных версий не должна незаметно подменять собой исходно-ориентированный транскрипт.

В частности, не заменяйте глобально букву f на s. Наш неудачный результат OCR содержит ift, но в первоисточнике вполне может встречаться и подлинная f . Исправляйте слово, сверяясь с изображением, а не на основе огульного правила автозамены.

Что показал наш эксперимент из восьми тестов

11 сентября 2026 года мы визуализировали два оригинальных трехстрочных учебных фрагмента шрифтами UnifrakturMaguntia и Noto Sans. Каждое изображение было распознано двумя неизменными моделями Tesseract: моделью tessdata_best для фрактуры и ее английской моделью. Английская конфигурация служит для контраста, а не в качестве базовой модели современного немецкого языка.

Во всех восьми вызовах использовались Tesseract 5.5.3, режим LSTM (--oem 1), единый текстовый блок (--psm 6) и разрешение 300 dpi. Мы не меняли настройки, не исключали результаты и не перезапускали распознавание в рамках исходного эксперимента. Повторный прогон тех же восьми изображений 12 сентября полностью воспроизвел сохраненные байты вывода.

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

Исходный трехстрочный учебный отрывок, набранный шрифтом UnifrakturMaguntia, включая длинную s и строку со ссылками на книги, страницы и номера.

Специализированная модель все равно требовала исправлений

Первая исходная строка выглядела так:

Das Waſſer iſt klar.

На изображении со шрифтом фрактура модель для фрактуры выдала:

Das Waſſer ift klar.

Большая часть строки распозналась верно, но ſ в iſt превратилось в f. Во втором отрывке Das Thal iſt weit. превратилось в Das Thal if weit.: распознавание заменило один символ и пропустило другой. Правдоподобный немецкий текст на выходе не отменяет необходимости сверки с оригиналом.

В контрольном тесте с современным шрифтом возникла другая ошибка. Модель для фрактуры сохранила слова в первом отрывке, но заменила обе точки с запятой в Buch 12; Seite 27; Nummer 105. на двоеточия. Если бы мы проверяли только длинную s, мы бы упустили эти изменения пунктуации.

Эталон влияет на оценку

Мы оценивали каждый необработанный вывод по двум эталонам, зафиксированным до распознавания: точному исходному тексту и исходному тексту, в котором только ſ → s. В обоих сравнениях Юникод нормализуется до NFC, а пробелы схлопываются; регистр и пунктуация сохраняются. Мы не приводим необработанный вывод к нижнему регистру перед оценкой.

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

ОтрывокИспользованный шрифтМодель OCRПравки относительно точного оригиналаПравки относительно нормализованного текста (только длинная s)
Длинная s и числаФрактураФрактура16
Длинная s и числаФрактураАнглийский88
Длинная s и числаNoto SansФрактура28
Длинная s и числаNoto SansАнглийский77
Стилизованная историческая орфографияФрактураФрактура24
Стилизованная историческая орфографияФрактураАнглийский77
Стилизованная историческая орфографияNoto SansФрактура03
Стилизованное под старину написаниеNoto SansАнглийский44

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

Ознакомьтесь со всеми исходными результатами и оценками, зафиксированными исходными текстами и правилами оценкиили скриптом верификации. В пакете сохранены хеши SHA-256, поэтому модель, изображение и результат всегда можно сопоставить.

О чем этот эксперимент умалчивает

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

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

Проведите выборочный тест именно на нужных вам страницах

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

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

tesseract samples/long-s-fraktur.png stdout --tessdata-dir ./models -l Fraktur --oem 1 --psm 6 --dpi 300

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

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

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

Исправляйте расшифровку, не додумывая недостающие слова

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

НаблюдениеПолезное действиеЧего делать не следует
На изображении отчетливо видно iſt, а OCR выдает iftИсправьте это конкретное вхождение, сверяясь с изображениемЗаменять каждое вхождение f во всем документе
OCR сохраняет rothe, но вам нужно rote для удобства чтенияСохраните исходную форму и создайте отдельную маркированную модернизированную версиюСчитать модернизацию исправлением ошибки OCR
Отличается цифра или знак препинанияПроверьте это место, даже если окружающее предложение читается связноПроверяйте только необычные начертания букв
Изображение действительно неразборчивоПомечайте сомнительные места в рабочей расшифровке и сохраняйте ссылку на изображениеПринимайте правдоподобно сгенерированное слово за восстановленный первоисточник

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

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

Переводите только тогда, когда языковой барьер все еще мешает

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

Если вы решите использовать PDF Translator от BookTranslator, сначала протестируйте репрезентативный фрагмент вашего документа, прежде чем полагаться на итоговый результат целиком. Наш эксперимент не подтверждает качество работы BookTranslator с исторической фрактурой. Режим OCR пересобирает документ заново и может изменить исходный макет страницы, шрифты и их размеры; не рассматривайте полученный результат как факсимиле и не рассчитывайте на сохранение исходной нумерации страниц.

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

Похожие статьи