Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

OCR na Linuxie

W swoim ostatnim tekście napisałem, że w porównaniu z Windowsem, kwestia rozpoznawania tekstów nie wygląda na Linuxie za dobrze. W komentarzach pojawiły się nawet stwierdzenia, że na Linuxie nie ma niczego, co by potrafiło dobrze rozpoznać polski tekst. Postanowiłem zatem zrobić prosty test dwóch łatwych w użyciu narzędzi OCR.

Jak testowałem

Wkleiłem jedną stronę tekstu do Writera (320 słów) i zapisałem do PDFa w trzech różnych wersjach czcionkowych: Liberation Sans, Liberation Serif, Ubuntu Light. Następnie wydrukowałem te trzy strony, zeskanowałem (300 DPI) i zapisałem do pliku jpg. Następnie każdym z programów starałem się rozpoznać każdy z plików.
Programy oceniałem przede wszystkim pod kątem jakości rozpoznania, ale także prędkości oraz łatwości instalacji i korzystania z programu. Rozpoznany tekst kopiowałem do Writera, aby wychwycić błędy autokorektą.

Lios

Instalacja: paczka deb ze strony twórcy lub oficjalne repo.

Obsługa: Dosyć intuicyjny GUI. Obsługa skanowania i kamerki. Możliwość ustawienia automatycznego interwału między skanowaniem wielu stron.

Formaty: JPG (PDF wydaje się nie działać - konwersja PDFa do obrazu trwa wieczność)

Silnik: W zależności od zainstalowanych w systemie.

LIBERATION SERIF (Cuneiform)

Czas: 6 sekund

Błędy: 10/320 - z czego kilkukrotnie znak myślnika zastąpiony tymi samymi krzaczkami (łatwe do poprawienia), w jednym miejscu brak kreski nad "ó", raz "óa" zamiast "da", raz "rn" zamiast "m". Ogólnie bardzo dobry wynik. Każda rozpoznana linijka kończy się znakiem końca paragrafu.

LIBERATION SANS (Cuneiform)

Czas: 5 sekund

Błędy: 6/320 - ogólnie błędy dokładnie tego samego typu (głównie myślniki).

UBUNTU LIGHT (Cuneiform)

Czas: 6 sekund

Błędy 9/320 - niemal identycznie jak Liberation Serif.

Silnik Tesseract wymaga instalacji języka polskiego z repo.

LIBERATION SERIF (Tesseract)

Czas: 10 sekund

Błędy: 4/320 - Tesseract dobrze radzi sobie z myślnikami. Popełnione błędy są drobne (wstawiona niepotrzebnie spacja wewnątrz wyrazu, zgubiona kropka w domenie). Tak naprawdę znalazłem tylko 1 ważniejszy błąd. Znakomita jakość rozpoznania. Jedyne czego się można czepić to te znaki końca paragrafu.

LIBERATION SANS (Tesseract)

Czas: 10 sekund

Błędy: 2/320 - Tym razem kropka w domenie dobrze rozpoznana. Jeden błąd to brak spacji między wyrazami. Jak widać czcionka nieszeryfowa jest "widziana" jeszcze lepiej.

UBUNTU LIGHT (Tesseract)

Czas: 8 sekund

Błędy:13/320 - z czego aż 12 błędów to brak spacji między wyrazami, a tylko 1 to błąd w pisowni samego wyrazu. Jak widać nieco mniej klasyczna czcionka Ubuntu sprawia pewne problemy.

UWAGI: Koniecznie trzeba zaznaczyć manualne ustawianie orientacji strony. Przyspiesza to kilkukrotnie proces rozpoznawania i pozwala uniknąć błędów niepotrzebnego obrócenia strony o 90 stopni.

Ocrfeeder

Instalacja: oficjalne repo.

Obsługa: Prosty i funkcjonalny GUI. Możliwość łatwego zaznaczenia obszaru, który chcemy rozpoznać i szybkiego przełączania się między silnikami rozpoznawania. Możliwość eksportu do ODT. Pożera spore ilości pamięci. Działa rozpoznawanie z PDFów.

