The LEADTOOLS Linux SDK has an OCR module in its Java Library. (Disclaimer: I am an employee of this toolkit’s vendor).
If your invoices come in a suitably structured manner, you can define OCR zones that correspond to each field you wish to recognize:
OcrZone ocrZone = new OcrZone();
You can use
I have used tesseract (first option) and found that it is quite accurate (not 100% in my case). I directly used trained data for recognition.
You can start with following code.
Tesseract tess = new Tesseract();
tess.setDatapath(tessDataPath); //Path to tessdata ...