Programy, których (być może) nie znacie. Cz. 19: gImageReader 5


Człowiek uczy się przez całe życie
Stare przysłowie ludowe

OCR jest jednym z najdziwniejszych zastosowań komputerów z jakim się w moim życiu spotkałem. Wiem jak działa mikroprocesor. Wiem jak działa system operacyjny. Na podstawowym poziomie jestem wstanie zrozumieć jak działa serwer bazodanowy, jak działa graficzny edytor tekstu. Gdyby przyszło co do czego, umiałbym własnymi słowami wyjaśnić to wszystko i znacznie więcej. To matematyka.

Ale OCR, czyli Graficznego Rozpoznawania Znaków, nie rozumiem. To, że komputer jest wstanie rozpoznawać kształty jest dla mnie jak voodoo. Pewnie, że stoi za tym matematyka (za OCR, nie za voodoo), ale tak skomplikowana iż całkowicie mnie przerasta. Według Wikipedii OCR podpada pod sztuczną inteligencję. Samo to wystarcza, aby wzbudzić we mnie pewne wątpliwości. Ciągle mam w pamięci Odyseję Kosmiczną – zarówno w literackim oryginale jaki i ekranizację.

Wszystko to jednak sprowadza się do jednego – może to i jest voodoo (jak 90% rzeczy, które my linuksiarze robimy – przynajmniej dla postronnego obserwatora), ale bardzo wygodne.

gImageReader

GImageReader jest graficzną nakładką na tesseract – uwolniony swego czasu przez Google system OCR. Sam tesseract jest narzędziem konsolowym, średnio wygodnym swoją drogą. Mimo toporności CLI, tesseract jest najlepszym otwartoźródłowym systemem OCR jaki jest dostępny na rynku. Ma odpowiednie słowniki dla wszystkich języków, tak więc OCR nie ogranicza się tylko do angielskiego. Z nakładką graficzną robi się całkiem przyjemnym narzędziem do odczytywania zeskanowanych książek i wyciągania tekstu z plików PDF. Z tekstem pisanym ręcznie raczej sobie nie radzi, chyba że ktoś ma ładne, techniczne pismo.

Jeżeli chodzi o skanowanie plików PDF, to radzi sobie świetnie. Na pewno jest to lepsze rozwiązanie niż na przykład wtyczka PDFImport do Open/Libre Office czy zwykłe „kopiuj->wklej” z systemowej przeglądarki dokumentów. Szczególnie jeżeli PDF został wyeksportowany jako obrazki (np. zeskanowane książki) a nie jako test (np. pdfexport z pakietu biurowego). Nie należy jednak spodziewać się cudów, wyjście z programu jest czystym tekstem. Obrazki trzeba sobie samodzielnie wyeksportować (np. wyciąć w GIMP-ie). Tabelki też nie są eksportowane z zachowaniem komórek – dostaniemy jedynie czysty tekst. Ale lepsze to niż nic.

GImageReader

GImageReader z włączonym menedżerem plików, zaznaczonym tekstem do rozpoznania oraz efektami pracy w prawym panelu.

GImageReader oferuje podstawową funkcjonalność graficznego rozpoznawania tekstu. Po zaimportowaniu pliku graficznego lub dokumentu PDF można rozpocząć rozpoznawanie (opcja „Recognize…”) lub najpierw zaznaczyć interesujący nas fragment strony i dopiero ten fragment obrabiać. Jest to wygodne przy zeskanowanych książkach, gdyż im mniej obszaru zaznaczymy tym szybciej proces rozpoznawania tekstu będzie trwał. Należy jednak pamiętać, że OCR to raczej zasobożerna technologia.

W czasie studiów z powodzeniem używałem tej aplikacji do wyciągania tekstu z książek oraz zeskanowanych lub sfotografowanych testów lub ogłoszeń „parafialnych” w dziekanacie.

Instalacja

Tesseract-ocr znajduje się w repozytoriach Ubuntu, ale w bardzo starej wersji. Nowszą wersję zainstalujesz dodając odpowiednie PPA:
sudo add-apt-repository ppa:alex-p/notesalexp
sudo apt-get update
sudo apt-get install tesseract-ocr tesseract-ocr-eng tesseract-ocr-pol

GimageReader nie ma w repozytoriach Ubuntu, nie ma też swojego PPA. Autorzy przygotowali paczkę .deb z swoją aplikacją. Jednakże przed pobraniem i instalacją gImageReader trzeba dezaktywować wcześniej dodane repozytorium ponieważ nastąpi konflikt paczek i dwie pythonowe biblioteki zostaną zastąpione wersjami nie do końca prawidłowo działającymi.

Wejdź w menadżer pakietów Synaptic, potem Ustawienia -> Repozytoria -> Inne Oprogramowanie. Znajdź tam wcześniej dodane repozytorium  http://ppa.launchpad.net/alex-p/notesalexp/ubuntu i odhacz je. Przy zamykaniu edytora repozytoriów zostaniesz poproszony o ponowne wczytanie pakietów. Zrób to.
Teraz już możesz ściągnąć i zainstalować paczkę .deb z gImageReader.

Tesseract-ocr rozpowszechniany jest na licencji Apache v2. Strona domowa.
GImageReader rozpowszechniany jest na licencji GNU/GPL v3. Strona domowa.

Jeżeli nie gImageReader to co?

Jeżeli zamierzamy rozpoznawać tekst na zdjęciach to lepszym rozwiązaniem będzie OCRFeeder, ma więcej możliwości w tym zakresie.


Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

5 komentarzy do “Programy, których (być może) nie znacie. Cz. 19: gImageReader

  • skynet1248

    >> Ale OCR, czyli Graficznego Rozpoznawania Znaków, nie rozumiem. To, że komputer jest wstanie rozpoznawać kształty jest dla mnie jak voodoo.

    W 95% programów to zwykłe porównywanie bitmap, nic więcej.
    Oczywiście istnieją bardziej skomplikowane algorytmy bazujące na kształcie litery, ale są one masakryczne wolne.

    Fajnie że tesseract jest open source, na pewno się przyda.

  • PlayRoll

    [quote comment=”49363″]>> Ale OCR, czyli Graficznego Rozpoznawania Znaków, nie rozumiem. To, że komputer jest wstanie rozpoznawać kształty jest dla mnie jak voodoo.

    W 95% programów to zwykłe porównywanie bitmap, nic więcej.
    Oczywiście istnieją bardziej skomplikowane algorytmy bazujące na kształcie litery, ale są one masakryczne wolne.

    Fajnie że tesseract jest open source, na pewno się przyda.[/quote]

    OCR na zasadzie porównywania bitmap to zbyt kiepski pomysł nawet na badziewny program. W przypadku OCR litery są raczej analizowane niż porównywane. Ale to już sobie doczytaj

  • piotrsz78

    Witam. Może jako matematyk postaram się odpowiedzieć jak to może działać, chociaż osobiście nie zagłębiałem się w tego typu analizy. Przypuszczalnie każdy ze znaków (liter) ma określone punkty specyficzne tylko dla niego samego. Punkty te mogą tworzyć figurę geometryczną. Korzystając z jednokładności figur bez problemu możemy je porównywać bez względu na wielkość. Dodatkowo trafność wyboru może być analizowana przez jakiś czas i obdarzana jakimiś wagami (chyba to podstawy sztucznej inteligencji). Kiedyś na lekcji, w ramach geometrii elementarnej, próbowałem z dzieciakami odkryć własne metody rozpoznawania znaków. Całość opierać się może o wiedzę nie wyższą niż gimnazjum.