1. A computer-implemented method of recognizing a document, the method comprising: comparing a document image to a plurality of document templates stored in a template database; comparing the document image to at least one document skeleton from a skeleton database; defining one or more document fields; extracting the defined document fields from the document image to obtain extracted document fields; validating the extracted document fields; generating a document skeleton from the defined document fields; storing the document skeleton in the skeleton database; generating a document template based on a comparison of the document image to at least one document skeleton from the skeleton database; and storing the document template in a template database.