I am trying to use the tess-two library to recognize text from imagae.
Here is my code:
load.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// recognize text
Bitmap temp = loadJustTakenImage(); //loads taken image from sdcard
Bitmap rotatedImage = rotateIfNeeded(temp); // rotate method i found in some tutorial
String text1 = recognizeText(rotatedImage);
}
});
Recognize text method:
(tessdata folder is in Download with the eng.traineddata and other files)
private String recognizeText(Bitmap bitmap) {
// TODO Auto-generated method stub
TessBaseAPI baseApi = new TessBaseAPI();
// DATA_PATH = Path to the storage
// lang = for which the language data exists, usually "eng"
baseApi.init(Environment.getExternalStorageDirectory().toString()
+ "/Download/", "eng");
// Eg. baseApi.init("/mnt/sdcard/tesseract/tessdata/eng.traineddata",
// "eng");
baseApi.setImage(bitmap);
String recognizedText = baseApi.getUTF8Text();
baseApi.end();
return recognizedText;
}
rotate image method:
private Bitmap rotateIfNeeded(Bitmap bitmap) {
ExifInterface exif = null;
try {
exif = new ExifInterface(directoryPath+"/"+currentFileName+".jpg");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int exifOrientation = exif
.getAttributeInt(ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_NORMAL);
int rotate = 0;
switch (exifOrientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
rotate = 90;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotate = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_270:
rotate = 270;
break;
}
if (rotate != 0) {
int w = bitmap.getWidth();
int h = bitmap.getHeight();
// Setting pre rotate
Matrix mtx = new Matrix();
mtx.preRotate(rotate);
// Rotating Bitmap & convert to ARGB_8888, required by tess
bitmap = Bitmap.createBitmap(bitmap, 0, 0, w, h, mtx, false);
}
bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
return bitmap;
}
the text I am getting is a real mess, for example
for this image:
I got this text:
,7‘
Sometimes I just get an empty String.
What am I doing wrong?