CodeKitHub
Чому фото сторінок книги не розпізнаються OCR (і як кілька градусів нахилу псують точність)

Чому фото сторінок книги не розпізнаються OCR (і як кілька градусів нахилу псують точність)

Опубліковано 24 лип. 2026 р.

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

Тест: та сама сторінка, чотири умови

Щоб з’ясувати, що насправді ламає OCR (оптичне розпізнавання символів) на реальних фото книжок, ми пропустили той самий блок тексту через Tesseract — OCR-рушій з відкритим кодом — за чотирьох умов: чистий рівний скан, пожовкла/вицвіла сторінка, фото з нахилом близько 12 градусів, і фото з нахилом і доданим відблиском.

Умова Точність розпізнавання слів
Чистий, рівний скан 100%
Пожовкла, вицвіла сторінка (без нахилу) 100%
Нахил ~12° (без знебарвлення) 67.7%
Нахил ~8° + відблиск 71.0%

Пожовкла сторінка отримала такий самий результат, як і бездоганна — максимум балів. Щойно з’явився нахил, точність обвалилася на третину, видаючи саме той тип результату, який бачив кожен, хто пробував інструменти на кшталт “скан підручника в текст”: "брич," замість “брич”, "Розділл,." замість “Розділ.”, "схован,," замість “схований”.

Чому такий невеликий нахил завдає такої шкоди

OCR-рушії читають текст, скануючи рядки зображення в пошуках стабільних горизонтальних смуг чорнила — так вони відрізняють один рядок тексту від іншого. На ідеально рівному скані кожен рядок тексту лежить у чіткій горизонтальній смузі, і рушій охайно відділяє рядок 1 від рядка 2 і рядка 3.

Нахиліть сторінку хоча б на 10 градусів — і ця чиста горизонтальна смуга перетворюється на діагональну розмазану пляму, що охоплює десятки рядків пікселів. Логіка сегментації рядків рушія починає зливати символи з того, що мало б бути двома окремими рядками, або розділяти один символ на те, що вона сприймає як два різні рядки. Результат — не “трохи менш точний”, а якісно інший результат, бо базова одиниця, яку читає рушій (рядок), більше не відповідає тому, що насправді на зображенні.

Саме тому фото, яке вам здається абсолютно читабельним, все одно може дати нечитабельний результат OCR. Ваша зорова система компенсує нахил у 10 градусів без жодних свідомих зусиль — ви навіть не сприймаєте це як нахил. У наївному конвеєрі OCR такої компенсації немає, і він читає рівно ті пікселі, які отримує.

Виправлення: вирівнюйте до розпізнавання, а не після

Практичний висновок не в тому, щоб “тримати телефон обережніше” — невеликий нахил при фотографуванні розкритої книги майже неминучий, адже ви не притискаєте сторінку рівно до сканера. Виправлення автоматичне: визначити кут нахилу і виправити його до запуску розпізнавання тексту, а не після.

Один надійний спосіб визначити кут без важких моделей машинного навчання — метод профілю проєкції: обертати зображення за низкою кандидатних кутів і для кожного вимірювати, наскільки “пікоподібним” є розподіл чорнила по рядках. За правильного кута рядки тексту вишиковуються в чіткі смуги (висока дисперсія між рядками); за будь-якого іншого кута чорнило розмазується по рядках (низька дисперсія). Кут, що дає найвищу дисперсію, і є кутом вирівнювання.

Застосування цього виправлення першим, а потім розпізнавання тексту повернуло кожен із наших нахилених тестових випадків до 100% точності розпізнавання слів — та сама сторінка, той самий OCR-рушій, єдина відмінність — попереднє вирівнювання.

Що це означає, якщо ви оцифровуєте книгу

  • Не турбуйтеся про стан паперу. Пожовтіння, легке вицвітання і невелика втрата контрасту через старіння паперу самі по собі майже не впливають на точність. Стара книга в м’якій обкладинці оцифровується приблизно так само добре, як і нова.
  • Турбуйтеся про кут. Навіть нахил, якого ви не помітите оком, може стати всією різницею між придатним текстом і нісенітницею.
  • Відблиск від спалаху шкодить менше, ніж нахил, але все ж шкодить. Яскрава пляма на глянцевому папері може повністю приховати текст під нею — виправлення кута не допоможе там, де немає читабельного чорнила, яке можна прочитати в принципі.
  • Інструмент, що автоматично виправляє нахил, вирішує справжню проблему. Наш інструмент для перетворення сторінки книги на текст виконує саме цей крок виявлення й виправлення прямо у вашому браузері перед розпізнаванням — без завантаження на сервер, і він побудований спеціально навколо проблеми нахилу, а не в припущенні, що ви подаєте йому рівний скан.

Якщо ви вже пробували OCR на фото книги і облишили це через нечитабельний результат — проблема, ймовірно, була не в сторінці, а майже напевно в кількох градусах кута камери.

← Повернутися до блогу