2011-07-01 16 views
11

Chcę utworzyć program, który pobiera obraz jako tekst wejściowy i wyjściowy. Teraz wiem, że mogę użyć sieci neuronowej, aby przekształcić obraz pojedynczej postaci w tę postać. Najtrudniejsza część: biorąc pod uwagę obraz z tekstem, jak wytworzyć wszystkie prostokąty wokół każdej indywidualnej postaci?Jak utworzyć program OCR?

Jakiego rodzaju metody są stosowane w tym celu i czy ktoś wie o jakichkolwiek pracach badawczych, które omawiają, jak to zrobić? Dziękuję

Odpowiedz

8

Podstawową metodą jest utworzenie histogramu czarnych pikseli. Po pierwsze: wyświetlaj wszystkie piksele na linii. Głębokie doliny w histgram wskazują na separację między liniami (wypróbuj różne kąty, jeśli papier może być przechylony). Następnie, na linię (lub na stronę, jeśli wiesz, że czcionka jest niezmienna), wyświetlaj piksele na poziomym histogramie. Da ci to wyraźne wskazanie przestrzeni między znakami. Co najmniej daje to wartość średniej wysokości i szerokości znaków, które pomogą ci w kolejnych krokach.

Po tym należy zadbać o kerning (gdzie znaki zachodzą na siebie). Znajdź połączone piksele, prawdopodobnie najpierw wykonując dylatację lub erozję obrazu, aby skompensować artefakty skanowania.

W zależności od jakości skanowanego obrazu może być konieczne użycie bardziej zaawansowanych technik, ale to pomoże.

+0

To jest bardzo interesujące, ponieważ, chociaż myślę, że opisywana przez ciebie metoda będzie działać całkiem dobrze, nie może się nauczyć? Sieć neuronowa może zostać przeszkolona, ​​aby lepiej odczytywać poszczególne symbole, ale gdy jest już idealna, wykorzystując swoje pomysły, wydaje mi się, że może to być ograniczone przez tę część procedury. Czy sądzisz, że tak jest, czy też źle mnie oceniam? – quanta

+0

Ah, źle odczytałem twoje pytanie. Tradycyjne podejście polega na 1) poprawie obrazu 2) segmentacji 3) rozpoznaniu znaków (przy użyciu NN) 4) użyciu informacji kontekstowych (wyszukiwanie słownika lub stosowanie danych statystycznych). Zasadniczo możesz dokonać podziału na segmenty przy użyciu NN lub połączyć 2) i 3) używając NN. Ten ostatni będzie trudny, ale ma potencjalne zalety. Jeśli chcesz zastosować NN do segmentacji, musisz wymyślić dobre funkcje. Korzystanie z dolin histogramu może być jednym z nich (sam tego nie zrobiłem, więc naprawdę nie mogę przewidzieć wyniku). – Emile

+0

Gratulacje! Już prawie przekształciłeś transformację Hougha. –