Extraction of entities from invoices and orders in SAP
Incoming invoices and orders from external companies arrive in a variety of formats. To further process the documents, the most relevant information needs to be extracted and entered into the company's software such as SAP. In the case of incoming invoices, at least the bank account number, the net amount, the value added tax, the supplier's entity name, the due date for payment and the invoice date has to be extracted.
As the invoices and orders come from a variety of suppliers and clients, there is no uniform extraction method that can be applied. This challenge is even more imminent if the company is active in different countries with different languages and formats and has a high number of clients or suppliers with occasional orders or deliveries. Optical character recognition (OCR) and template-based solutions will thus - in most cases - not deliver satisfactory results.
Potential solution approaches
As a first step, the document content has to be extracted with OCR libraries such as TesserAct, ABBYY FineReader or Google Vision API. Once the right OCR tool is chosen, a data pipeline with a high number of labels ('ground truth data') has to be established and a machine learning (ML) model can be trained. For information inside a table, table segmentation needs to be applied to locate an entities' position within tables.
For simple extraction fields, such as dates, e.g. rule based approaches might be sufficiently reliable. For more complex fields, options for ML algorithms are Random forest, Naive Bayes classifiers, TF-IDF or LSTM algorithms.
Graph Neural Networks are a further option to map relationships between entities (such as due date and payment date). In most cases, a combination of regular expressions, traditional machine learning methods and Deep Neural Networks delivers the best results.