Po prostu zacząłem brudzić sobie ręce biblioteką Tesseract, ale wyniki są naprawdę bardzo złe.iOS Tesseract: złe wyniki
Postępowałem zgodnie z instrukcjami w repozytorium Git (https://github.com/gali8/Tesseract-OCR-iOS). Moja ViewController wykorzystuje następujące metody, aby rozpocząć rozpoznawanie:
Tesseract *t = [[Tesseract alloc] initWithLanguage:@"deu"];
t.delegate = self;
[t setVariableValue:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" forKey:@"tessedit_char_whitelist"];
[t setImage:img];
[t recognize];
NSLog(@"Recognized text: %@", [t recognizedText]);
labelRecognizedText.text = [t recognizedText];
t = nil;
próbki obrazu z tempalte projektu
działa dobrze (który mówi mi, że sam projekt jest ustawiony prawidłowo), ale gdy próbuję użyć inne obrazy, rozpoznany tekst to kompletny bałagan. Na przykład, próbowałem zrobić zdjęcie mojego wyszukiwarki wyświetlania obrazu próbki:
https://dl.dropboxusercontent.com/u/607872/tesseract.jpg (1,5 MB)
Ale Tesseract rozpoznaje:
Recognized text: s f l TO if v Ysssifss f
ssqxizg ss sfzzlj z
s N T IYIOGY Z I l EY s s
k Es ETL ZHE s UEY
z xhks Fsjs Es z VIII c
s I XFTZT c s h V Ijzs
L s sk sisijk J
s f s ssj Jss sssHss H VI
s s H
i s H st xzs
s s k 4 is x2 IV
Illlsiqss sssnsiisfjlisszxiij s
K
Nawet gdy biała lista zawiera jedynie charakter numery, nie uzyskać wynik nawet blisko tego, co obraz wygląda następująco:
Recognized text: 3 74 211
1
1 1 1
3 53 379 1
3 1 33 5 3 2
3 9 73
1 61 2 2
3 1 6 5 212 7
1
4 9 4
1 17
111 11 1 1 11 1 1 1 1
Zakładam, że jest coś złego w drodze fotos są zaczerpnięte z aparatu iPada mini, z którego obecnie korzystam, ale nie wiem, co i dlaczego.
Jakieś wskazówki?
Aktualizacja # 1
W odpowiedzi Tomas:
śledziłem tutorial w swoim poście, ale kilka błędów napotkanych po drodze ...
UIImage+OpenCV
kategoria nie może być używana w moim projekcie ARC- Nie mogę zaimportować
<opencv2/...>
w moich kontrolerów, autouzupełnianie nie oferuje go (a więc[UIImage CVMat]
nie jest zdefiniowana)
myślę, że jest coś nie tak z moim integracji OpenCV, choć następuje Hello-tutorial i dodał ramy. Czy muszę też zbudować OpenCV na moim Macu, czy wystarczy tylko dołączyć framework do mojego projektu Xcode?
Ponieważ ja naprawdę nie wiem, co można uznać za „ważne” w tym punkcie (ja już przeczytać kilka postów i samouczków i próbowałem różnych czynności), nie krępuj się zapytać :)
Aktualizacja # 2
@ Tom: dzięki, ARC-część była niezbędna. Mój ViewController został już przemianowany na .mm
. Zapomnij o części dotyczącej "nie można zaimportować programu opencv2 /", ponieważ już go zawarłem w moim TestApp-Prefix.pch
(jak podano w samouczku "Cześć").
do następnego wyzwania;)
Zauważyłem, że kiedy używać zdjęć wykonanych za pomocą aparatu, granice dla obiektu roi
nie oblicza się pomyślnie. Bawiłem się z orientacją urządzenia i umieszczałem w moim widoku UIImage
, aby zobaczyć kroki przetwarzania obrazu, ale czasami (nawet gdy obraz jest prawidłowo wyrównany) wartości są ujemne, ponieważ if
-warunek w bounds.size()
- for
-oop isn ' t spełnione. Najgorszy przypadek jaki miałem: minX/Y i maxX/Y nigdy nie zostały dotknięte. Krótka historia: linia zaczynająca się od Mat roi = inranged(cv::Rect(
zgłasza wyjątek (asercja nie powiodła się, ponieważ wartości były < 0
). Nie wiem, czy liczba konturów ma znaczenie, ale zakładam, że im większy obraz, tym bardziej prawdopodobny jest wyjątek zapewniania.
Szczerze mówiąc: Nie miałem czasu, aby przeczytać dokumentację OpenCV i zrozumieć, co robi twój kod, ale od tej chwili nie sądzę, żeby istniała jakakolwiek droga. Wydaje się, niestety, dla mnie, moje początkowe zadanie (potwierdzenie skanowania, uruchomienie OCR, wyświetlanie pozycji w tabeli) wymaga więcej zasobów (= czasu) niż myślałem.
Dzięki za porady, zaktualizowałem moje pytanie. – Dennis
Zaktualizowałem sekcję notatek z kilkoma komentarzami: –
Dziękujemy! Poprawiłem Twój post i ponownie edytowałem moje pytanie. – Dennis