Android Open Source - nsa-away Ocr Result






From Project

Back to project page nsa-away.

License

The source code is released under:

GNU General Public License

If you think the Android project nsa-away listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright 2011 Robert Theis//from   w  w w  . j a  va 2 s  . co  m
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.sector67.nsaaway.ocr.complex;

import java.util.List;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Point;
import android.graphics.Rect;

/**
 * Encapsulates the result of OCR.
 */
public class OcrResult {
  private Bitmap bitmap;
  private String text;
  
  private int[] wordConfidences;
  private int meanConfidence;

  private List<Rect> regionBoundingBoxes;
  private List<Rect> textlineBoundingBoxes;
  private List<Rect> wordBoundingBoxes;
  private List<Rect> stripBoundingBoxes;  
  private List<Rect> characterBoundingBoxes;

  private long timestamp;
  private long recognitionTimeRequired;

  private Paint paint;
  
  public OcrResult(Bitmap bitmap,
                   String text,
                   int[] wordConfidences,
                   int meanConfidence,
                   List<Rect> regionBoundingBoxes,
                   List<Rect> textlineBoundingBoxes,
                   List<Rect> wordBoundingBoxes,
                   List<Rect> stripBoundingBoxes,
                   List<Rect> characterBoundingBoxes,
                   long recognitionTimeRequired) {
    this.bitmap = bitmap;
    this.text = text;
    this.wordConfidences = wordConfidences;
    this.meanConfidence = meanConfidence;
    this.regionBoundingBoxes = regionBoundingBoxes;
    this.textlineBoundingBoxes = textlineBoundingBoxes;
    this.wordBoundingBoxes = wordBoundingBoxes;
    this.stripBoundingBoxes = stripBoundingBoxes;
    this.characterBoundingBoxes = characterBoundingBoxes;
    this.recognitionTimeRequired = recognitionTimeRequired;
    this.timestamp = System.currentTimeMillis();
    
    this.paint = new Paint();
  }

  public OcrResult() {
    timestamp = System.currentTimeMillis();
    this.paint = new Paint();
  }

  public Bitmap getBitmap() {
    return getAnnotatedBitmap();
  }
  
  private Bitmap getAnnotatedBitmap() {
    Canvas canvas = new Canvas(bitmap);
    
    // Draw bounding boxes around each word
    for (int i = 0; i < wordBoundingBoxes.size(); i++) {
      paint.setAlpha(0xFF);
      paint.setColor(0xFF00CCFF);
      paint.setStyle(Style.STROKE);
      paint.setStrokeWidth(2);
      Rect r = wordBoundingBoxes.get(i);
      canvas.drawRect(r, paint);
    }    
    
//    // Draw bounding boxes around each character
//    for (int i = 0; i < characterBoundingBoxes.size(); i++) {
//      paint.setAlpha(0xA0);
//      paint.setColor(0xFF00FF00);
//      paint.setStyle(Style.STROKE);
//      paint.setStrokeWidth(3);
//      Rect r = characterBoundingBoxes.get(i);
//      canvas.drawRect(r, paint);
//    }
    
    return bitmap;
  }
  
  public String getText() {
    return text;
  }

  public int[] getWordConfidences() {
    return wordConfidences;
  }

  public int getMeanConfidence() {
    return meanConfidence;
  }

  public long getRecognitionTimeRequired() {
    return recognitionTimeRequired;
  }

  public Point getBitmapDimensions() {
    return new Point(bitmap.getWidth(), bitmap.getHeight()); 
  }
  
  public List<Rect> getRegionBoundingBoxes() {
    return regionBoundingBoxes;
  }
  
  public List<Rect> getTextlineBoundingBoxes() {
    return textlineBoundingBoxes;
  }
  
  public List<Rect> getWordBoundingBoxes() {
    return wordBoundingBoxes;
  }
  
  public List<Rect> getStripBoundingBoxes() {
    return stripBoundingBoxes;
  }
  
  public List<Rect> getCharacterBoundingBoxes() {
    return characterBoundingBoxes;
  }
  
  public long getTimestamp() {
    return timestamp;
  }
  
  public void setBitmap(Bitmap bitmap) {
    this.bitmap = bitmap;
  }
  
  public void setText(String text) {
    this.text = text;
  }

  public void setWordConfidences(int[] wordConfidences) {
    this.wordConfidences = wordConfidences;
  }

