/// <summary> /// Execute OCR on a given image, this static member will process the image, /// Safely open, execute and dispose a Tesseract Object and store the result /// in a new OcrData object. /// </summary> /// <param name="original"> Image to be OCR-ed </param> /// <param name="mode"> Accuracy setting </param> /// <param name="lang"> Language of text for OCR Language Model </param> /// <param name="enableTimer"> Measure the Scantime for Diagnostic purposes </param> /// <returns> </returns> public static OcrData Recognize(Bitmap original, Accuracy mode = Accuracy.High, string lang = "eng", bool enableTimer = false) { Image<Bgra, byte> img = new Image<Bgra, byte>(original); Image<Gray, byte> processed; Tesseract.Charactor[] chars; String text; long confidence; long scantime = Int64.MinValue; using (OCR ocr = new OCR(mode, lang, enableTimer)) { processed = ocr.Preprocess(img); ocr.Scan(processed); confidence = ocr.OverallCost(); chars = ocr.Charactors(); text = ocr.Text(); if (enableTimer) { scantime = ocr.Elapsed(); ocr.Stop(); } } img.Dispose(); if (scantime == Int64.MinValue) { return new OcrData(processed, chars, text, confidence); } return new OcrData(processed, chars, text, confidence, scantime); }