Попробуйте копать в сторону средств, реализующих морфологическую нормализацию. Тогда ваша задача будет разбита на два относительно простых шага:
1) по любой форме числительного будете получать "нормальную форму"
один -> один
тридцать девятый -> тридцать девять
двести семьдесят восьмого -> двести семьдесят восемь
2) числительное в нормальной форме будете транслировать уже в число (что проще, чем ваша исходная задача преобразования любой формы числительного)
В принципе какие-то инструменты морф. нормализации есть в Томита-парсере от Яндекса.
https://tech.yandex.ru/tomita/doc/dg/concept/inter...
(Но, наверняка есть и другие доступные реализации, не только в Томите)