Formaty: JPG i PDF

Silnik: W zależności od zainstalowanych w systemie.

Zastosowanie tych samych silników daje takie same efekty jak w przypadku Lios. Różnica jest jednyie w komforcie pracy z programami. Całościowo bardziej pasuje mi chyba OCRFeeder, ale LIOS z pewnością jest warty wypróbowania, zwłaszcza że już niebawem ma ukazać się wersja 2.0, która ma przynieść nowości.

Podsumowanie

Wygląda na to, że kwestia rozpoznawania tekstu na Linuxie wygląda co raz lepiej. Przetestowane przeze mnie 2 silniki dają bardzo dobre wyniki. Rozpoznane teksty są w pełni używalne i wymagają jedynie formatowania. Wydaje mi się, że na domowe potrzeby w zupełności to wystarczy.
Z pewnością oba programy zapewniają tylko podstawową funkcjonalność, a rozpoznawanie złożonych dokumentów, zawierających tabele, elementy graficzne, byłoby bardzo uciążliwe. Pod tym względem Abby FineReader jest o dwie klasy lepszym narzędziem. Ma też swoją cenę.

Aktualizacja

Idąc za słuszną sugestią Januszka, wzbogacam test o rozpoznanie tekstu sfotografowanego. Obraz pozyskany skanerem ma najwyższą możliwą jakość. Sam byłem ciekaw jak wypadnie najlepszy silnik w trudniejszych warunkach. Zrobiłem więc koszmarne zdjęcie komórką, które zamieszczam poniżej, aby lepiej uzmysłowić czytelnikowi stopień komplikacji. Jak widać kadr jest niedoświetlony, aparat nie był do końca w zenicie, a dodatkowo całość lekko uchwycona ze skosu. Jutro, przy lepszym świetle, zrobię jeszcze dodatkowe zdjęcia i wzbogacę wpis nowymi wynikami.

Pierwsza próba rozpoznania tekstu była dosyć nieudana. Zaznaczenie ręcznie całej strony spowodowało pominięcie niektórych fragmentów. Dlatego w drugim podejściu podzieliłem cały tekst na 3 bloki i rozpoznawałem każdy z bloków oddzielnie.

Błędy 12/320 - przy czym zdecydowanie ucierpiał tekst na lewym marginesie, gdzie jest najciemniejszy fragment. Środkowa część zdjęcia została rozpoznana bardzo dobrze. Spodziewam się lepszych wyników przy lepszym świetle.

Zgodnie z przewidywaniami, zdjęcie wykonane aparatem fotograficznym z lampą błyskową zostało rozpoznane niemal idealnie. Zdjęcie zostało nieznacznie poprawione w programie graficznym - podniesiony został kontrast.

Błędy: 3/320 - "0" zamiast "o", brak spacji po myślniku, brak kropki w domenie.

W odpowiedzi na prośby z komentarzy, przetestowałem też zeskanowaną stronę z książki. Wybrałem programowanie, ponieważ na jednej stronie pojawia się kilka różnych czcionek, a w dodatku pojawiają się znaki specjalne, np. ampersandy, które dodatkowo mogą zmylić OCR'a. Jak być może widać za zdjęciu powyżej, tusz z drugiej strony kartki przebija nieco w miejscach nie zapełnionych tekstem. Wydaje mi się, że nie wpłynęło to jednak na jakość rozpoznania. Linie poziome z góry i dołu strony zostały automatycznie pominięte przy rozpoznawaniu. W jednym miejscu pojawił się ciąg krzaczków nie związany z żadnym wyrazem.

Błędy 10/320 plus wspomniane krzaczki do usunięcia. Moim zdaniem jest to całkiem niezły wynik.  

linux oprogramowanie porady

Komentarze

0 nowych
dr.boczek   7 #1 22.10.2014 16:31

