Как изменить размер ограничивающего прямоугольника в Google vision OCR api ?
Я использую google OCR image to text api. Потому что я хочу сохранить меню еды в своей базе данных. Но TextRecognizer может обнаруживать только текстовые блоки. я хочу сканировать столбец мудро, чтобы я мог получить название блюда и его цену одновременно, так что мне будет легко сохранить его в базе данных.
OcrCaptureActivity
// этот метод показывает, какой блок был нажат, и отображает его в textview
private boolean onTap(float rawX, float rawY) { OcrGraphic graphic = mGraphicOverlay.getGraphicAtLocation(rawX, rawY); TextBlock text = null; if (graphic != null) { text = graphic.getTextBlock(); if (text != null && text.getValue() != null) { Intent data = new Intent(); data.putExtra(TextBlockObject, text.getValue()); setResult(CommonStatusCodes.SUCCESS, data); finish(); } else { Log.d(TAG, "text data is null"); } } else { Log.d(TAG,"no text detected"); } return text != null; }
Класс OcrGraphic
/** * Checks whether a point is within the bounding box of this graphic. * The provided point should be relative to this graphic's containing overlay. * @param x An x parameter in the relative context of the canvas. * @param y A y parameter in the relative context of the canvas. * @return True if the provided point is contained within this graphic's bounding box. */ public boolean contains(float x, float y) { TextBlock text = mText; if (text == null) { return false; } RectF rect = new RectF(text.getBoundingBox()); rect.left = translateX(rect.left); rect.top = translateY(rect.top); rect.right = translateX(rect.right); rect.bottom = translateY(rect.bottom); return (rect.left < x && rect.right > x && rect.top < y && rect.bottom > y); } /** * Draws the text block annotations for position, size, and raw value on the supplied canvas. */ @Override public void draw(Canvas canvas) { TextBlock text = mText; if (text == null) { return; } // Draws the bounding box around the TextBlock. RectF rect = new RectF(text.getBoundingBox()); rect.left = translateX(rect.left); rect.top = translateY(rect.top); rect.right = translateX(rect.right); rect.bottom = translateY(rect.bottom); canvas.drawRect(rect, sRectPaint); // Break the text into multiple lines and draw each one according to its own bounding box. List<? extends Text> textComponents = text.getComponents(); for(Text currentText : textComponents) { float left = translateX(currentText.getBoundingBox().left); float bottom = translateY(currentText.getBoundingBox().bottom); canvas.drawText(currentText.getValue(), left, bottom, sTextPaint); } } }
Что я уже пробовал:
я попытался установить ширину и высоту bouding box, но он все еще принимает текст в качестве текстового поля
RectF rect = new RectF(0,0,800,600);