przystajnik

Wstydliwe dzieje OCR

Tak jak w domu powieszonego nie rozmawia się o sznurze, tak w przypadku Linuksa i oprogramowania do rozpoznawania tekstu lepiej zachować milczenie. A przynajmniej do jakiegoś czasu temat był na tyle wstydliwy, że w dobrym tonie leżało omijanie go szerokim łukiem. Jednak z biegiem lat temat OCR dla Linuksa malutkimi kroczkami rozwijał się do jako takiej używalnej formy, a przełomem stał się otwarto-źródłowy silnik Tesseract. W przeciwieństwie do wielu akademickich projektów, ten silnik miał istotną przewagę – potrafił rozpoznawać litery, jak też za jego rozwojem stało/stoi Google. Na dodatek, w repozytoriach najnowszego wydania Ubuntu 12.04 pojawiła się w końcu paczka umożliwiająca obsługę języka polskiego (tesseract-ocr-pol), co niewątpliwie zwiększyło atrakcyjność tej pozycji – przynajmniej dla osób posługujących się językiem polskim. Żeby nie było do końca różowo, program jest przeznaczony do niewygodnej obsługi z poziomu terminala. Jednak powstało kilka graficznych nakładek rozwiązujących tę niedogodność i jedną z nich jest program gImageReader. Dlaczego akurat ten projekt? Bo nie wybrzydzał przy obsłudze naszego rodzimego dialektu (niektóre programy nie zechciały pokazać dostępnego języka polskiego), umożliwia obroty obrazu (to takie oczywiste) i nie jest skomplikowany w obsłudze. Na dodatek można nim uzyskać zupełnie przyzwoite efekty konwersji zeskanowanych tekstów, a jeszcze lepsze podczas przeróbki plików .pdf. Pomimo dość ubogiej liczby opcji, mamy tutaj pod ręką wszystko co może się przydać – obrót grafiki, jasność i kontrast obrazu, oraz jego rozdzielczość. Zmiana rozdzielczość przydatna jest w przypadku niemrawych skanów i wspomaga dokładność algorytmów rozpoznających znaki. Niestety, materiały muszą zostać uprzednio zeskanowane (?) i dopiero wczytane do programu (plik graficzny bądź pdf).Po wczytaniu skanu/skanów, możemy przystąpić do całościowego rozpoznania, bądź wybrania konkretnych rejonów (niebieska ramka). Wynik otrzymamy w kolumnie po prawej stronie, skąd możemy skopiować go do dalszej obróbki w edytorze tekstu. Poniżej mały test rozpoznawania polskiego słowa pisanego i wydrukowanego na papierze gazetowym w okolicach 1960 roku. Przykład zawiera efekt rozpoznania znaków przy 100% rozdzielczości materiału wejściowego (DPI 100%), 200% (DPI 200%) oraz 400% (DPI 400%).

gImageReader w akcji

Pomimo dość charakterystycznej i niewyraźnej czcionki gazetowej, wynik jest całkiem przyzwoity. Oczywiście przy porównaniu do osiągów i stopnia rozbudowania komercyjnych programów można marudzić, ale w obliczu tego co reprezentowało OCR dla Linuksa parę lat temu – jest świetnie.Instalacja dla Ubuntu 12.04 oraz Minta 13 jest nieco wyboista – bo aby zainstalować gImageReader musimy ściągnąć paczkę .deb ze strony projektu, oraz dopilnować, żeby w systemie znalazły się wszystkie zależności. Zatem:sudo apt-get install tesseract-ocr tesseract-ocr-pol python-gtk2 python-cairo python-gtkspell python-enchant python-popplerI dopiero wtedy klikamy dwukrotnie na pobraną paczkę .deb z gImageReader

Post navigation

  • maras

    a macie jaki pomysł jak to uruchomić na u 13.04? jakoś mi nie w samk się z nim rozstawać ale nie mogę go poprawnie zainstalować na aktualnym ubuntu – jakiś problem z python-imaging (PIL) a raczej z jego następcą. Ja niestety za krótki jestem. Będę wdzięczny za pomoc

  • Z tego co się doczytałem, autor przygotowuje nową wersję programu, która uruchomi się również na 13.04. Jeżeli ktoś tymczasowo chce poradzić sobie z tym problemem, musi zainstalować paczkę python-imaging-compat, oraz dokonać zmian w samym programie (Python nie jest kompilowany, więc można sobie zmieniać):

    Poprawiamy pliku umieszczone w /usr/share/pyshared/gimagereader (sudo gedit nazwa_pliku):
    nazwa_pliku:co zamieniamy -> na co zamieniamy

    drawingarea.py:import Image -> from PIL import Image

    drawingarea.py:import ImageFilter -> from PIL import ImageFilter

    drawingarea.py:import ImageEnhance -> from PIL import ImageEnhance

    main.py:import Image -> from PIL import Image

    main.py:import TiffImagePlugin -> from PIL import TiffImagePlugin

  • maras

    oj stary kocham cie i wielkie dzięki za pomnoc. Działa bez problemu. Jeszcze raz dziękuje.

Translate »