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

При распознавании вертикального текста на японском языке проверьте направление письма перед изменением фильтров изображения. Используйте японскую модель и настройки сегментации, способные работать с вертикальным текстом, убедитесь в правильном порядке столбцов и решите, нужен ли вам только основной текст или также фуригана. Страница, полная узнаваемых символов, все равно может оказаться непригодной для использования, если нарушена их последовательность.
Мы провели небольшой воспроизводимый локальный эксперимент, чтобы наглядно продемонстрировать эти решения. Горизонтальная конфигурация перепутала наши три вертикальных столбца. Вертикальная конфигурация восстановила обычный текст, но добавление фуриганы изменило два знака препинания, а обрезка руби не устранила ошибки пунктуации.
Это результаты намеренно небольшого синтетического образца, а не заявление о точности для всех японских книг. Полезный вывод более конкретен: оценивайте распознавание символов, порядок чтения и обработку аннотаций раздельно. Не отправляйте результат на перевод только потому, что он похож на японский.
Сначала определите текст, который вам действительно нужен
В традиционной японской вертикальной верстке символы идут сверху вниз по строке, а строки идут справа налево. Руби — это более мелкий текст, связанный с базовыми символами; фуригана обычно указывает их произношение. В документе W3C Требования к верстке японского текста описываются эти направления письма и связи с руби.
Перед распознаванием разметьте значимые области страницы:
- основные вертикальные столбцы;
- мелкая руби рядом с основным текстом;
- горизонтальные заголовки, подписи или таблицы;
- номера страниц и колонтитулы;
- пометки на полях или несвязанные соседние страницы.
Не воспринимайте каждую вертикальную полосу как независимый абзац. Полоса мелкой каны рядом с 図書館 может быть ее чтением, としょかん, а не следующим предложением.
Выберите политику вывода перед оценкой результатов распознавания:
| Задача читателя | Желаемый результат | Что считается проблемой |
|---|---|---|
| Поиск или перевод основного текста | Основной текст по порядку; полезные чтения сохранены отдельно | Руби вставлены в текст, пропущен основной текст, изменен порядок столбцов |
| Изучение произношения | Основной текст плюс правильно связанные с ним чтения | Отсутствующие руби или чтение, прикрепленное не к тому слову |
| Создание точной транскрипции | Основной текст, связи аннотаций и редакторские решения сохранены | Неявное удаление или нормализация материала, который вы хотели сохранить |
Один и тот же результат может подойти для одной задачи и не подойти для другой. В нашем эксперименте используется транскрипция только основного текста в качестве эталона для сравнения. Он не считает отсутствие фуриганы приемлемым для издания, предназначенного для изучения произношения.
Реальный эксперимент с OCR на трех предложениях
В примере используются следующие предложения, написанные автором:
朝の図書館で本を読む。
古い地図には川が見える。
明日は友人と駅で会う。
Они описывают чтение в библиотеке, реку на старой карте и встречу с другом на станции. Если убрать переносы строк, основной текст состоит из 34 кодовых точек Unicode, включая три японские точки.
Мы отрендерили один и тот же основной текст в трех вариантах:
- Горизонтальный текст.
- Три вертикальных столбца, читаемые справа налево.
- Те же вертикальные столбцы с фуриганой рядом с
図書館,地図,友人, и駅.

