Semi-structured documents contain common data elements but the data has a different location, from document to document. For example, nearly every invoice contains data such as a P.O. number and an invoice total, but it is in a different location on each invoice depending on the vendor. Because of these location differences, it is not feasible to use templates to capture data from semi-structured documents.