Wstępne rozpoznanie

Żmudne przepisywanie tekstu, który dostępny jest tylko w formie papierowej, a potrzebujemy go w postaci elektronicznej, jest jednym z najmniej twórczych zadań, jakie można sobie wyobrazić. Na szczęście, można zaoszczędzić bardzo dużo czasu i pracy, stosując oprogramowanie OCR.

Żmudne przepisywanie tekstu, który dostępny jest tylko w formie papierowej, a potrzebujemy go w postaci elektronicznej, jest jednym z najmniej twórczych zadań, jakie można sobie wyobrazić. Na szczęście, można zaoszczędzić bardzo dużo czasu i pracy, stosując oprogramowanie OCR.

Oprogramowanie takie jest dostępne od wielu lat, ale jego twórcy musieli włożyć bardzo dużo pracy w to, żeby oszczędzić użytkownikom żmudnego przepisywania. Rozpoznawanie tekstu jest bowiem procesem bardzo złożonym i wymagającym zastosowania zaawansowanych algorytmów.

Jak działa OCR?

Dokładność - jak ją interpretować?

Wszyscy producenci programów OCR podają bardzo wysokie współczynniki dokładności rozpoznawania. Wartości rzędu 98,9 czy 99,5 procent robią wrażenie, gdy rozpatruje się je w kategoriach bezwzględnych. Spróbujmy przełożyć to jednak na praktykę. Typowa strona artykułu w PC World Komputerze to około 5500 znaków. Załóżmy, że dokładność rozpoznawania wynosi 99 procent. Oznacza to, że na tej jednej stronie program OCR błędnie zakwalifikuje aż 55 znaków, które trzeba będzie ręcznie poprawić! Naprawdę dużo, biorąc pod uwagę, że czasami szybkie zlokalizowanie błędów wcale nie jest takie proste. Jest to poważny problem, który sprawia, że efektywność pracy z programami OCR nie jest jeszcze tak duża, jak moglibyśmy sobie życzyć. Oczywiście waga tego problemu jest różna, w zależności od konkretnego zastosowania. Gdy chcemy zamienić dużo tekstu na przykład na HTML na prywatny użytek, wówczas ewentualne pomyłki najwyżej będą irytować, ale jeśli program OCR jest wykorzystywany do przetwarzania informacji, które później trafiają do bazy danych, to wszelkie błędy mogą mieć poważne konsekwencje. Dlatego konieczna jest w tym przypadku czasochłonna i najczęściej kosztowna weryfikacja efektów pracy programów OCR.

Dlaczego prawidłowe rozpoznanie tekstu jest dla komputera tak trudnym zadaniem? Podstawowym problemem jest, oczywiście, podejście do rozpoznawania i odmienna reprezentacja znaków u ludzi i w pamięci komputera. Człowiek przechowuje wzorce, które jego mózg może porównać do obrazu, który widzi, i właściwie zinterpretować znaki. Tymczasem komputer przechowuje znaki w postaci kodów ASCII, które nie mają nic wspólnego z graficzną reprezentacją tekstu. Aby maszynowe rozpoznawanie na szeroką skalę i w zmiennych warunkach (a nie na przykład tylko na specjalnie przygotowanych i oznaczonych formularzach) było możliwie, konieczne stało się wykorzystanie sieci neuronowych, które stanowią podstawę każdego współczesnego programu OCR.

Sieci takie mają bardzo ważną cechę - potrafią się uczyć w kontrolowany sposób. Podając im odpowiednio przygotowane dane wejściowe i kontrolując rezultat, można spowodować, że sieć neuronowa sama nauczy się poprawnego rozpoznawania znaków.

