Стаття
Покращення точності OCR: підготуйте зображення перед розпізнаванням тексту
Точність OCR визначається якістю вхідного зображення. Косий, низькоконтрастний, зашумлений скан дасть спотворений текст незалежно від того, наскільки хороший рушій. Нижче описано, що реально впливає на результат, у правильному порядку виконання, повністю в браузері.
Чому OCR погано справляється з реальними сканами
Рушій OCR, наприклад Tesseract, навчений на чистому, горизонтальному, високо-контрастному тексті. Він ділить сторінку на рядки, рядки на слова, слова на символи і порівнює кожен символ із навченою моделлю. Реальні скани порушують ці припущення: сторінка нахилена на кілька градусів, освітлення нерівномірне, роздільна здатність низька, а край планшету сканера або сусідня сторінка додають темний шум. Кожна з цих проблем змушує крок сегментації рядків і символів давати хибний результат, а помилка сегментації тягне за собою помилки в символах. Рішення рідко полягає у виборі іншого рушія: потрібно підготувати зображення так, щоб припущення рушія виконувалися. На практиці попередня обробка впливає на точність більше, ніж вибір конкретного OCR-рушія.

Почніть з роздільної здатності: прагніть до 300 DPI
Tesseract найкраще працює при роздільній здатності близько 300 DPI для звичайного основного тексту. Нижче приблизно 200 DPI штрихи кожного символу розмиваються і зливаються із сусідніми, точність різко падає. Якщо ви керуєте сканером, встановіть 300 DPI насамперед: це вибір із найбільшим впливом на результат. Якщо у вашому розпорядженні лише низькороздільне зображення, збільшення масштабу не створює деталей, яких ніколи не було, але помірне збільшення може допомогти рушію розділити символи, що торкаються, надавши сегментації більше пікселів. Дуже дрібний шрифт виграє від 400 до 600 DPI; вище цього значення обсяг файлу зростає без приросту точності. Якщо джерелом є PDF, спочатку растеризуйте кожну сторінку в зображення з потрібним DPI, а потім запускайте OCR на цьому зображенні.
Правильна орієнтація сторінки
Якщо сторінку повернуто на 90, 180 або 270 градусів, рушій читає текст набік або догори ногами і видає безглузді результати. У Tesseract є прохід визначення орієнтації та скрипту (OSD), який може вгадати поворот, але він ненадійний на розрідженому тексті, формах або сторінках, заповнених зображеннями. Самостійний поворот сторінки у вертикальне положення виключає невизначеність. Цей крок не потребує втрат якості і виконується миттєво: поворот на кратне 90 градусів лише переназначає наявні пікселі на нові позиції без передискретизації. Виконуйте його до виправлення нахилу, оскільки алгоритм виправлення нахилу передбачає, що текст вже приблизно горизонтальний.
Виправлення нахилу: вирівняйте невеликий перекіс
Навіть нахил у 2-3 градуси, що виникає при подачі сторінки в сканер із невеликим перекосом, знижує якість OCR: крок пошуку горизонтальних рядків ділить один рядок тексту на два або об'єднує два рядки в один. Виправлення нахилу вимірює домінуючий кут текстових рядків (зазвичай за допомогою аналізу профілю проекцій або перетворення Hough) і повертає сторінку в горизонтальне положення. На відміну від повороту на 90 градусів, виправлення нахилу передбачає довільний поворот на малий кут, тому виконується передискретизація пікселів і додається невелике розмиття. Цей компроміс майже завжди виправданий, оскільки вирівняні рядки сегментуються чисто, а приріст точності значно перевищує легке розмиття. Виправляйте нахил після корекції орієнтації і до обрізки.

