public string Recognize() { bool InSameThread; int res; InSameThread = false; //perform OCR in non-blocking mode //InSameThread = true; //uncomment to perform OCR from this thread (GUI will be freezed) //perform OCR itself if (InSameThread) { res = NsOCR.Img_OCR(ImgObj, TNSOCR.OCRSTEP_ZONING, TNSOCR.OCRSTEP_LAST, TNSOCR.OCRFLAG_NONE); } else { //do it in non-blocking mode and then wait for result res = NsOCR.Img_OCR(ImgObj, TNSOCR.OCRSTEP_ZONING, TNSOCR.OCRSTEP_LAST, TNSOCR.OCRFLAG_THREAD); if (res > TNSOCR.ERROR_FIRST) { ShowError("Ocr_OcrImg(1)", res); return(string.Empty); } res = TNSOCR.ERROR_PENDING; while (res == TNSOCR.ERROR_PENDING) { Application.DoEvents(); res = NsOCR.Img_OCR(ImgObj, 0, 0, TNSOCR.OCRFLAG_GETRESULT); } } if (res > TNSOCR.ERROR_FIRST) { if (res == TNSOCR.ERROR_OPERATIONCANCELLED) { System.Windows.Forms.MessageBox.Show("Operation was cancelled."); } else { ShowError("Img_OCR", res); return(string.Empty); } } int flags = false ? TNSOCR.FMT_EXACTCOPY : TNSOCR.FMT_EDITCOPY; string txt; NsOCR.Img_GetImgText(ImgObj, out txt, flags); return(txt); }