Here's a simple function to do it. It has the list of German umlauts, the acute-accented E, and the SZ ligature. It can be pretty easily extended. There might be a better function somewhere in xml.el, but I can't find it now.
(defun de-escape (string)
""
(let ((replacements '(("Ä" "Ä")
("ä" "ä")
("É" "É")
("é" "é")
("Ö" "Ö")
("ö" "ö")
("Ü" "Ü")
("ü" "ü")
("ß" "ß")))
(case-fold-search nil))
(with-temp-buffer
(insert string)
(dolist (replacement replacements)
(cl-destructuring-bind (old new) replacement
(goto-char (point-min))
(while (search-forward old nil t)
(replace-match new))))
(buffer-string))))
Some example usages:
ELISP> (de-escape "Prüfung")
"Prüfung"
ELISP> (de-escape "die Bären")
"die Bären"
ELISP> (de-escape "Ökologie")
"Ökologie"