Overview
Android applications may leverage on OCR Plugin to capture text from real books and newspapers.
You as Android developer may send a request from your Android application to the OCR plugin to capture a word. The request has to be sent via a specific intent towards the OCR plugin.
Your application has to create an intent with an action equal to livio.intent.action.CAPTURE, using the package name of the OCR plugin and adding the required parameters to the intent.
The following parameters can be added to the request:
parameter | description | example value | support |
version (optional) | required version an error is returned if you specify an unsupported version | 1 | any version |
language (optional) | language code (ISO 639-1) | en | any version |
regexp (optional) | regular expression used to validate text syntax is described in Pattern class | [\\p{L}]* | any version |
ignore (optional) | characters to discard, can be either 'numeric' or 'numeric|special' or 'special' | special | any version |
mode (optional) | capture mode (reserved, not implemented yet) | | |
The OCR Plugin may return the recognized text (if any), an empty result or an error.
In case text has been identified, OCR Plugin returns the following information:
result code | parameter | description |
RESULT_OK | version (mandatory) | supported version |
text (mandatory) | recognized text |
language (optional) | language code (reserved, not implemented yet) |
In case no text has been identified or an error occured, OCR Plugin returns the following information:
result code | parameter | description |
RESULT_CANCELED | version (optional) | supported version |
reason (optional) | explanation of the error, if any |
Example
Here is an example to capture a text without numbers. Make sure to install the latest version of the OCR plugin on your Android device.
General documentation about developing Android applications is available in Android Developers web site.
We create an intent to activate the OCR Plugin:
Intent intent = new Intent("livio.intent.action.CAPTURE");
intent.setPackage("livio.plugin.ocr");
intent.putExtra("ignore", "numeric");
if (isIntentAvailable(this, intent)) // check if intent is available ?
startActivityForResult(intent, REQUEST_CAMERA_INPUT);
else {ask the user to install the OCR Plugin}
Note that in case the intent is not available, you may insert a dialog suggesting the user to download the OCR Plugin.
Now we have to handle the response returned by OCR Plugin:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CAMERA_INPUT) {
if ((resultCode == RESULT_OK) && (data != null)) {//got text!
String text = data.getStringExtra("text");
//now capture text is stored in 'text', do whatever is needed...
} else if (resultCode == RESULT_CANCELED) {//cancelled or error
if (data != null) {
String reason = data.getStringExtra("reason");
if (reason != null) {
//print the error, if needed
}
}
}
}
}
|