public void Dispose() { APaint.Dispose(); ACanvas.Dispose(); Android.Runtime.JNIEnv.DeleteGlobalRef(jHost); }
public void Dispose() { APaint.Dispose(); ACanvas.Dispose(); }
/// <summary> /// Get OCR text and draw lines on original photo /// </summary> /// <param name="imageBytes"></param> /// <param name="threshhold"></param> private async void PerformOCR(byte[] imageBytes, double threshhold) { if (_api.Initialized) { string resultText = ""; var result = await _api.SetImage(imageBytes); if (result) { resultText = _api.Text; bitmapWithBoxes = bitmap.Copy(bitmap.GetConfig(), true); Android.Graphics.Canvas canvas = new Android.Graphics.Canvas(bitmapWithBoxes); Android.Graphics.Color color = Android.Graphics.Color.IndianRed; Android.Graphics.Paint paint = new Android.Graphics.Paint(); paint.SetStyle(Android.Graphics.Paint.Style.Stroke); paint.StrokeWidth = 2; foreach (Tesseract.Result r in _api.Results(Tesseract.PageIteratorLevel.Textline)) { if (r.Confidence > 50) { paint.Color = Android.Graphics.Color.GreenYellow; } else if (r.Confidence > 10) { paint.Color = Android.Graphics.Color.DarkOrange; } else { paint.Color = Android.Graphics.Color.DarkRed; } canvas.DrawRect(r.Box.X, r.Box.Y, r.Box.X + r.Box.Width, r.Box.Y + r.Box.Height, paint); } canvas.Dispose(); Android.Util.Log.Info("tesseract result", resultText); PostProcessing pp = new PostProcessing(); pp.ProcessString(resultText); _data = pp.processedList; } } else { Toast.MakeText(this, "OCR not initialized.", ToastLength.Long).Show(); } }