2016-07-12 3 views
2

JNI를 사용하는 Android 용 OCR 앱과 OpenCV 및 Tesseract를 사용하는 C++로 개발 된 코드를 개발하고 있습니다. 앱에서 찍은 사진에서 영숫자 ID가있는 배지를 읽는 데 사용됩니다. enter image description heretesseract 결과의 품질 향상

내가 "읽기"에 대한 다음과 같은 기능을 썼다 :

나는 아래와 같이 "읽을 수있는 이미지"를 얻기 위해, 이미지의 전처리 취급 AN 부호를 개발 이미지 사용 정팔 포체 :

char* read_text(Mat input_image) 
{ 
    tesseract::TessBaseAPI text_recognizer; 
    text_recognizer.Init("/usr/share/tesseract-ocr/tessdata", "eng", tesseract::OEM_TESSERACT_ONLY); 
    text_recognizer.SetVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 
    text_recognizer.SetImage((uchar*)input_image.data, input_image.cols, input_image.rows, input_image.channels(), input_image.step1()); 
    text_recognizer.Recognize(NULL); 
    return text_recognizer.GetUTF8Text(); 
} 

예상되는 결과는 "KQ 978 A3705"하지만 내가 얻을 것은 "KO 978 H375"입니다.

https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality에서 이미지 품질을 개선하기위한 모든 권장 사항을 수행했습니다. 또한 https://github.com/tesseract-ocr/docs에서 문서를 읽으면서 "더 나은"기능을 얻으려면 다각형을 사용하는 이미지의 근사치를 사용했습니다. 나는 "KO 978 A3705"을 얻을,이 이미지와

enter image description here

: 내가 사용하는 이미지는 다음과 같이 하나입니다. 그 결과는 이전의 것보다 분명히 좋지만 괜찮지는 않습니다.

나는 tesseract로 전달 된 처리 된 이미지가 좋은 결과를 얻기에 충분하다고 생각하고 그것을 얻지 못한다. 내가 뭘해야할지 모르겠다. 그래서이 문제를 해결하기 위해 아이디어를 묻는다. 나는 정확한 결과가 필요하고 나는 내가 얻은 가공 된 이미지로 얻을 수 있다고 생각한다. 제발 제발! =)

+0

다른 글꼴 크기와 해상도를 사용해 보셨나요? 결과가 크게 영향을받습니다. – bradkratky

+0

글꼴 매개 변수를 관리 할 수 ​​없습니다. 내가 한 일은 결과를 크게 향상 시켰습니다. 제가 게시 한 첫 번째 이미지에서 약간의 팽창이 있었고 그 다음 그것을 tesseract – user3368457

답변

1

나는 약간의 팽창과 함께 ORC 결과가 놀라 울 정도로 향상되었음을 발견했다! 나를 위해, 그것은 해결책이었다

+0

에 전달했습니다. 특히 어느 것입니까? – bradkratky

+0

무엇 ?? * 해결책은 무엇 이었습니까? –

+0

OCR 전에 somo dilations 만들기 – user3368457