Это чистые учебные изображения, а не отсканированные страницы из книги. Рендерер использует шрифт Noto Sans CJK JP, символы основного текста размером 64 пикселя, руби размером 24 пикселя и упрощенное посимвольное вертикальное размещение. Он рисует вертикальные точки в виде маленьких контурных кружков на позициях, выбранных вручную, а не использует правильное вертикальное позиционирование глифов шрифта; поэтому результаты обработки пунктуации не показывают, как OCR справляется с правильно сверстанной книгой. Он не воспроизводит все правила японской типографики. В тесте нет размытия, перекоса, текстуры бумаги, рукописного текста, исторических шрифтов или страниц со смешанным направлением текста.
Движок, модели и настройки
Эксперимент проводился 7 сентября 2026 года с использованием Tesseract.js 7.0.0 и Tesseract.js-core 7.0.0 локально на macOS ARM64. Все успешные вызовы использовали официальные tessdata_fast модели в коммите 87416418657359cb625c412a48b6e1d6d41c29bd, с OEM 1, режимом движка только на основе LSTM.
Официальный репозиторий моделей Tesseract предоставляет отдельные jpn и jpn_vert файлы. В его документации PSM 5 описывается как единый вертикально выровненный блок, а PSM 6 — как единый текстовый блок; выберите предположение о сегментации, которое соответствует распознаваемой области. См. документацию по сегментации страниц.
В наших зарегистрированных случаях использовались jpn с PSM 6 для горизонтального текста, jpn_vert с PSM 5 для вертикального текста и намеренно несовпадающий контроль jpn/PSM 6 для вертикального текста. Как модель, так и сегментация меняются между двумя вертикальными конфигурациями, поэтому это сравнение рабочих процессов, а не эксперимент, изолирующий эффект какого-либо отдельного параметра.
Первоначальная попытка с tessdata_best была прервана в доступном ядре WebAssembly до получения текста OCR. Мы переключились на официальные целочисленные tessdata_fast модели для совместимости и зафиксировали этот сбой. Из этого переключения не следует никаких выводов о точности какого-либо семейства моделей.
Что на самом деле вернулось
Сравнение удаляет пробелы и применяет нормализацию Unicode NFC. Оно не заменяет пунктуацию, не исправляет кандзи и не переставляет текст. Полные необработанные выходные данные и хэши версий/моделей, CSV-файл сравнения тела, а также аннотации ошибок доступны для скачивания.
| Входные данные и конфигурация | Наблюдаемый результат для целевого фрагмента без учета разметки |
|---|---|
Горизонтальный, jpn, PSM 6 | Все 34 кодовых точки совпали после удаления пробелов |
Вертикальный, jpn, контроль PSM 6 | Вывод шел поперек колонок и содержал замены символов; непригодно в качестве текста |
Вертикальный, jpn_vert, PSM 5 | Все 34 кодовых точки совпали после удаления пробелов; порядок колонок соблюден |
Вертикальный с фуриганой, jpn_vert, PSM 5 | Основной текст остался в правильном порядке, но два знака 。 превратились в ASCII-символы .; руби не были возвращены в виде отдельных чтений |
Три кадра колонок текста из изображения с фуриганой, jpn_vert, PSM 5 | Первая колонка заканчивалась на ., вторая — на ,, третья — на 。; обрезка не устранила все дефекты пунктуации |
Например, в случае с фуриганой была получена следующая первая строка:
Expected: 朝の図書館で本を読む。
Observed: 朝 の 図書 館 で 本 を 読む .
Пробелы игнорируются нашим заявленным правилом сравнения. Конечная пунктуация — нет. Рабочий процесс, основанный исключительно на поиске, может мириться с этим различием, но точная транскрипция должна регистрировать и исправлять его.
Несоответствие вертикального управления началось с 明 古 昌, перепрыгивая через верхние символы колонок, а не следуя предполагаемому первому предложению. Полученный вывод иллюстрирует, почему распознавание отдельных символов не то же самое, что восстановление последовательности чтения.
Было проведено семь завершенных вызовов OCR: четыре случая для целых изображений и три для обрезанных фрагментов. Мы сохранили каждый результат. Один агент сравнил результаты с созданным автором эталоном и визуально проверил изображения; слепого экспертного рецензирования или широкого эталонного корпуса не проводилось. Эксперимент не устанавливает универсально лучший движок, показатель точности на уровне книги или производительность на вашем скане.
Используйте рабочий процесс с выделением областей на собственной странице
1. Сохраните исходный материал и выберите одну сложную страницу
Оставьте оригинальное изображение или PDF без изменений. Работайте с копией и запишите номер страницы. Выберите страницу, содержащую проблему, которую вы пытаетесь решить: плотный фуригана, узкий междустолбец, горизонтальный заголовок над вертикальным текстом или необычно мелкий шрифт.
Чистая титульная страница не является полезным тестом приемки для книги, страницы основного текста которой имеют другую разметку. Если исходный материал представлен в формате PDF, извлеките или отрисуйте выбранную страницу с помощью надежного инструмента перед запуском процесса OCR, работающего исключительно с изображениями. Скрипты из этой статьи принимают файлы PNG; они не обрабатывают PDF-файлы и не создают доступные для поиска слои PDF.
Полный процесс подготовки и перевода сканированных документов описан в более широком материале по работе со сканированными PDF. Это руководство посвящено японскому направлению текста, сегментации, фуригане и решениям по транскрипции.
2. Исправьте дефекты захвата, не разрушая мелкий текст
Изучите реальные символы при подходящем масштабе увеличения. Выпрямите непреднамеренный наклон, удалите посторонние границы страниц и сохраните достаточную контрастность, чтобы различать мелкие знаки кана и пунктуацию. Избегайте восприятия агрессивного порога бинаризации или повышения резкости как автоматического улучшения: сравните полученное изображение с оригиналом, прежде чем доверять результатам OCR.
Руководство Tesseract по качеству изображений охватывает разрешение, шум, наклон и границы. Эти параметры независимы от направления письма. Выравнивание наклона страницы, сфотографированной под углом, — это не та же операция, что поворот вертикального японского текста в вертикальной ориентации набок.
Примеры файлов содержат метаданные 300 dpi, но это число не создает недостающие детали. Реальный размер глифов основного текста на них составляет 64 пикселя. Фотография низкого разрешения, для которой переписали значение на «300 dpi», остается все той же фотографией низкого разрешения.
3. Разделите области, если страница нарушает одно из предположений верстки
Попробуйте обработать основной вертикальный блок отдельно, прежде чем поручать одному вызову OCR обрабатывать горизонтальный заголовок, вертикальную прозу, иллюстрацию и номер страницы. Ведите простой учет областей, например: «страница 12, основной текст, первая колонка справа». Такая запись делает последующую сборку проверяемой.
Для материалов смешанного направления распознавайте горизонтальную область с соответствующей горизонтальной настройкой, а вертикальную — с вертикальной, а затем соберите их в порядке, предусмотренном документом. Это рекомендуемый рабочий процесс для тестирования на вашем файле, а не возможность работы со смешанной версткой, измеренная на наших трех примерах изображений.
В нашем эксперименте с кадрированием использовались точные известные координаты, чтобы исключить полосу фуриганы рядом с каждой синтетической колонкой, сохранив при этом основной текст и белое поле. Это была демонстрация ручного выбора областей, а не алгоритм автоматического удаления фуриганы. Не применяйте эти координаты к странице реальной книги.
4. Проверьте колонки перед корректурой отдельных символов
Сравните первый и последний символы основного текста каждой колонки, двигаясь в предполагаемом направлении. Убедитесь, что ни одна колонка не пропущена, не дублирована, не перевернута и не объединена с соседней. Затем проверьте предложения на границах колонок.
Только после этого следует исправлять отдельные кандзи, кана, знаки препинания, цифры и имена. Иначе вы можете потратить время на полировку фрагментов, которые будут собраны не в тот абзац.
Полезный трехэтапный пересмотр:
- Области и порядок: каждая предназначенная область текста присутствует один раз и в правильной последовательности.
- Символы: сравните реальное изображение с текстом, включая мелкие знаки препинания и символы каны.
- Примечания: решите, следует ли сохранить каждый элемент фуриганы, примечание или маргинальную метку, отделить их или намеренно исключить.
Показатель уверенности движка не заменяет эти проверки. Наш тест с перемешанным порядком все равно выдал указанное движком число уверенности, но это не сделало порядок чтения приемлемым.
Не удаляйте фуригану, пока не поймете зачем
При извлечении только текста фуригана не должна случайно превращаться во второй слой прозаического текста. Однако удаление каждой короткой строки каны не является безопасным универсальным правилом. Чтение может помочь прояснить имя, сохранить выбранное автором произношение или поддержать учебную задачу читателя.
На изображении с фуриганой вывод OCR содержал основные кандзи, но не возвращал четыре чтения в виде отдельного набора аннотаций. Этого может быть достаточно после исправления знаков препинания для задачи поиска только по тексту. Этого недостаточно, если конечный результат обещает информацию о произношении.
Сохраняйте важные чтения отдельно и связывайте их с правильным вхождением. Например:
Page: sample 1
Column: 1 from the right
Base text: 図書館
Reading shown: としょかん
Decision: retain body text; save reading in the annotation record
Образец отдельной транскрипции фуриганы делает эту политику явной. Это эталонные данные, созданные вместе с изображением, а не свидетельство успешной работы OCR.
Если OCR смешивает кану со словом или теряет связь, сравните результат с изображением и исправьте транскрипцию. Не просите языковую модель угадывать источник и выдавать догадку за восстановленный текст. Вместо этого отметьте неточное чтение для проверки.
Результаты обрезки также противоречат упрощенному правилу «удалите фуригану, и все улучшится»: остались два отличия в знаках препинания, и изменились окончания затронутых предложений. Это наблюдение относится к данному конкретному чистому тестовому стенду. Оно говорит нам о необходимости проверять результат после сегментации, а не о том, что обрезка в целом помогает или вредит OCR.
Воспроизведите тест или ведите журнал проверки
Загрузите README эксперимента, чтобы узнать закрепленные источники моделей и шрифтов, версии зависимостей, описания файлов и команды. Генератор примеров, модуль запуска OCR, а также скрипт для сравнения разделяет создание изображений, распознавание и оценку.
Запускающий скрипт использует документированный API воркера Tesseract.js. Для вертикальной области его основные настройки:
const worker = await createWorker("jpn_vert", 1, {
langPath: modelDirectory,
gzip: false,
cacheMethod: "none",
});
await worker.setParameters({
tessedit_pageseg_mode: "5",
user_defined_dpi: "300",
});
modelDirectory должен содержать загруженный и распакованный jpn_vert.traineddata файл. Это отрывок, а не полная программа; предоставленный запускающий скрипт также сохраняет исходные результаты и завершает работу воркеров.
Если вы используете другое приложение OCR, сохраняйте те же данные даже при отличии названий настроек: исходная область, оригинальный файл, версия модели или инструмента, направление, выбор сегментации, фактический вывод, исправленный текст и нераспознанные символы. шаблон журнала проверки пуст, чтобы не создавать впечатление, будто ваши страницы уже прошли проверку.
Не экстраполируйте наш скромный результат с точным совпадением на целый роман. Различные шрифты, плотные колонки, исторические формы написания, сканы низкого качества и речевые пузырьки в манге требуют собственных репрезентативных тестов. Макет манги и распознавание рукописного текста выходят за рамки данного эксперимента.
Переводите только тогда, когда полученный исходный текст заслуживает доверия
Если ваша цель — поиск, копирование цитат или поиск по словарю, проверенный японский текст может стать конечным результатом. Вам не нужно переводить весь документ только потому, что в процессе использовалось OCR.
Если языковой барьер все еще мешает чтению и у вас есть подходящий файл для загрузки, перейдите к рабочему процессу перевода PDF. Сохраняйте исходный скан и проверенную транскрипцию, чтобы отличать ошибки распознавания от ошибок перевода. Пример запускающего скрипта создает текстовые файлы и файлы TSV, а не PDF, готовый к автоматической загрузке; подготовьте фактический формат ввода, который требует ваш следующий инструмент.
Режим OCR в BookTranslator восстанавливает переведенный контент, а не гарантирует сохранение исходного вертикального макета. Не рассчитывайте на то, что он сохранит каждую связь с фуриганой или исправит неисследованные ошибки распознавания. Проверьте порядок чтения и форматирование итогового документа с помощью руководства по сохранению формата PDF и итогового контрольного списка проверки PDF.
Надежная передача данных — это не «OCR завершено», а «требуемый японский текст присутствует, его последовательность проверена, а способ обработки аннотаций задокументирован».
Похожие статьи





