A system for performing high quality Optical Character Recognition (OCR) with a focus on financial use cases.
The FIN-OCR sdk is designed to handle a variety of financial document processing tasks. The sdk is capable of extracting MICR lines from check images, supporting both individual check processing and large-scale batch processing through X9 files.
-
Check inclearing support
- FIN-OCR supports X9 files, allowing you to extract and process check images from these files efficiently. This capability is ideal for financial institutions that need to process large volumes of check images quickly and accurately.
- To process X9 files with FIN-OCR:
- Install and configure the fin-ocr-cli
- Use the CLI to extract check images from X9 files.
- To process X9 files with FIN-OCR:
- FIN-OCR supports X9 files, allowing you to extract and process check images from these files efficiently. This capability is ideal for financial institutions that need to process large volumes of check images quickly and accurately.
-
Browser and Node.js Support
- Embeddable SDK FIN-OCR provides a flexible SDK that can be embedded in both browser and Node.js environments. This allows developers to integrate OCR capabilities directly into web applications or backend services.
The fin-ocr-* repositories are structured to support a wide range of use cases and implementations:
Name | Description |
---|---|
fin-ocr | Documentation describing the use cases, architecture, and how to get started using the fin-ocr-* repositories |
fin-ocr-sdk | Browser-friendly and mobile-friendly typescript SDK implementing the core OCR functionality. This SDK uses opencv.js and tesseract.js |
fin-ocr-rest | REST-ful service, which uses the fin-ocr-sdk |
fin-ocr-cli | CLI (command line interface), which uses the fin-ocr-sdk |
fin-ocr-browser | Demo browser application using the fin-ocr-sdk |
fin-ocr-train | Tools and documentation for training tesseract using real or synthetic data |
The initial use case solved by this group of repositories is as follows:
- Provide a REST-ful service which takes a bank check image as input and returns (in JSON format) the routing, account, and check number from the MICR line, with a high degree of accuracy. The initial accuracy as measured on 20000 checks is 97.81%.
It is both possible and encouraged to extend the capabilities to support additional use cases. The fin-ocr-* repositories have been designed with this in mind.
For example, additional use cases might include support for:
- different media (e.g. credit card, driver's license, passport, or other document types);
- different types of applications (e.g. additional REST-ful endpoints, a mobile application, and/or a browser application);
- different ways of inputting data (e.g. device camera, video input device, or video data files);
- a learning mode in which human input is accepted as a means of dynamically improving the accuracy of the OCR engine;
- or other features.
-
Running the Demo:
- Quickly experiment with the OCR capabilities of the SDK by running the demo
- Features:
- Manual OCR Processing: Easily perform OCR on any check image by manually uploading it within the demo.
- Check Scanner Simulation: Capture video input from your device's webcam, simulating the behavior of a check scanner in banking apps. The application detects the presence of a check in the camera feed and performs OCR on the relevant portions of the check.
-
Using the CLI:
-
Running the REST Service:
-
Training Tesseract:
- Learn how tesseract was trained and how you can retrain tesseract for the MICR E13B font by looking at MICR training with real checks.
- Even though training with real checks gave us the best results, also see training tesseract with synthethic data. This will be useful to train tesseract for other use cases in which a sufficient volume of real data is not available.
-
Using the SDK Directly:
- View the SDK sample code for examples of how to use the SDK directly. This is useful for building mobile or browser applications.
- Also, see the browser demo application for a sample browser application.
-
Developer's Guide:
- If you're a developer and want to understand the OCR processing performed by the SDK better, see the Developer's Guide.
Get involved! Our project welcomes passionate contributors.
Whether it is improving the OCR accuracy for bank checks, adding support for other use cases, or making other enhancements or improvements, we welcome the collaboration and innovation that the open source community provides. The goal is to provide the best OCR software, for everyone, for free.
See the Project Contribution Guide for more information.