2010-03-09 13 views
16

Szukałem zasobów do rozpoznawania liczb w obrazach w Internecie. Znalazłem wiele linków dostarczających wiele zasobów na ten temat. Ale niestety jest to bardziej mylące niż pomoc, nie wiem od czego zacząć.Rozpoznawanie liczb na obrazach

Mam obraz z 5 liczbami, niezakłócony (bez captcha lub coś podobnego). Liczby są czarne na białym tle, napisane standardową czcionką.

Pierwszym krokiem było oddzielenie liczb. Algorytm, z którego obecnie korzystam, jest dość prosty, sprawdza tylko, czy kolumna jest całkowicie biała, a więc i spacja. Następnie przycina każdą postać, tak aby wokół niej nie było żadnej białej granicy. Działa to całkiem dobrze.

Ale teraz utknąłem z faktycznym rozpoznaniem numeru. Nie wiem, jaki jest najlepszy sposób na zgadnięcie właściwego. Nie wydaje mi się, żeby porównanie z czcionką było dobrym pomysłem, ponieważ jeśli liczby różnią się tylko nieznacznie, nie będą już działać.

Czy ktoś może dać mi wskazówkę, jak to zrobić?

To nie ma znaczenia dla pytania, ale będę realizował to w C# lub Java. Znalazłem kilka bibliotek, które wykonałyby tę pracę, ale sam chciałbym ją wdrożyć, aby się czegoś nauczyć.

Odpowiedz

14

Dlaczego nie spojrzeć na użycie silnika OCR typu open source, takiego jak Tesseract?

http://code.google.com/p/tesseract-ocr/

C# wrapper dla Tesseract

http://www.pixel-technology.com/freeware/tessnet2/

Java Wrapper dla Tesseract

http://sourceforge.net/projects/tessocrinjava/

Podczas migh Nie uważaj korzystania z biblioteki firm trzecich za jej implementację, istnieje ogromna praca polegająca tylko na zintegrowaniu narzędzia innej firmy. Pamiętaj też, że coś, co może wydawać się proste (rozpoznawanie liczby 5 w stosunku do liczby 6) jest często bardzo złożone; mówimy o tysiącach linii skomplikowanego kodu. Przynajmniej spójrz na kod źródłowy dla tesseract, a to da ci powód, by chcieć wykorzystać bibliotekę firm trzecich.

Oto kolejny SO pytanie, że dam Ci kilka pomysłów na temat algorytmów hte zaangażowanych: https://stackoverflow.com/questions/850717/what-are-some-popular-ocr-algorithms

+0

Dzięki za cynk. Właściwie nie jestem dobry w C/C++ i jest dużo kodu. Nadal mam nadzieję, że nie będę musiał próbować zrozumieć całego projektu OCR, tylko po to, aby nauczyć się rozpoznawania liczb. – svens

+0

To usunie potrzebę użycia C++ ... opakowanie C# jest całkiem proste. Jeśli nie chcesz stać się ekspertem w uczeniu maszynowym i optymalizacji obrazu, naprawdę nie chcesz wypróbowywać własnego rozwiązania OCR. –

+0

+1 Tesseract jest niesamowity. Możesz używać dowolnego języka, pod warunkiem, że wywołasz go w wierszu poleceń. – rook

Powiązane problemy