CodeKitHub
Русский
Почему фотографии страниц книг не распознаются с помощью OCR (и как даже небольшой наклон на несколько градусов снижает точность)

Почему фотографии страниц книг не распознаются с помощью OCR (и как даже небольшой наклон на несколько градусов снижает точность)

Опубликовано 24 июл. 2026 г.

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

Тест: одна и та же страница, четыре условия

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

Условие Точность распознавания слов
Чистое, ровное сканирование 100 %
Пожелтевшая, выцветшая страница (без наклона) 100 %
Наклон ~12° (без изменения цвета) 67,7 %
Наклон ~8° + блики 71,0 %

Пожелтевшая страница получила такой же результат, как и идеально чистая — полный балл. Как только появился наклон, точность упала на треть, что дало именно тот результат, который видел каждый, кто пробовал инструменты для «сканирования учебников в Word»: "brow," вместо «brown», "Chapte,." вместо «Chapter.», "hidde,," вместо «hidden».

Почему даже небольшой наклон приводит к столь значительным искажениям

Механизмы OCR считывают текст, сканируя строки изображения в поисках однородных горизонтальных полос чернил — именно этот механизм они используют, чтобы отличить одну строку текста от другой. При идеально ровном сканировании каждая строка текста располагается в аккуратной горизонтальной полосе, и механизм чётко отделяет строку 1 от строки 2 и от строки 3.

Но стоит наклонить страницу даже на 10 градусов, как эта чёткая горизонтальная полоса превращается в диагональное размытие, охватывающее десятки строк пикселей. Логика сегментации строк движка начинает объединять символы из двух отдельных строк или разбивать один символ на две, как ему кажется, разные строки. Результат не просто «немного менее точный» — это категорически иной вывод, поскольку основная единица, которую считывает движок (строка), больше не соответствует тому, что на самом деле находится на изображении.

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

Решение: выравнивайте изображение до распознавания, а не после

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

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

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

Что это означает для оцифровки книги

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

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

← Назад к блогу