  public void setMeanConfidence(int meanConfidence) {
    this.meanConfidence = meanConfidence;
  }

  public void setRecognitionTimeRequired(long recognitionTimeRequired) {
    this.recognitionTimeRequired = recognitionTimeRequired;
  }
  
  public void setRegionBoundingBoxes(List<Rect> regionBoundingBoxes) {
    this.regionBoundingBoxes = regionBoundingBoxes;
  }
  
  public void setTextlineBoundingBoxes(List<Rect> textlineBoundingBoxes) {
    this.textlineBoundingBoxes = textlineBoundingBoxes;
  }

  public void setWordBoundingBoxes(List<Rect> wordBoundingBoxes) {
    this.wordBoundingBoxes = wordBoundingBoxes;
  }
  
  public void setStripBoundingBoxes(List<Rect> stripBoundingBoxes) {
    this.stripBoundingBoxes = stripBoundingBoxes;
  }

  public void setCharacterBoundingBoxes(List<Rect> characterBoundingBoxes) {
    this.characterBoundingBoxes = characterBoundingBoxes;
  }
  
  @Override
  public String toString() {
    return text + " " + meanConfidence + " " + recognitionTimeRequired + " " + timestamp;
  }
}




Java Source Code List

org.sector67.nsaaway.CreateAKeyActivity.java
org.sector67.nsaaway.DisplayCiphertextActivity.java
org.sector67.nsaaway.DisplayPlaintextActivity.java
org.sector67.nsaaway.EnterCiphertextActivity.java
org.sector67.nsaaway.EnterPlaintextActivity.java
org.sector67.nsaaway.KeyChooserActivity.java
org.sector67.nsaaway.KeyChooserDialogFragment.java
org.sector67.nsaaway.KeyManagerActivity.java
org.sector67.nsaaway.MainActivity.java
org.sector67.nsaaway.SettingsActivity.java
org.sector67.nsaaway.SettingsFragment.java
org.sector67.nsaaway.SimpleOCRActivity.java
org.sector67.nsaaway.android.AlertUtils.java
org.sector67.nsaaway.file.AbstractFileUtils.java
org.sector67.nsaaway.file.DirectoryChooserActivity.java
org.sector67.nsaaway.file.FileUtilsFactory.java
org.sector67.nsaaway.file.FileUtils.java
org.sector67.nsaaway.file.KitKatFileUtils.java
org.sector67.nsaaway.file.LegacyFileUtils.java
org.sector67.nsaaway.key.KeyUtils.java
org.sector67.nsaaway.ocr.complex.BeepManager.java
org.sector67.nsaaway.ocr.complex.CaptureActivityHandler.java
org.sector67.nsaaway.ocr.complex.CaptureActivity.java
org.sector67.nsaaway.ocr.complex.DecodeHandler.java
org.sector67.nsaaway.ocr.complex.DecodeThread.java
org.sector67.nsaaway.ocr.complex.FinishListener.java
org.sector67.nsaaway.ocr.complex.HelpActivity.java
org.sector67.nsaaway.ocr.complex.LuminanceSource.java
org.sector67.nsaaway.ocr.complex.OcrCharacterHelper.java
org.sector67.nsaaway.ocr.complex.OcrInitAsyncTask.java
org.sector67.nsaaway.ocr.complex.OcrRecognizeAsyncTask.java
org.sector67.nsaaway.ocr.complex.OcrResultFailure.java
org.sector67.nsaaway.ocr.complex.OcrResultText.java
org.sector67.nsaaway.ocr.complex.OcrResult.java
org.sector67.nsaaway.ocr.complex.PlanarYUVLuminanceSource.java
org.sector67.nsaaway.ocr.complex.PreferencesActivity.java
org.sector67.nsaaway.ocr.complex.ViewfinderView.java
org.sector67.nsaaway.ocr.complex.camera.AutoFocusManager.java
org.sector67.nsaaway.ocr.complex.camera.CameraConfigurationManager.java
org.sector67.nsaaway.ocr.complex.camera.CameraManager.java
org.sector67.nsaaway.ocr.complex.camera.PreviewCallback.java
org.sector67.nsaaway.ocr.complex.camera.ShutterButton.java
org.sector67.nsaaway.ocr.complex.language.LanguageCodeHelper.java