В IxorThink разработваме алгоритми за обработка на документи, специализирани във фактури и касови бележки. Автоматично извличаме ключова информация от документите, като доставчик и обща цена. Първата стъпка от този процес е да разпознаете и извлечете текста от документите с помощта на оптично разпознаване на символи (OCR). Подобряването на качеството на извлечения текст е важно за подобряване на целия тръбопровод за обработка на документи. Имайки предвид този случай на употреба, сравняваме две OCR машини в този блог: Tesseract и Google Vision API.

Tesseract OCR

Tesseract е най-известният OCR двигател с отворен код. Първоначално разработен от Hewlett-Packard, сега се спонсорира от Google. Активната общност непрекъснато работи за подобряването му и има редовни нови актуализации. Тъй като е с отворен код и следователно се изпълнява локално, единствената цена за използването на Tesseract са ресурсите, които машината използва, и няма нужда документът и резултатите да се съобщават по интернет. LSTM, използван в модела, може също да бъде обучен на допълнителни езици или шрифтове.

Tesseract може да се изпълнява от интерфейса на командния ред и също така има C++ api. Има множество обвивки, които позволяват API да се използва и в други езици за програмиране, например в Python. В това сравнение ще използваме интерфейса на командния ред.

Google Vision OCR

Google Vision API е част от Google Cloud и включва сред много интересни услуги и опцията за разпознаване на текст. За разлика от Tesseract, има цена на услугата от $1,50 за 1000 единици за първите 5 милиона документа на месец. За документи в допълнение към тези 5 милиона на месец, цената е намалена до $0,60 за 1000 единици. Възможно е да използвате услугата като API, предоставяйки изображението или pdf, кодирани като base64 низ, или да съхраните файла в Google Cloud Storage и да предоставите информация за кофата.

Има две функции за анотация: TEXT_DETECTION е специализирана за извличане на текст от всяко изображение, докато DOCUMENT_TEXT_DETECTION е оптимизирана за плътен текст и документи. Установихме, че докато DOCUMENT_TEXT_DETECTION е малко по-добър в улавянето на чисти текстови редове и колони в документа, той също така разделя думи въз основа на препинателни знаци като . , - и : . В нашия случай има структурирана информация като номера на фактури и ДДС номера, които често съдържат препинателни знаци, но ние предпочитаме да ги разпознаваме като една дума. Ето защо използваме функцията TEXT_DETECTION, тъй като тя няма проблема с прекомерното разделяне.

Експерименти

Методология
За да сравним двете машини за OCR, първо трябва да създадем тестов набор от фактури. Някои трудни случаи, които се добавят към набора от тестове: изкривени сканирани документи, документи с много малък текст,... На всеки документ първо сравняваме всички намерени ограничителни полета на ниво дума, за да намерим съвпадения. Когато има най-малко 50% припокриване, считаме, че две ограничаващи полета съответстват на една и съща дума. За съответстващите ограничителни полета изчисляваме разстоянието на Хеминг между разпознатите думи. Освен качеството, ние оценяваме и необходимото време за всеки двигател.

Резултати
Един ясен резултат е, че Tesseract е по-бърз от Google Vision средно с 0,689 секунди. Дали обаче разпознатите думи се различават много? Фигурата по-долу показва хистограма на разстоянията на Хеминг между съвпадащите думи, където категориите „-1“ и „-2“ са несъвпадащи думи, намерени съответно от Tesseract и Google Vision. Виждаме, че за около 60% от думите думите се разпознават абсолютно еднакви. За други 11% има малки разлики от един или два знака в думата. Въпреки това, цели 18% от разпознатите думи са намерени само от Google и не са съпоставени с думи, намерени от Tesseract.

Когато се вгледаме по-отблизо в тази категория, откриваме, че проблемът е в малкия текст, който често се намира в долната част на фактурите. Фигурата по-долу показва пример за това. Google Vision е по-способен да разпознава тези малки букви, дори когато към Tesseract се добави допълнителна предварителна обработка за подобряване на контраста на буквите. Тъй като този малък текст понякога съдържа полезна информация, например за доставчика на фактурата, това е пречка за използването на Tesseract в това приложение.

Заключение

Tesseract OCR има много силни страни, като ниската цена и високата скорост. Пълният контрол върху модела и възможността за допълнително обучение или фина настройка са допълнителни предимства. Качеството на Google Vision OCR обаче все още е по-добро, особено в трудни случаи, като много малък текст. Тъй като качеството е най-важно за нас, Google Vision OCR печели сравнението в нашия случай на употреба.

В IxorThink, практиката за машинно обучение на Ixor, ние непрекъснато се опитваме да подобрим нашите методи за създаване на най-съвременни решения. Като софтуерна компания, ние можем да предоставим стабилни продукти от доказване на концепцията до внедряване. Чувствайте се свободни да се свържете с нас за повече информация.