Recognize image

Document Reader SDK provides the opportunity to recognize data from an image.

First of all, you need to check image browsing permissions.

Xamarin.Android
Xamarin.iOS
Xamarin.Android

Start Intent for getting image:

// creates and starts image browsing intent
// results will be handled in onActivityResult method
private void CreateImageBrowsingRequest()
{
Intent intent = new Intent();
intent.SetType("image/*");
intent.PutExtra(Intent.ExtraAllowMultiple, true);
intent.SetAction(Intent.ActionGetContent);
StartActivityForResult(Intent.CreateChooser(intent, "Select Picture"), REQUEST_BROWSE_PICTURE);
}

Handle image browsing results:

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
if (resultCode == Result.Ok)
{
//Image browsing intent processed successfully
if (requestCode == REQUEST_BROWSE_PICTURE && data.Data != null)
{
var selectedImage = data.Data;
var bmp = GetBitmap(selectedImage, 1920, 1080);
loadingDialog = showDialog("Processing image");
DocumentReader.Instance().StopScanner();
DocumentReader.Instance().RecognizeImage(bmp, this);
}
}
}

Handle scan results:

public void OnCompleted(int action, DocumentReaderResults results, string error)
{
if (action == DocReaderAction.Complete)
{
Toast.MakeText(this, "Completed", ToastLength.Long).Show();
}
else
{
// something happened before all results were ready
if (action == DocReaderAction.Cancel)
{
Toast.MakeText(this, "Scanning was cancelled", ToastLength.Long).Show();
}
else if (action == DocReaderAction.Error)
{
Toast.MakeText(this, "Error:" + error, ToastLength.Long).Show();
}
}
}
Xamarin.iOS
void ShowScannerCompleted(RGLDocReaderAction action, RGLDocumentReaderResults result, string error)
{
switch (action)
{
case RGLDocReaderAction.Cancel:
Console.WriteLine("Cancelled by user");
break;
case RGLDocReaderAction.Complete:
Console.WriteLine("Completed");;
case RGLDocReaderAction.Error:
Console.WriteLine("Error string: " + error);
break;
case RGLDocReaderAction.Process:
Console.WriteLine("Scaning not finished. Result: " + result);
break;
}
}
void OnFinishedPickingMedia(object sender, UIImagePickerMediaPickedEventArgs e)
{
var image = e.Info[UIImagePickerController.OriginalImage] as UIImage;
if (image != null)
{
Console.WriteLine("got the original image");
docReader.RecognizeImage(image, false, ShowScannerCompleted);
}
else
{
Console.WriteLine("Something went wrong");
}
(sender as UIImagePickerController).DismissModalViewController(true);
}