How to extract text from image Android app

I am working on a feature for my Android app. I would like to read text from a picture then save that text in a database. Is using OCR the best way? Is there another way? Google suggests in its documentation that NDK should only be used if strictly necessary but what are the downfalls exactly? Any help would be great. Image to be OCR'd enter image description here enter image description here

5,281 10 10 gold badges 36 36 silver badges 45 45 bronze badges asked May 17, 2016 at 23:41 MrAnderson1992 MrAnderson1992 409 1 1 gold badge 5 5 silver badges 11 11 bronze badges

I am also looking for solution something like this and while reading, I landed on SO here. I would like to ask you did you find any feasible solution for this. After reading two answers down I am bit confused. Which one did you follow and what were their accuracy. Mind to share your case studies ? Thank you.

Commented Apr 19, 2017 at 4:57

4 Answers 4

you can use google vision library for convert image to text, it will give better output from image. Add below library in build gradle:

 compile 'com.google.android.gms:play-services-vision:10.0.0+' TextRecognizer textRecognizer = new TextRecognizer.Builder(getApplicationContext()).build(); Frame imageFrame = new Frame.Builder() .setBitmap(bitmap) // your image bitmap .build(); String imageText = ""; SparseArray textBlocks = textRecognizer.detect(imageFrame); for (int i = 0; i < textBlocks.size(); i++) < TextBlock textBlock = textBlocks.get(textBlocks.keyAt(i)); imageText = textBlock.getValue(); // return string >
answered Jan 5, 2017 at 12:32 user7176550 user7176550 1,531 15 15 silver badges 19 19 bronze badges

Thanks, it's working but not recognizing the dots(.) in the text. How can we get the complete value including dots in it?

Commented May 4, 2021 at 5:27

From this Simple example of OCRReader in Android tutorial you can read text from image and also you can scan for text using camera, using very simple code.

For scan text from camera

OCRCapture.Builder(this) .setUseFlash(true) .setAutoFocus(true) .buildWithRequestCode(CAMERA_SCAN_TEXT); 

For extract text from image

String text = OCRCapture.Builder(this).getTextFromUri(pickedImage); //You can also use getTextFromBitmap(Bitmap bitmap) or getTextFromImage(String imagePath) buplic APIs from OCRLibrary library. 
answered Mar 21, 2018 at 5:45 Gunaseelan Gunaseelan 15.3k 11 11 gold badges 84 84 silver badges 129 129 bronze badges How to set the language here? Commented Nov 13, 2018 at 12:13 for language you should use firebase ml kit Commented Apr 15 at 7:29

Text from an image can be extracted using Firebase machine learning (ML) kit. There are two versions of the text recognition API, on-device API (free) and on-cloud API.

To use the API, first create BitMap of the image, which should be upright. Then create FirebaseVisionImage object passing the bitmap object.

FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(bitmap); 

Then create FirebaseVisionTextRecognizer object.

FirebaseVisionTextRecognizer textRecognizer = FirebaseVision.getInstance() .getCloudTextRecognizer(); 

Then pass the FirebaseVisionImage object to processImage() method, add listeners to the resulting task and capture the extracted text in success callback method.

textRecognizer.processImage(image) .addOnSuccessListener(new OnSuccessListener() < @Override public void onSuccess(FirebaseVisionText firebaseVisionText) < //process success >>) .addOnFailureListener(new OnFailureListener() < @Override public void onFailure(@NonNull Exception e) < //process failure >>);