2016-04-20 9 views
2

Ich entwickle Android App mit Tesseract. Die Genauigkeit beträgt mehr als 85%. Allerdings möchte ich einige Einschränkungen bei der Ausgabe setzen, zB wenn kein Text gefunden wird oder kein sinnvolles Wort gefunden wird Ich möchte eine Fehlermeldung anzeigen. Ich habe Textfee angeschaut, aber ich konnte ihre Methode nicht verstehen. möchte ich die Ausgabe sinnvolles Wort oder Satz nicht nur zufällige Buchstaben sein .. Plz helfen Hier ist meine OCR Teilenummer:Tesseract OCR Ausgabewert

protected void onPhotoTaken() { 
    _taken = true; 

    BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inSampleSize = 4; 

    Bitmap bitmap = BitmapFactory.decodeFile(_path, options); 

    try { 
     ExifInterface exif = new ExifInterface(_path); 
     int exifOrientation = exif.getAttributeInt(
       ExifInterface.TAG_ORIENTATION, 
       ExifInterface.ORIENTATION_NORMAL); 

     Log.v(TAG, "Orient: " + exifOrientation); 

     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; 
     } 

     Log.v(TAG, "Rotation: " + rotate); 

     if (rotate != 0) { 

      // Getting width & height of the given image. 
      int w = bitmap.getWidth(); 
      int h = bitmap.getHeight(); 

      // Setting pre rotate 
      Matrix mtx = new Matrix(); 
      mtx.preRotate(rotate); 

      // Rotating Bitmap 
      bitmap = Bitmap.createBitmap(bitmap, 0, 0, w, h, mtx, false); 
     } 

     // Convert to ARGB_8888, required by tess 
     bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); 

    } catch (IOException e) { 
     Log.e(TAG, "Couldn't correct orientation: " + e.toString()); 
    } 

    // _image.setImageBitmap(bitmap); 

    Log.v(TAG, "Before baseApi"); 

    TessBaseAPI baseApi = new TessBaseAPI(); 
    baseApi.setDebug(true); 
    baseApi.init(DATA_PATH, lang); 
    baseApi.setImage(bitmap); 

    String recognizedText = baseApi.getUTF8Text(); 

    baseApi.end(); 

    // You now have the text in recognizedText var, you can do anything with it. 
    // We will display a stripped out trimmed alpha-numeric version of it (if lang is eng) 
    // so that garbage doesn't make it to the display. 

    Log.v(TAG, "OCRED TEXT: " + recognizedText); 

    if (lang.equalsIgnoreCase("eng")) { 
     recognizedText = recognizedText.replaceAll("[^a-zA-Z0-9]+", " "); 
    } 

    recognizedText = recognizedText.trim(); 

    if (recognizedText.length() != 0) { 
     _field.setText(_field.getText().toString().length() == 0 ? recognizedText : _field.getText() + " " + recognizedText); 
     _field.setSelection(_field.getText().toString().length()); 
    } 

    } 

}

+0

Möchten Sie etwas auf Foto schreiben? – raj

+0

Nein nach der Verarbeitung des Bildes, wenn kein Text gefunden oder Bild nicht klar Ich möchte den Benutzer –

Antwort

0

Sie Ihre Fehleranzeige in anderen Teil setzen können

if (recognizedText.length() != 0) { 
     _field.setText(_field.getText().toString().length() == 0 ? recognizedText : _field.getText() + " " + recognizedText); 
     _field.setSelection(_field.getText().toString().length()); 
    }else { 
//Toast 
//System.out.print 
} 
+0

Vielen Dank, aber leider tesseract gib mir zufällige Ausgabe, wenn kein Text wie Zeichenfolge von Buchstaben VBG Z8 und so weiter .. Ich möchte etwas tun das wird das verhindern. –

Verwandte Themen