예제 #1
0
  @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();
  }
예제 #2
0
  /**
   * 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());
  }
예제 #3
0
 /**
  * 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());
 }
예제 #4
0
  @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();
  }