powiem szczerze, że jestem zaskoczony - jak na linuxa to całkiem dobry wynik. Żeby jeszcze skaner mi działał... :)

xomo_pl   20 #2 22.10.2014 17:55

zawsze można też użyć Aby OCR Online po rejestracji bezpłatnej :)

januszek   18 #3 22.10.2014 21:18

@kaisuj: Czy możesz zrobić podobny test, z taką zmianą, że dokument źródłowy nie będzie zeskanowany tylko sfotografowany?

kaisuj   10 #4 22.10.2014 21:30

@januszek: Oczywiście, ze mogę. Mogę nawet użyć różnych rejestratorów obrazu:) Podejrzewam, że wyniki mogą wyjść nieco gorsze, ale zobaczymy. Sam jestem ciekawy.

januszek   18 #5 22.10.2014 21:32

@kaisuj: O, np kamerka jakaś na usb ;)

DjLeo MODERATOR BLOGA  17 #6 22.10.2014 22:07

Początkowo nie wiedziałem co z tym wpisem począć. Nie jest to prosta sprawa z tym ocenianiem. Niektóre wpisy są trudne do rozpracowania w kategoriach nadaję się czy nie. Ale ze względu na soft, który może się innym przydać myślę, że warto by był na głównej.

Kpc21   9 #7 22.10.2014 22:29

Co do aparatu fotograficznego - proponuję podjąć próbę ze zdjęciem z aparatu ale obrobionym w programie graficznym tak żeby tło było jednolite, a litery mniej więcej o tej samej jasności.

lucas__   13 #8 22.10.2014 22:31

@@kaisuj Takich wpisów potrzebuje ten blog, także wielki plus za tematykę ;)

DjLeo MODERATOR BLOGA  17 #9 22.10.2014 22:36

@lucas__: Nie tylko tematyka jest ważna, ale też jak wpis został zrobiony i cała masa innych czynników.

pocolog   11 #10 22.10.2014 22:47

Swietny temat podjales i widze ze ostatnio w formie :) Dodawanie kolejnych aparatow mija sie z celem, za to proba przeskanowania fragmentu ksiazki to cos co czesciej jest potrzebne niz robienie zdjec kamera laptopa ;)
Skan swiezo wydrukowanej strony jest slabym testem, problemy zaczynaja sie przy wygietej lekko pobrudzonej stronie ksiazki, czesto na slabej jakosci papierze (nowe ksiazki mozna dostac w formie elektroniczej ;)

lucas__   13 #11 22.10.2014 23:01

@DjLeo: Co powiesz na wpis w którym wypunktujesz tę "masę innych czynników"?

przemo188   8 #12 22.10.2014 23:07

Widzę,że mój wpis w tamtym artykule pokazujący, że z OCR nie jest wcale tak żle został przeczytany przez autora. Choć tam , w temacie został przemilczany. A umieściłem własne zrzuty teksty z prób na screenschotach.

http://www.dobreprogramy.pl/kaisuj/Windows-8.1-vs.-Linux-Mint-17-XFCE-porownanie...

DjLeo MODERATOR BLOGA  17 #13 23.10.2014 00:21

