Без качване, 100% локално, без акаунт

Статия

Подобрете точността на OCR: коригирайте изображението преди да разпознаете текста

OCR е толкова добро, колкото изображението, което му подавате. Наклонен, с ниски контрасти, шумен скан произвежда объркан текст независимо колко добър е двигателят. Ето какво реално подобрява резултатите, в реда, в който трябва да се прави, и всичко работи локално в браузъра ви.

Защо OCR има затруднения с реални сканирания

OCR двигател като Tesseract е обучен върху чист, хоризонтален, с висок контраст текст. Той разделя страницата на редове, редовете на думи, а думите на форми на символи, след което съпоставя всяка форма с обучения модел. Реалните сканирания нарушават тези предположения: страницата е наклонена с няколко градуса, осветлението е неравномерно, резолюцията е ниска, а ръбът на стъклото на скенера или насрещната страница добавя тъмен шум. Всеки от тези проблеми кара стъпката на сегментиране на редове и символи да прави грешки, а една грешна сегментация води до верига от грешни символи. Решението рядко е различен двигател: то е подготовката на изображението така, че предположенията на двигателя да са изпълнени. На практика предварителната обработка подобрява точността повече, отколкото изборът на OCR двигател.

Схема на конвейера за предварителна обработка на 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 градуса, изправянето е малко завъртане на произволен ъгъл, така че пикселите се вземат отново на проби и се добавя малко количество размиване. Тази компромис почти винаги си струва, защото хоризонталните редове се сегментират чисто и печалбата в точността далеч надвишава леките замъгляване. Изправете наклона след коригиране на ориентацията и преди изрязването.

Преди и след корекция на наклона: страница с текст, наклонена на няколко градуса вляво, изправена хоризонтално вдясно така, че редовете да са хоризонтални.

Изрежете до текста и премахнете шума

Всичко, което не е текстът, който искате, е шум, който двигателят може да прочете погрешно: тъмният ръб на стъклото на скенера, part от насрещната страница, захванат ъгъл, пръст или пробита дупка. Изрязването до само текстовия блок премахва тези фалшиви цели, което едновременно подобрява точността и ускорява разпознаването, тъй като двигателят има по-малка площ за анализ. При многоколонен документ изрязването (или изпълнението на OCR по една колона наведнъж) също предотвратява двигателя да чете право напречно и да преплита две колони в един объркан ред. Изрежете след изправяне на наклона, за да се позиционира съдържанието квадратно в рамката.

Контраст, скала на сивото и как реално работи бинаризацията

OCR в крайна сметка работи върху бинарно изображение: всеки пиксел се решава да е мастило или хартия. Tesseract прави това вътрешно, като използва метода на Otsu, който избира единичен глобален праг от хистограмата на изображението. Това работи добре, когато страницата има равномерно осветление и добър контраст, и се проваля, когато сянка или цветен фон прави един ъгъл по-тъмен от очаквания от прага. Надеждните подобрения са преобразуването в скала на сивото, за да не може цветовото отклонение да обърка прага, и изравняването на осветлението, така че цялата страница да е от едната му страна. Умереното усилване на контраста помага при слаб текст. Това, което обикновено се обръща, е твърдата ръчна бинаризация: ако сами зададете праг до чисто черно и бяло с грешна стойност на изрязване, заличавате слаби щрихи, които собствената фаза на двигателя би запазила. Оставете двигателя да бинаризира и му дайте равномерно изображение в скала на сивото за начало. Sunasty предлага скала на сивото за PDF. за фино настройване на контраста настолният редактор все още е по-добър, но равномерното осветление при сканиране има по-голямо значение от всеки плъзгач.

Изберете правилния език и проверете резултата

Tesseract зарежда отделен файл с обучени данни за всеки език и писменост. Изпълнението на английски модел върху френски или гръцки текст произвежда избежими грешки, особено при ударени или нелатински символи, така че изберете езика, съответстващ на документа. Накрая третирайте изхода от OCR като чернова, а не като окончателен отговор: двигателят няма начин да знае дали дадено собствено Ime е изписано правилно или дали едно 0 не е O. Проверете числата, собствените имена и всичко с правно или финансово значение. При таблици и многоколонни оформления очаквайте да коригирате структурата ръчно, тъй като OCR връща поток от разпознат текст, а не възстановено оформление.

Инструменти от тази статия

Често задавани въпроси

Помага ли увеличаването на размазан скан за OCR?

Не много само по себе си. Увеличаването не може да възстанови детайл, който сканирането никога не е заснело, така че размазано изображение от 100 DPI остава размазано. Умереното увеличаване може да помогне на двигателя да раздели допиращи се символи, като даде на сегментирането повече пиксели, но повторното сканиране на 300 DPI е много по-ефективно от каквото и да е количество увеличаване.

Трябва ли сам да преобразувам изображението в чисто черно и бяло?

Обикновено не. Tesseract бинаризира вътрешно с метода на Otsu, а ръчен твърд праг с грешна стойност на изрязване заличава слаби щрихи, които двигателят би запазил. Преобразувайте в скала на сивото и изравнете осветлението, а след това оставете двигателя да избере собствения си праг.

Текстът ми е настрани. OCR ще го завърти автоматично ли?

Понякога. Tesseract има фаза за засичане на ориентацията, но е ненадеждна при формуляри, оскъден текст или страници с много изображения. Да завъртите страницата 90, 180 или 270 градуса сами е без загуба и премахва гадаенето, така че е по-сигурният избор.

Качва ли се документът ми някъде с тези действия?

Не. Завъртането, изправянето на наклона, изрязването, преобразуването в скала на сивото и самото OCR работят в браузъра ви. OCR използва WebAssembly версия на Tesseract, а обучените езикови данни се изтеглят веднъж и се кешират. Файлът ви никога не напуска устройството.

Източници