@SmallTest public void testSetRectangle() { // Attempt to initialize the API. final TessBaseAPI baseApi = new TessBaseAPI(); baseApi.init(TESSBASE_PATH, DEFAULT_LANGUAGE); baseApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_SINGLE_CHAR); final int width = 640; final int height = 480; final Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); final Paint paint = new Paint(); final Canvas canvas = new Canvas(bmp); canvas.drawColor(Color.WHITE); paint.setColor(Color.BLACK); paint.setStyle(Style.FILL); paint.setAntiAlias(true); paint.setTextAlign(Align.CENTER); paint.setTextSize(32.0f); // Draw separate text on the left and right halves of the image. final String leftInput = "A"; final String rightInput = "B"; canvas.drawText(leftInput, width / 4, height / 2, paint); canvas.drawText(rightInput, width * 3 / 4, height / 2, paint); baseApi.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST, leftInput + rightInput); baseApi.setImage(bmp); // Ensure the result is correct for a rectangle on the left half of the image. Rect left = new Rect(0, 0, width / 2, height); baseApi.setRectangle(left); String leftResult = baseApi.getUTF8Text(); assertEquals("Found incorrect text.", leftInput, leftResult); // Ensure the result is correct for a rectangle on the right half of the image. Rect right = new Rect(width / 2, 0, width, height); baseApi.setRectangle(right); String rightResult = baseApi.getUTF8Text(); assertEquals("Found incorrect text.", rightInput, rightResult); // Attempt to shut down the API. baseApi.end(); bmp.recycle(); }
/** * Restricts recognition to a sub-rectangle of the image. Call after SetImage. Each SetRectangle * clears the recognition results so multiple rectangles can be recognized with the same image. * * @param rect the bounding rectangle */ public void setRectangle(Rect rect) { if (mRecycled) throw new IllegalStateException(); setRectangle(rect.left, rect.top, rect.width(), rect.height()); }
/** * Restricts recognition to a sub-rectangle of the image. Call after SetImage. Each SetRectangle * clears the recogntion results so multiple rectangles can be recognized with the same image. * * @param rect the bounding rectangle */ public void setRectangle(Rect rect) { setRectangle(rect.left, rect.top, rect.width(), rect.height()); }
@SmallTest public void testProgressValues_setRectangle() { class Notifier implements ProgressNotifier { public boolean receivedProgress = false; private Rect bounds; public void reset(Rect bounds) { this.bounds = bounds; receivedProgress = false; } @Override public void onProgressValues(ProgressValues progressValues) { receivedProgress = true; testProgressValues(progressValues, bounds); } } final Notifier notifier = new Notifier(); final int width = 640; final int height = 480; final Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); final Paint paint = new Paint(); paint.setColor(Color.BLACK); paint.setStyle(Style.FILL); paint.setAntiAlias(true); paint.setTextAlign(Align.CENTER); paint.setTextSize(32.0f); // Draw separate text on the left and right halves of the image. final Canvas canvas = new Canvas(bmp); canvas.drawColor(Color.WHITE); final String leftInput = "A"; final String rightInput = "B"; canvas.drawText(leftInput, width / 4, height / 2, paint); canvas.drawText(rightInput, width * 3 / 4, height / 2, paint); // Attempt to initialize the API. final TessBaseAPI baseApi = new TessBaseAPI(notifier); baseApi.init(TESSBASE_PATH, DEFAULT_LANGUAGE); baseApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_SINGLE_LINE); baseApi.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST, leftInput + rightInput); baseApi.setImage(bmp); // Attempt to restrict recognition to a sub-rectangle of the image. final Rect left = new Rect(0, 0, width / 2, height); baseApi.setRectangle(left); notifier.reset(left); // Ensure a progress callback is received. baseApi.getHOCRText(0); assertTrue(notifier.receivedProgress); // Attempt to restrict recognition to a sub-rectangle of the image. final Rect right = new Rect(width / 2 + 5, 7, width - 5, height - 7); baseApi.setRectangle(right); notifier.reset(right); // Ensure a progress callback is received. baseApi.getHOCRText(0); assertTrue(notifier.receivedProgress); // Attempt to shut down the API. baseApi.end(); bmp.recycle(); }