Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Google's Mobile Vision to recognize Text in a static image?

I'm trying to write a basic ocr android app using Google's Mobile Vision API, but I'm having difficulty actually getting the app to recognize text in a static image. I've looked through the codelabs tutorial, other people's questions, namely every single stackoverflow question with the android-vision tag, and the documentation, but I still haven't had any luck. I know someone else asked a similar question but the answer posted there doesn't work.

Here's an excerpt of my code

Bitmap photo = (Bitmap) extras.get("data");
        pictureOcrView.setImageBitmap(photo);
        Context context = getApplicationContext();
        TextRecognizer ocrFrame = new TextRecognizer.Builder(context).build();
        Frame frame = new Frame.Builder().setBitmap(photo).build();
        if (ocrFrame.isOperational()){
            Log.e(TAG, "Textrecognizer is operational");
        }
        SparseArray<TextBlock> textBlocks = ocrFrame.detect(frame);

        for (int i = 0; i < textBlocks.size(); i++) {
            TextBlock textBlock = textBlocks.get(textBlocks.keyAt(i));

            Log.e(TAG, "something is happening");
            }

I don't understand what the issue is. It's not like I'm getting garbled text, I'm just not receiving any text at all. When I test this application with a picture of text that functioned for the codelab tutorial I get nothing. It seems like the textBlock array isn't even being created, but I don't know why. I know I've created the frame because I can still run other frame methods like getHeight successfully, and the isOperational() has been returning true.

Any suggestions on what I'm doing wrong?

like image 806
ERiver Avatar asked Oct 23 '16 06:10

ERiver


People also ask

Can Google detect text in images?

Optical character recognition (OCR) is a technology that extracts text from images. It scans GIF, JPG, PNG, and TIFF images. If you turn it on, the extracted text is then subject to any content compliance or objectionable content rules you set up for Gmail messages.


2 Answers

I have just had the same issue. The problem is that the image that you are processing is not the whole photo just a thumbnail (got by calling extras.get("data")). In order to access the full image you need to save it and then use it. Details on how to do that can be found at the below link: https://developer.android.com/training/camera/photobasics.html

like image 118
j.wilk Avatar answered Oct 25 '22 02:10

j.wilk


In my case. When I get bitmap from camera or gallery,that bitmap orientation has been rotated. TextRecognizer can't detect text because bitmap is rotated. You must rotate bitmap to correct orientation.

You can rotate image by doing with this comment

like image 26
Pornpawit Maipiya Avatar answered Oct 25 '22 02:10

Pornpawit Maipiya