Samo rozpoznawanie to kilka procesów. Najpierw program OCR analizuje ułożenie strony i sprawdza, czy tekst biegnie w odpowiedni sposób (w zależności od języka, w przypadku polskiego oczywiście od lewej do prawej i z góry na dół). Jeśli nie, wówczas obraz zostaje odpowiednio obrócony. Następnie identyfikowane są poszczególne obszary zawierające tekst. Jeśli automatyka na tym etapie zawiedzie, można wskazać ręcznie dodatkowe pola.

Gdy pola tekstowe zostaną zdefiniowane, program stara się rozpoznać kolejne wiersze tekstu. Każdy wiersz zostaje następnie rozbity na pojedyncze znaki. To jednak nie koniec. Każdy znak zostaje rozłożony na cztery ćwiartki, z których każda jest indywidualnie porównywana z bazą wzorców. Następnie program analizuje wyniki tego porównania i wybiera znak, który jest najbardziej prawdopodobny (bo na przykład trzy z czterech ćwiartek zgadzają się z jednym wzorcem).

Każdy wyraz jest następnie porównywany ze słownikiem (jeśli jest dostępny), dzięki czemu następuje ostateczna weryfikacja.

Zestaw standardowy plus opcje

TypeReader 6.0

W krajach anglosaskich, zwłaszcza w USA, jest to dość popularny program, konkurujący z opisaną przez nas trójką aplikacji. Wyróżnia się dużą szybkością działania i bardzo prostym, wygodnym interfejsem. Niestety, w polskich warunkach jest całkowicie nieprzydatny. Nie chodzi tylko o brak polskiego interfejsu, ale również o brak polskich słowników i brak rozpoznawania polskich czcionek. Jakakolwiek praca z polskojęzycznymi dokumentami jest zatem z góry skazana na porażkę. Szkoda, że producent nie uznaje Polski za kraj wystarczająco duży, aby zainwestować w odpowiednie modyfikacje.

Ponieważ programy OCR nie są tak bardzo rozpowszechnione, jak np. edytory tekstu, zdefiniowanie zestawu najbardziej potrzebnych funkcji oraz zbioru dodatkowych narzędzi, zwiększających wygodę pracy, nie jest oczywiste. Wprawdzie wybór godnych polecenia aplikacji i tak nie jest wielki, ale warto wiedzieć, czego można oczekiwać od dobrego programu OCR.

Przede wszystkim powinien pozwalać na pobieranie danych wejściowych z dwóch źródeł - skanera i pliku graficznego, najlepiej w kilku formatach (oczywiście TIFF i JPEG, ale także np. PDF). Dobre programy pozwalają również wykorzystać np. aparat cyfrowy jako źródło danych wejściowych, choć zapewnienie odpowiedniej jakości może być problematyczne.

Ponadto dobry program OCR powinien być przystosowany do rozpoznawania charakterystycznych znaków danego języka (czyli w naszym przypadku najczęściej polskiego). Liderzy nie mają z tym problemów - FineReader rozpoznaje np. ponad 150 języków. Ale już TypeReader 6.0, program dość popularny w USA (więcej o nim w ramce) nie jest przystosowany do polskich czcionek, a nauczenie go odpowiedniego rozpoznawania to dość żmudna praca.

Rozpoznawanie specyficznych znaków to jeszcze nie wszystko. Zwłaszcza rozpoznanie konkretnego znaku w materiałach źródłowych niezbyt dobrej jakości może być problematyczne, na przykład bardzo zbliżone są do siebie litera m oraz kombinacja in, podobnie jak litera w oraz kombinacja \v. W takich sytuacjach decydujące znaczenie mają wbudowane słowniki. Program weryfikuje w nich rozpoznane słowa w słowniku, a tam, gdzie rozpoznanie nie jest jednoznaczne, próbuje dobrać najbardziej zbliżoną formę ze słownika. O tym, jak ważne są słowniki, można się przekonać w każdym z testowanych programów. Wyłączenie słownika kilkakrotnie, a czasami nawet kilkunastokrotnie zwiększa liczbę błędów rozpoznawania.


Zobacz również