@lucas__: nie ma idealnej recepty, czy schematu. Ale jeżeli już coś można by podać, to na pewno wpis nie może być chaotyczny w sensie technicznym. Ten trochę jest. Ale znowu są inne czynniki, które przeważają. Uwierz gdyby było coś takiego jak sztywne kryteria to bym się bardzo cieszył. Ale nie ma i być nie może. To kwestia wyczucia i wrażliwości, nic więcej. Zawsze ktoś się nie będzie zgadzać, zawsze ktoś uzna, że coś powinno lub nie dostać się na główna. Jeżeli wpis jest ładnie zrobiony, schludnie, opisuje coś ciekawego w blogowy sposób, a nie tak, że totalnie nie wiadomo o co chodzi, nie zawiera 3 linijek tekstu i co najważniejsze widać w nim zaangażowanie autora, to taki wpis zawsze i bezsprzecznie trafi na główną bloga. Każdy patrzy na to inaczej. Wspomniana przez Ciebie Plasma według Ciebie powinna być na głównej strony i może by tam trafiła. Ale jak popatrzysz na swój wpis bez emocji, zauważysz, że to nic więcej jak opis kilku zmian, w dodatku nie jakiś przełomowych. Taki wpis, mimo iż szczytny cel mu przyświeca po prostu nie jest w żaden sposób wyróżniający się. Tak na to trzeba patrzeć czasami. Na chłodno. Ale był na tyle dobry aby trafić na główna bloga, bo spełniał te warunki o jakich mówiłem. To generalnie przerypana funkcja i już mi to kilka osób zresztą mówiło. Ale staram się to robić najlepiej jak potrafię, nie mi oceniać czy robię to dobrze czy źle i dla kogo to jest robione dobrze. Póki co nie mam sobie nic do zarzucenia, na główną nie trafiło nic z mojej ręki co się na nią nie nadawało. Robię to najlepiej jak potrafię i robię w dodatku coś dużo ważniejszego, czyli staram się pomagać innym. Ja tam wierzę w blogi, uważam, że można jeszcze sporo zrobić aby społeczność na tym skorzystała.

Trebron   7 #14 23.10.2014 00:27

Bardzo fajny wpis. Całkiem całkiem wyniki. Choć 13 błędów na stronę przy OCRowaniu 50 stron daje już 650. Czyli zaczyna być nieciekawie. Chętnie zobaczyłbym, jak to wyglądają na tle komercyjnego FineReadera od Abbyy ;).

command-dos   17 #15 23.10.2014 06:01

Jestem ciekaw, jak wypada przy tym ocr od google (na tych samych próbkach). Dodatkowo ciekawi mnie, jak wygląda sprawa z pismem odręcznym (rozpoznawanie literek i cyfr). Nic nie wspomniałeś o możliwości "uczenia się" programów - jest taka opcja, żeby oswoić jakoś te procedury rozpoznawania? Tego mi brakło, we wpisie ;) Ale fajnie, że temat poruszony - przyda się zapewne choćby ze względu na wymienione programy.

bystryy   9 #16 23.10.2014 08:38

Jeszcze nie spotkałem programu OCR na żadnym systemie, który radziłby sobie z językiem polskim na zadowalającym poziomie.

  #17 23.10.2014 09:40

A ja mam pytanie jak się na linuxie sprawuje to: http://www.abbyy.com/ocr_sdk_linux/

ekloszard   6 #18 23.10.2014 11:17

Fajny wpis, obydwa rozwiązania nadają się do okazjonalnego wykorzystania lub niewielkiej ilości stron, z uwagi na konieczność poprawek. Jakby się trafił stary, dwustronny maszynopis z poprawkami to dopiero byłaby jazda.

Szkoda, że ABBYY nie wypuściło swojego pakietu na linuksa. ABBYY FineReader Engine EPS nie liczę, bo dla Kowalskiego czy małej firmy marny z tego pożytek.

  #19 23.10.2014 11:29

@bystryy: FineReader radzi sobie lepiej niż zadowalająco.


No dobra to teraz jeszcze pismo "ręczne" poproszę i zobaczymy najlepszy test rozpoznawania. Bo akurat jeżeli chodzi o materiały drukowane to obecne metody rozpoznawania są już na bardzo wysokim poziomie. Gorzej zaczyna się z pismem odręcznym, a wiadomo że nie każdy ma "ładny" charakter pisma.

krisp   5 #20 23.10.2014 11:45

@bystryy: jest płatny abby finereader, ten daje radę w 95% ale jest pod win i mac.

Dawno temu też bawiłem się linuksem i znam ten problem. Też szukałem wtedy jakiegoś programy do OCR, programy jakieś były ale sobie nie radziły z polskim językiem. To był jeden z powodów porzucenia linuksa w ogóle, drugim powodem była niska jakość oferowanych programów. To były czasy RedHata 7.3.