Обріжте до тексту та приберіть шум
Усе, що не є потрібним текстом, це шум, який рушій може неправильно інтерпретувати: темна рамка планшету сканера, частина сусідньої сторінки, кут зі скріпкою, палець або отвір від діркопробивача. Обрізка до текстового блоку усуває хибні цілі, що одночасно підвищує точність і прискорює розпізнавання, оскільки рушію доводиться аналізувати меншу ділянку. Для багатоколонкового документа обрізка (або запуск OCR по одній колонці за раз) також запобігає ситуації, коли рушій читає через міжколонковий проміжок і змішує дві колонки в один спотворений рядок. Виконуйте обрізку після виправлення нахилу, щоб вміст розташовувався рівно в кадрі.
Контраст, відтінки сірого і як насправді працює бінаризація
OCR зрештою працює з бінарним зображенням: кожен піксель визначається як чорнило або папір. Tesseract виконує це внутрішньо методом Otsu, який вибирає єдиний глобальний поріг із гістограми зображення. Метод добре працює при рівномірному освітленні і хорошому контрасті, але дає збій, коли тінь або кольоровий фон роблять один кут темнішим, ніж очікує поріг. Надійні способи покращення: переведення у відтінки сірого (щоб колірний відтінок не збивав поріг) і вирівнювання освітлення так, щоб уся сторінка знаходилася по один бік від нього. Помірне підвищення контрасту допомагає при блідому тексті. Зазвичай контрпродуктивна жорстка ручна бінаризація: якщо застосувати порогове перетворення з хибним значенням, стираються слабкі штрихи, які власний прохід рушія зберіг би. Нехай рушій виконує бінаризацію сам, а йому надайте рівне зображення у відтінках сірого. Sunasty пропонує інструмент переведення PDF у відтінки сірого; для тонкого налаштування контрасту настільний редактор досі кращий, однак рівномірне освітлення під час сканування важливіше за будь-який повзунок.
Виберіть правильну мову та перевірте результат
Tesseract завантажує окремий файл навчених даних для кожної мови та скрипту. Запуск англійської моделі на французькому або грецькому тексті дає усувні помилки, особливо на символах з діакритикою або нелатинських символах, тому вибирайте мову, що відповідає документу. Нарешті, ставтеся до результату OCR як до чернетки, а не до остаточної відповіді: рушій не може знати, чи правильно написане ім'я або чи є 0 нулем, а не буквою O. Перевіряйте числа, власні назви та все, що важливо з юридичної або фінансової точки зору. Для таблиць і багатоколонкових макетів очікуйте ручного виправлення структури, оскільки OCR повертає потік розпізнаних символів, а не відновлений макет.
Інструменти з цієї статті
- OCR · зображення/PDF у текстВидобувайте текст із відсканованих зображень чи PDF повністю у вашому браузері, працює офлайн, без завантаження.
- Вирівняти відскановані сторінкиВирівнюйте перекошені відскановані PDF чи зображення повністю у вашому браузері, без завантаження.
- Поворот і віддзеркалення зображеньПовертайте зображення на 90/180/270° або віддзеркалюйте їх горизонтально та вертикально, без завантаження.
- Обрізання зображенняОбрізайте свої зображення з інтерактивним попереднім переглядом, перетягуйте та змінюйте розмір області обрізання. Без завантаження.
- PDF у відтінки сірогоПеретворіть кольоровий PDF у відтінки сірого повністю у вашому браузері, без завантаження.
- Зміна розміру зображеньЗмінюйте розмір та конвертуйте свої зображення (JPEG, PNG, WebP) без їх завантаження.
- PDF у зображенняКонвертуйте кожну сторінку PDF у PNG чи JPG безпосередньо у вашому браузері.
Поширені запитання
Чи покращує масштабування розмитого скану точність OCR?
Саме по собі незначно. Масштабування не відновлює деталі, яких скан ніколи не захоплював, тому розмите зображення 100 DPI залишиться розмитим. Помірне збільшення може допомогти рушію розділити символи, що торкаються, надавши сегментації більше пікселів, але повторне сканування при 300 DPI набагато ефективніше за будь-яке масштабування.
Чи варто спочатку перевести зображення в чисто чорно-біле?
Як правило, ні. Tesseract виконує бінаризацію внутрішньо методом Otsu, а ручне порогове перетворення з хибним значенням стирає слабкі штрихи, які рушій зберіг би. Переведіть зображення у відтінки сірого і вирівняйте освітлення, а потім дозвольте рушію самостійно вибрати поріг.
Мій текст розташований набік. OCR автоматично повернуть його?
Іноді. У Tesseract є прохід визначення орієнтації, але він ненадійний на формах, розрідженому тексті або сторінках із великою кількістю зображень. Самостійний поворот сторінки на 90, 180 або 270 градусів не потребує втрат якості і виключає невизначеність, тому є надійнішим варіантом.
При цьому мій документ завантажується на сервер?
Ні. Поворот, виправлення нахилу, обрізка, переведення у відтінки сірого та саме OCR виконуються у вашому браузері. OCR використовує збірку Tesseract на WebAssembly, а навчені мовні дані завантажуються один раз і кешуються. Ваш файл ніколи не покидає пристрій.