Back to project page esr-scanner.
The source code is released under:
Apache License
If you think the Android project esr-scanner listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/* * Copyright 2011 Robert Theis//from w w w. j ava2s. 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 ch.luklanis.esscan; 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; import java.util.List; /** * Encapsulates the result of OCR. */ public final class OcrResult { private final Bitmap bitmap; private final String text; private final int[] wordConfidences; private final int meanConfidence; private final List<Rect> wordBoundingBoxes; private final List<Rect> textlineBoundingBoxes; private final List<Rect> regionBoundingBoxes; private final long timestamp; private final long recognitionTimeRequired; private final Paint paint; public OcrResult(Bitmap bitmap, String text, int[] wordConfidences, int meanConfidence, List<Rect> textlineBoundingBoxes, List<Rect> wordBoundingBoxes, List<Rect> regionBoxes, long recognitionTimeRequired) { this.bitmap = bitmap; this.text = text; this.wordConfidences = wordConfidences; this.meanConfidence = meanConfidence; this.textlineBoundingBoxes = textlineBoundingBoxes; this.wordBoundingBoxes = wordBoundingBoxes; this.regionBoundingBoxes = regionBoxes; this.recognitionTimeRequired = recognitionTimeRequired; this.timestamp = System.currentTimeMillis(); this.paint = new Paint(); } public Bitmap getBitmap() { if (wordBoundingBoxes.isEmpty()) { return bitmap; } else { return getAnnotatedBitmap(); } } private Bitmap getAnnotatedBitmap() { Canvas canvas = new Canvas(bitmap); // Draw bounding boxes around each word for (Rect r : wordBoundingBoxes) { paint.setAlpha(0xA0); paint.setColor(0xFF00CCFF); paint.setStyle(Style.STROKE); paint.setStrokeWidth(3); 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> getTextlineBoundingBoxes() { return textlineBoundingBoxes; } public List<Rect> getWordBoundingBoxes() { return wordBoundingBoxes; } public List<Rect> getRegionBoundingBoxes() { return regionBoundingBoxes; } public long getTimestamp() { return timestamp; } @Override public String toString() { return text + " " + meanConfidence + " " + recognitionTimeRequired + " " + timestamp; } }