Skip to content

urbanclap-engg/smart-docs-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

smart-docs-parser

smart-docs-parser is a NodeJs library to parse details from ID images.

https://medium.com/urbanclap-engineering/document-details-parsing-using-ocr-170bf6ad8a97

How does it work?

smart-docs-parser works in three steps:

  • Extraction of raw text from document image using OCR
  • Validation of document image based on passed document type and extracted raw text
  • Parsing relevant information from raw text using document parser

Installation

$ npm install smart-docs-parser

Usage

Configuration

Create a config folder at the root of your project. Add default.json file to the config folder.

config/default.json

{
  "smart-docs-parser": {
    "api_keys": {
      "google-vision": "YOUR_API_KEY"
    }
  }
}

Code

// ES6 import statement
import SmartDocuments from 'smart-docs-parser';

// Sample Request
const extractedDocumentDetails = await SmartDocuments.extractDocumentDetailsFromImage({
    document_url: 'https://avatars2.githubusercontent.com/u/20634933?s=40&v=4',
    document_type: 'PAN_CARD',
    ocr_library: 'google-vision'
});

// Sample Response
{ raw_text: 
   [ 'INCOME TAX DEPARTMENT',
     'GOVT. OF INDIA',
     'Permanent Account Number Card',
     'PANAM8144G',
     '/Name',
     'ID NAME',
     'frar TT /Father\'s Name',
     'FATHER NAME',
     'ae of Birth',
     '13/02/1994',
     'SIGN',
     'at / Signature',
     '' ],
  is_document_valid: true,
  document_details: 
   { document_type: 'PAN_CARD',
     identification_number: 'PANAM8144G',
     name: 'ID NAME',
     date_of_birth: '1994-02-13T00:00:00.000Z',
     fathers_name: 'FATHER NAME' 
   } 
}

Interfaces

Request

export interface ExtractDocumentDetailsFromImageRequest {
  document_url: string;
  document_type: string;
  ocr_library: string;
  custom_parser?: object; // Only for custom parsers
  custom_ocr?: object; // Only for custom OCRs
  timeout?: number; //Optional request timeout parameter, defaults to 30 secs
}

Response

export interface ExtractDocumentDetailsFromImageResponse {
  raw_text: Array<string>;
  is_document_valid: boolean;
  document_details: DocumentDetails | object;
}
interface DocumentDetails {
  document_type?: string;
  identification_number?: string;
  name?: string;
  fathers_name?: string;
  date_of_birth?: string;
  gender?: 'M'|'F';
  address?: string;
}

raw_text is the text extracted by the OCR

is_document_valid denotes whether the document is valid based on input document_type and extracted raw_text

document_details is the document information parsed using the specific document parser

Supported Request Parameters

Document Type

  • PAN CARD
    document_type: 'PAN_CARD'
  • AADHAAR CARD
    document_type: 'AADHAAR_CARD'

OCR Library

  • Google Vision
    ocr_library: 'google-vision'

Current limitations

Address parsing

Library can parse state name and pin-code but the accuracy of the system for complete address text parsing is not upto the mark due to the noise introduced by multilingual text.

Contributions

Contributions are welcome. Please create a pull-request if you want to add more document parsers, OCR libraries, test-support or enhance the existing code.

Extending smart-docs-parser

For specific use-cases

Contributing to the library

License

MIT