lucas__   13 #21 23.10.2014 12:39

@DjLeo: W tym kontekście chodziło mi o stronę główną bloga. Strona główna portalu, no cóż to jest odrębna kwestia i dlatego nie zamierzam robić offtopu ;)

bystryy   9 #22 23.10.2014 12:45

@Anonim (niezalogowany): "Gorzej zaczyna się z pismem odręcznym"

Z rozpoznawaniem druku też nie jest najlepiej, jak używa się innych czcionek niż Arial i Times New Roman. Wystarczy spróbować z "gotykiem"...

http://upload.wikimedia.org/wikipedia/commons/c/c0/Evolution_of_minuscule.svg
http://upload.wikimedia.org/wikipedia/commons/6/6f/I_littera_in_manuscripto.jpg

Autor edytował komentarz.
kaisuj   10 #23 23.10.2014 13:23

@Anonim (niezalogowany): Szczerze mówiąc miałem problemy z odpaleniem. Instalacja w sumie przebiegła bezproblemowo. Aktywacja też. Ale przy odpaleniu pokazuje mi, że binarka nie jest binarką, mimo że ma +x.
Ponieważ tesseract działa dobrze, dałem sobie spokój.

Autor edytował komentarz.
DjLeo MODERATOR BLOGA  17 #24 23.10.2014 13:43

@lucas__: A jak tak, to w sumie podałem na tacy co musi mieć wpis. Zresztą ta wiedza jest chyba powszechnie znana. Wiele razy moderatorzy pisali o tym. Są wpisy, które jednak ciężko ocenić. Jak zresztą sam wiesz.

grapeli23   5 #25 23.10.2014 14:06

OCR to niezwykle skomplikowany proces, aby uzyskać zadawalające efekty, to nie tylko potrzebne są dobre narzędzia, ale wiedza i doświadczenie w tym zakresie. To trochę tak jak z kodowaniem materiałów wideo. Wielu wydaje się że nie ma nic prostszego, ale mało kto zna się na tym dobrze i potrafi robić to profesjonalnie.

Tesseract to jeden z najlepszych silników, który ma ogromne możliwości w tym może przechodzić proces treningu. Jak z jego pomocą uzyskać zadawalające efekty, jakich narzędzi użyć do wstępnej obróbki (Scan Tailor).
https://code.google.com/p/tesseract-ocr/wiki/ImproveQuality
Ilość opcji Tesseract jest naprawdę duża.
http://www.sk-spell.sk.cx/tesseract-ocr-parameters-in-302-version
Jak z pomocą Leptoniki poddać wstępnej obróbce materiał wejściowy.
http://www.sk-spell.sk.cx/through-tesseract-ocr-eye

jaras67   2 #26 23.10.2014 15:31

Do konwersji jakichkolwiek plików graficznych polecenie convert w pakiecie imagemagic ( z tego korzysta m.in. Photoshop, Corel itp. innaczej by nic nie mieli). Polecenie: convert plik.jpg plik.pdf można też na odwrót. Obsługuje praktycznie wszystko tif,tiff,gif,png,jpg,jpeg,pdf,ps,ai.

testowo   6 #27 23.10.2014 16:41

@bystryy: Dla mnie na zadowalającym poziomie radzi sobie ABBYY Screen Shoot 9, a mam go z PCFormatu.

Jedynie co do jego posiadania to chyba mi gazety brakuje, bo ona jest pewnie równie ważnym elementem jak CD z gazety.

lynx44   10 #28 23.10.2014 17:41

U mnie jak zawsze coś nie działa. Lios nie uruchamia się po zainstalowaniu z .deb, nie mogę znaleźć repo. A OCRFeeder nie zapisuje plików pdf i nawet nie raczy rzucić żadnym błędem że coś nie działa. Ech...