If you have plenty of time but zero budget – your choice is Tesseract. It is definitely the best among open source
If you have a small budget to spend and you only need run this recognition once – 07001 service would be your best choice. It is based on leading commercial grade OCR engine and offers quite affordable per-project prices. Disclaimer: I work for ABBYY
In case you will need to run this recognition as ongoing process forever, then you may think that it is economically more efficient to purchase dedicated conversion software, for example 07002, it has API and can be called from Java too. But there are actually a lot of alternatives, if you are prepared to invest some budget in licensing.