Rozpoznawanie obrazów w OpenWrt
Ostatnia zmiana: 2013-11-26 18:42
OCR czyli ogólnie mówiąc program do przetwarzania obrazów na tekst, wykorzystywany jest głównie do
skanowania dokumentów czy książek. W OpenWrt znajdziemy program do tego, który niedawno zostawał uwolniony -
tesseract. Można go wykorzystać go różnych celów, np. odczytu danych z jakiegoś licznika (robimy fotkę i rozpoznajemy stan licznika) lub do autoryzacji w niektórych serwisach - wykorzystuje go np.
pyload.
Uwaga:
tesseract nie jest idealnym programem. Aby działa poprawnie, obraz wejściowy musi być dobrej jakości, czytelny, mało zamazany, o dobrym kontraście (litery muszą się znacznie różnić od tła). Kiepskiej jakości obrazki, zamazane, poruszone nie sprawdzą się.
Obraz do rozpoznawania
Można wykonać zdjęcie wykorzystując kamerę internetową i
fswebcam. Powyższa metoda sprawdzi się więc do odczytania np. wspomnianego już licznika, z którego nie ma jak inaczej odczytać wartości. Można także podać dowolne inne zdjęcie zrobione aparatem cyfrowym.
Do celów testowych i napisania tego poradnika wykorzystano następujący obrazek:

Instalacja OCR
Podstawowy problem - ilość wolnego miejsca. O ile sam program nie zajmuje wiele, o tyle biblioteki z których korzysta to wymagane kilkanaście wolnych megabajtów. Więc prawdopodobnie
extroot będzie niezbędny.
# opkg update
# opkg install tesseract
Oprócz samego programu niezbędne są już wspomniane dane do rozpoznawania liter. Dostępne są one na stronie projektu:
http://code.google.com/p/tesseract-ocr/downloads/list - na początek wystarczy plik
http://code.google.com/p/tesseract-ocr/downloads/detail?name=eng.traineddata.gz , który należy pobrać, rozpakować i umieścić w katalogu
/usr/share/tessdata/ pod nazwą
eng.traineddataUruchomienie
# tesseract /mnt/sda1/plik.jpg wynik
Tesseract Open Source OCR Engine v3.02.02 with Leptonica
#
Gdzie pierwszy argument to nazwa przetwarzanego pliku, drugi - nazwa (bez rozszerzenia) pliku w którym zostanie zapisany wynik skanowania (dodanie dodane do niego
.txt).
Jeżeli program zostanie zakończony w błędem należy użyć jednego z dostępnych przełączników (np. -psm).
Testy
Język angielski
# tesseract /mnt/sda1/plik.jpg wynik1
Przedstawiony plik został poddany programowi do rozpoznawania tekstu. Plik jest wyraźny, litery są czytelne. Wynik działania:
# cat wynik1.txt
Tutaj moiemy umieécié Twojq REKLAME
Prawie dobrze, choć nie ma polskich liter.
Język polski
Wymaga doinstalowania dodatkowego pliku do rozpoznawania danych -
http://code.google.com/p/tesseract-ocr/downloads/detail?name=tesseract-ocr-3.02.pol.tar.gz&can=2&q= , należy podobnie jak w poprzednim przypadku pobrać, rozpakować i umieścić w katalogu
/usr/share/tessdata/ pod nazwą
pol.traineddata. Sprawdzamy czy jest ten język dostępny:
# tesseract --list-langs
List of available languages (2):
eng
pol
Jeżeli tak jest - można wymusić język polski podczas skanowania
# tesseract /mnt/sda1/plik.jpg wynik2 -l pol
Tesseract Open Source OCR Engine v3.02.02 with Leptonica
Wynik działania:
# cat wynik2.txt
Tutaj możemy umieścić Twoją REKLAMĘ
Czyli w tym przypadku całkowicie się to sprawdziło.