Originariamente inviato da
entity
Salve, premetto che è da poco che ho iniziato lo sviluppo su android.
Qualcuno sa darmi indicazioni o esempi su come realizzare un programma OCR per android?
Devo scattare una foto e riconoscere un numero/codice.
Ciao,
se può interessarti ho utilizzato nella mia app la process library zxing - Multi-format 1D/2D barcode image processing library with clients for Android, Java - Google Project Hosting per il riconoscimento dei barcode ean, funziona egregiamente.
Se usi eclipse, devi creare la folder 'libs' nel tuo progetto, copiare lì il file .jar della libreria zxing, dopodichè implementare nell'app una classe di 'implementazione' simile a questa (esempio):
codice:
package mia.applicazione.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
public class AndroidScanner extends Activity {
TextView format=null;
TextView contents=null;
Bundle bundlescanner;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.screen3);
format=(TextView)findViewById(R.id.format);
contents=(TextView)findViewById(R.id.contents);
Button confermaScansione = (Button) findViewById(R.id.pulsanteConfermaBarCode);
confermaScansione.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0){
Intent intent = new Intent();
intent.putExtra("formato", format.getText().toString());
intent.putExtra("codiceletto", contents.getText().toString());
setResult(RESULT_OK,intent);
finish();
}
});
}
public void doScan(View v) {
IntentIntegrator.initiateScan(this);
}
public void onActivityResult(int request, int result, Intent i) {
IntentResult scan=IntentIntegrator.parseActivityResult(request,result, i);
if (scan!=null) {
format.setText(scan.getFormatName());
contents.setText(scan.getContents());
}
}
@Override
public void onSaveInstanceState(Bundle state) {
state.putString("format", format.getText().toString());
state.putString("contents", contents.getText().toString());
}
@Override
public void onRestoreInstanceState(Bundle state) {
format.setText(state.getString("format"));
contents.setText(state.getString("contents"));
}
}
oltre a queste due: http://code.google.com/p/zxing/sourc...ntegrator.java
http://code.google.com/p/zxing/sourc...entResult.java
a cui è associata la view di questo layout (xml):
codice:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Avvia Scansione!"
android:onClick="doScan"
/>
<TextView android:id="@+id/format"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<View
android:layout_width="fill_parent"
android:layout_height="2dip"
android:background="#FF0000FF"
/>
<TextView android:id="@+id/contents"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/pulsanteConfermaBarCode"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Conferma BarCode"
/>
</LinearLayout>