Click here to Skip to main content
13,247,804 members (42,920 online)
Click here to Skip to main content
Add your own
alternative version

Stats

5.4K views
2 bookmarked
Posted 1 May 2015

Reading and Processing Checks with LEADTOOLS

, 1 May 2015
LEADTOOLS includes a robust Check Scanning and Processing SDK within its document family of imaging toolkits, and is already being used by a number of applications across banking, insurance and retail industries.

Editorial Note

This article is in the Product Showcase section for our sponsors at CodeProject. These articles are intended to provide you with information on products and services that we consider useful and of value to developers.

Introduction

As much as credit cards and digital wallets have tried to take over, checks are still a very prevalent and practical way to make payments and financial transactions. However, just because consumers and businesses are still relying on traditional, paper-based financial transactions doesn't mean that technology can't streamline deposits and improve customer satisfaction. Many ATMs now accept checks and automatically read the values, and a smaller number are rolling out apps for making deposits straight from your smart phone or tablet, saving a trip to the bank or ATM altogether. How are financial institutions implementing these features? And what benefits are there for other businesses not in the financial sector?

LEADTOOLS includes a robust Check Scanning and Processing SDK within its document family of award-winning imaging toolkits, and is already being used by a number of applications across banking, insurance and retail industries. It combines advanced Magnetic Ink Character Recognition (MICR) and Optical Character Recognition (OCR) to quickly and accurately extract each pertinent field and its data from images of checks captured with scanners or mobile device cameras. Advanced Image Processing algorithms such as Deskew and Perspective Correction improve accuracy in poor quality images. Additionally, LEADTOOLS includes a wide variety of cross-platform programming interfaces, allowing developers to create native applications for iOS, Android and Windows Phone devices.

Outside of the financial sector, the Check Scanning SDK can be used to implement unique solutions such as tablet-based Point of Sale kiosks that accept checks as a form of payment. Furthermore, any business accepting checks can protect its customers by using the Check Scanning and Image Processing functions in LEADTOOLS to redact sensitive information on their images.

Using the LEADTOOLS Check Reader

The workhorse behind LEADTOOLS' Check Scanning and Processing technology is the BankCheckReader class. This high-level object encapsulates the entire process and requires only a few lines of code in order to read the data from checks. To set up the BankCheckReader, simply give it an OCR engine instance and it's ready to go.

// Create check reader
BankCheckReader checkReader = new BankCheckReader();

// Create and assign OCR engine used by the check reader
IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false);
ocrEngine.Startup(null, null, null, null);
checkReader.OcrEngine = ocrEngine;

Once the BankCheckReader is initialized, its ProcessImage function will use the OCR engine to find each field. Since checks are semi-structured forms, certain strings such as "pay to", "date", "amount" and the like exist on the majority of documents in similar locations. After it finds those identifying headers, LEADTOOLS will examine the image near each header and reliably extract the information within the field itself.

While processing, each field value and bounding rectangle gets added to a Dictionary of BankCheckField objects. Once complete, the BankCheckReader.Results member can be enumerated for display or your business logic. As shown in the example and screenshot below, the results are displayed in a DataGridView along with a click handler that uses the bounding rectangle to draw a highlight annotation and extract a cropped and zoomed-in image of the field value.

// Load and process the image
RasterImage rasterImage = rasterCodecs.Load(fileName);
checkReader.ProcessImage(rasterImage);

// Loop through the BankCheckFields and display the results
foreach (var item in checkReader.Results)
{
   DataGridViewRow row = new DataGridViewRow();
   row.CreateCells(dataGridView1, item.Key, item.Value.Text);
   row.Tag = item.Value;
   dataGridView1.Rows.Add(row);
}

Specialized Image Processing for Mobile: Perspective Deskew

Mobile Phones are one of the major driving forces behind the demand for automated check scanning. However, getting good quality images can be a challenge due to a combination of low DPI images, poor lighting and bad angles. It is possible to add crosshairs and rectangular frames to help guide the user to capture better images, but LEADTOOLS takes it a step farther and accounts for many of these pitfalls.

With the PerspectiveDeskewCommand, developers can add a huge amount of wiggle room for its user base resulting in a more user-friendly and accurate application. When using mobile phones and tablets, most pictures are taken at angles, such as the four examples in the screenshot below:

The top-left image represents a best-case scenario with mostly straight angles, however the image still has a partially skewed perspective since the top edge appears shorter than the bottom rather than a perfect rectangle. The following images get progressively worse, ending with an image taken at nearly a twenty degree angle and the corner cut off. With only two lines of code, LEADTOOLS is able to automatically correct all of these as well as remove the background.

PerspectiveDeskewCommand cmd = new PerspectiveDeskewCommand();
cmd.Run(rasterImageViewer1.Image);

Additional Uses and Considerations

The BankCheckReader can process personal checks in addition to machine-printed bank checks. The fields and locations are practically the same on personal checks, but are challenging due to hand-printed text and personalized designs. Having a comprehensive document imaging SDK is crucial for these situations. LEADTOOLS has an extensive collection of document cleanup and image enhancement algorithms that will subtract the background and provide higher contrast for the text areas in preparation for OCR.

Additionally, the authorized signature field can be a tricky one to navigate. The actual value is not needed in most cases, but verifying that it is signed certainly is. By providing the bounding rectangle in the BankCheckField, one can use the BlankPageDetectorCommand on the cropped image to determine whether or not it has been signed.

In both of these scenarios, the majority of the process can still be automated and streamlined when coupled with manual verification by Proof Operators on an as-needed basis. Rather than leaving all of the work to manual data entry, only the images which are missing fields or yield results below a confidence threshold will be verified and corrected. For example, when implementing mobile deposit, each machine-printed field and the MICR string are retrieved automatically but the customer may need to enter or verify the amount. More efficient Proof Operator applications can also be created with automatically blown up images of the fields they need to see such as the amount and signature by use of the bounding rectangle, image processing and viewer controls.

Conclusion

Checks may not be on their way out the door anytime soon in today's market, but document imaging toolkits like the LEADTOOLS Check Scanning SDK are helping the market keep patrons happy and moving along as fast as everyone else in this mobile-centric, digital world. LEADTOOLS' fast and accurate MICR and OCR engines, image processing, and cross-platform development libraries provide a wide gamut of development opportunities for banks, insurance agencies and modern point of sale systems alike.

Download the Full Check Reading and Processing Example

You can download the fully functional demo which includes the features discussed above. To run this example you will need the following:

  • LEADTOOLS free 60 day evaluation
  • Visual Studio 2008 or later
  • Browse to the LEADTOOLS Examples folder (e.g. C:\LEADTOOLS 19\Examples\) where you can find example projects for this and many more technologies in LEADTOOLS

Support

Need help getting this sample up and going? Contact our support team for free technical support! For pricing or licensing questions, you can contact our sales team (sales@leadtools.com) or call us at 704-332-5532.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

LEADTOOLS Support
Help desk / Support LEAD Technologies, Inc.
United States United States
This member doesn't quite have enough reputation to be able to display their biography and homepage.
Group type: Organisation (No members)



You may also be interested in...

Pro
Pro

Comments and Discussions

 
-- There are no messages in this forum --
Permalink | Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.171114.1 | Last Updated 1 May 2015
Article Copyright 2015 by LEADTOOLS Support
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid