Японски OCR за вертикален текст: Запазване на реда на колоните и обработка на фуригана
Извличайте японски вертикален текст с правилните настройки за оформление, отделяйте фуригана от основния текст и проверявайте реалните OCR резултати с изтегляеми мостри.

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

Това са чисти учебни изображения, а не сканирани страници от книга. Рендерът използва Noto Sans CJK JP, основни знаци с размер 64 пиксела, 24-пикселно руби и опростено вертикално разположение знак по знак. Той изчертава вертикалните пунктуационни знаци като малки очертани кръгчета на ръчно избрани позиции, вместо да използва правилната вертикална позиция на глифите в шрифта; резултатите от пунктуацията следователно не установяват как се представя OCR на правилно наборна книга. Той не възпроизвежда всяко японско правило за набиране. В теста няма замъгляване, изкривяване, хартиена текстура, ръкопис, исторически тип или страница със смесена посока.
Двигател, модели и настройки
Експериментът беше проведен на 7 септември 2026 г., като се използва Tesseract.js 7.0.0 с Tesseract.js-core 7.0.0 локално на macOS ARM64. Всички успешни заявки използваха официалните tessdata_fast модели при commit 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, тяло, колона 1 отдясно“. Този запис прави последващото сглобяване проверяемо.
За материал със смесена посока разпознайте хоризонталния регион с подходящата хоризонтална настройка и вертикалния регион с вертикална настройка, след което ги сглобете в реда, предвиден от документа. Това е препоръчителен работен процес за тестване на вашия файл, а не възможност за смесено оформление, измерена чрез нашите три примерни изображения.
Нашият експеримент с изрязване използва точни известни координати, за да изключи руби ивицата до всяка синтетична колона, като същевременно запази нейния основен текст и бяло поле. Това беше демонстрация на ръчен избор на региони, а не автоматичен алгоритъм за премахване на фуригана. Не прилагайте неговите координати към страница от истинска книга.
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, и скрипт за сравнение отделно създаване на изображения, разпознаване и оценка.
Изпълнимият модул използва документирания worker 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 завършен.“ То е „желаният японски текст присъства, последователността му е проверена и третирането на анотациите е документирано.“
Свързани публикации





