Finally I went for OCRmyPDF (https://github.com/jbarlow83/OCRmyPDF), which uses tesseract for the actual OCR part (https://github.com/tesseract-ocr/tesseract) - as I understand tesseract is a OCR tool that has been open-sourced by Google.
OCRmyPDF has great documentation, also works from the command line and has many language packs:
ocrmypdf -l eng pdf_to_ocr.pdf new_pdf_with_ocr.pdf
In order to extract text from the PDF, the best tool I found is pdftotext (https://github.com/jalan/pdftotext), which is a Python wrapper for Poppler (https://poppler.freedesktop.org/). I am getting very satisfying results with this tool, far better than PyPDF2.
Update: Here are some top-of-the-line PDF readers & writers for Python:
Be sure to check these out. Although for text extraction, I must say I still prefer pdftotext
for basic usage as it nicely preserves layout order using spaces.