A major problem that many businesses face today is the inability to retrieve data which is trapped inside scanned documents and images. There are two ways of data extraction:

  1. Manual data extraction
  2. Automated data extraction

Since the manual process has many drawbacks we need a data entry automation software that helps to extract data from scanned documents and automate it based on business processes.

The challenge is not just to extract data from scanned documents but also to extract it accurately. Automated data entry systems are capable of reading information from different data sources (PDF files, printed documents, emails, websites, …) and ingest the data into a more adapted data storage (databases, spreadsheet files, …).

One such software/technology is OCR. Optical Character Recognition, or OCR, is a technology that enables you to convert different types of documents, such as scanned paper documents, PDF files or images captured by a digital camera into editable and searchable data. For those who have started exploring on OCR Android applications, this article will help you explore in finding OCR as an android application for converting both handwritten and printed data in images to text.

What is OCR and how does it work?

OCR-Optical Character Reader/ Recognition

Optical Character Reader (OCR) is a software program that uses Optical Character Recognition to read specific characters on sheets and convert them into digital characters. OCR software can be used to convert printed data to digital data without typing, such as from scanned document. It is very useful when there is a need to digitize text from books, scanned documents etc. Once OCR extracts the text, it can be copied or saved in different formats.

Workflow :

Capturing image, detect edges, retrieve text from an image, translate using google API and throws result.

We need an android application, which should support the following constraints:

  • Digitize Handwritten content text
  • Have API support
  • Have Tool Kit support
  • Have machine learning or Deep Learning support

Myself, along with my team took some sample images from google for checking. With those sample images, we have undergone experiments with various android applications, such as

  • CamScanner
  • TextFairy
  • Google Keep
  • OCR Text Scanner
  • Text Scanner
  • Office Lens
  • Online OCR
  • Adobe scanner
  • Evernote scan
  • OCR Space
  • Google API

Fig.b.capturing text image for conversion

In addition to the sample image, we need a Text detection code to test on the process. Text Detection performs Optical Character Recognition. It detects and extracts text within an image with support for a broad range of languages. It also features automatic language identification. The Text detection code (JAVA) which we have used for our project has shared below:

public static void detectText(String filePath, PrintStream out) throws Exception, IOException {
List<AnnotateImageRequest> requests = new ArrayList<>();

ByteString imgBytes = ByteString.readFrom(new FileInputStream(filePath));

Image img = Image.newBuilder().setContent(imgBytes).build();
Feature feat = Feature.newBuilder().setType(Type.TEXT_DETECTION).build();
AnnotateImageRequest request =
AnnotateImageRequest.newBuilder().addFeatures(feat).setImage(img).build();
requests.add(request);

try (ImageAnnotatorClient client = ImageAnnotatorClient.create()) {
BatchAnnotateImagesResponse response = client.batchAnnotateImages(requests);
List<AnnotateImageResponse> responses = response.getResponsesList();

for (AnnotateImageResponse res : responses) {
if (res.hasError()) {
out.printf(“Error: %s\n”, res.getError().getMessage());
return;
}

// For full list of available annotations, see http://g.co/cloud/vision/docs
for (EntityAnnotation annotation : res.getTextAnnotationsList()) {
out.printf(“Text: %s\n”, annotation.getDescription());
out.printf(“Position : %s\n”, annotation.getBoundingPoly());
}
}
}
}

As per our exploration, all the above-discussed applications have the ability to digitize the printed prescription into PDF but they failed to digitize the handwritten. To overcome that issue we have done researches and found ICR & IWR helps to solve that problem.

What are ICR and IWR?

ICR

Intelligent character recognition (ICR) is an advanced optical character recognition or rather more specific handwriting recognition system that allows fonts and different styles of handwriting to be learned by a computer during processing to improve accuracy and recognition levels(Machine /Deep learning).

IWR

Intelligent word recognition (IWR)can recognize and extract not only printed-handwritten information but cursive handwriting as well. ICR recognizes the character-level, whereas IWR works with full words or phrases. Capable of capturing unstructured information from everyday pages, IWR is said to be more evolved than hand print ICR.

Summary :

This article covered a lot about pros and cons of various OCR android apps for converting an image to text and also about ICR, IWR. I will be sharing about the experimented results of respective apps in my upcoming blog.

Thanks for reading and stay tuned for more. 🙂

 

About Zuci

Zuci is revolutionizing the way software platforms are engineered with the help of patented AI and deep learning models. 
Learn more about Zuci at www.zucisystems.com

About the author
Malarvizhi is the Lead Full Stack Developer at Zuci. She is extremely passionate about new technology, innovation, and team building.
Find her talking and interacting at Malar.