Loosely you're talking about named entity recognition/extraction (strictly you might not include addresses etc under this definition who but who cares). You might get some mileage out of tools like:
Stanford NER is very powerful. If you dont want to mess around with Java, there are also Python libraries that do this very effectively and easier to get started on (e.g. NLTK or Spacy). A high level intro for both with code snippets - https://towardsdatascience.com/named-entity-recognition-with...
https://nlp.stanford.edu/software/CRF-NER.shtml