Recognize image
Document Reader SDK provides the opportunity to recognize data from an image.
First of all, you need to check image browsing permissions.
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.EXTRA_ALLOW_MULTIPLE, true);
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), REQUEST_BROWSE_PICTURE);
}// creates and starts image browsing intent
// results will be handled in onActivityResult method
private fun createImageBrowsingRequest() {
    val intent = Intent()
    intent.type = "image/*"
    intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
    intent.action = Intent.ACTION_GET_CONTENT
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), REQUEST_BROWSE_PICTURE)
}Handle image browsing results:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
       //Image browsing intent processed successfully
        if (requestCode == REQUEST_BROWSE_PICTURE){
            if (data.getData() != null) {
                Uri selectedImage = data.getData();
                Bitmap bmp = getBitmap(selectedImage, 1920, 1080);
                DocumentReader.Instance().recognizeImage(bmp, completion);
             }
        }
    }
}override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (resultCode == Activity.RESULT_OK) {
        //Image browsing intent processed successfully
        if (requestCode == REQUEST_BROWSE_PICTURE) {
            if (data!!.data != null) {
                val selectedImage = data.data
                val bmp = getBitmap(selectedImage, 1920, 1080)
                loadingDialog = showDialog("Processing image")
                DocumentReader.Instance().recognizeImage(bmp, completion)
            }
        }
    }
}Handle scan results:
private IDocumentReaderCompletion completion = new IDocumentReaderCompletion() {
    @Override
    public void onCompleted(int action, DocumentReaderResults results, Throwable error) {
        // processing is finished, all results are ready
        if (action == DocReaderAction.COMPLETE) { 
            // scanning process was finished
        }                
    } else {
        // something happened before all results were ready
        if (action == DocReaderAction.CANCEL){
            Toast.makeText(MainActivity.this, "Scanning was cancelled",Toast.LENGTH_LONG).show();
        } else if(action == DocReaderAction.ERROR){
            Toast.makeText(MainActivity.this, "Error:" + error, Toast.LENGTH_LONG).show();
        }
    }
}private val completion = IDocumentReaderCompletion { action, results, error ->
    // processing is finished, all results are ready
    if (action == DocReaderAction.COMPLETE) {
        // scanning process was finished
    } else {
        // something happened before all results were ready
        if (action == DocReaderAction.CANCEL) {
            Toast.makeText(this@MainActivity, "Scanning was cancelled", Toast.LENGTH_LONG).show()
        } else if (action == DocReaderAction.ERROR) {
            Toast.makeText(this@MainActivity, "Error:$error", Toast.LENGTH_LONG).show()
        }
    }Last updated
Was this helpful?
