Нужно учитывать, что PHP через shell_exec напрямую не выполняет команды, а запускает cmd, куда их и передаёт. Соответственно, кодировка там наверняка будет 866. Ни один из предложенных ниже вариантов сам не пробовал, можете попробовать что-то из этого:
а) через chcp менять кодировку. Например, $text = shell_exec('chcp 65001 && soffice --headless --convert-to "txt:Text (encoded):UTF8" --cat /test.doc');
б) записывать во временный файл, из этого файла затем читать: shell_exec('soffice --headless --convert-to "txt:Text (encoded):UTF8" --cat /test.doc > '.$path_to_tempfile);