Мне нужно преобразовать неофициальный ввод пользователя на персидском языке, который представляет денежную сумму, в одно целое значение в риалах в Python.
Ввод имеет произвольную форму и может включать в себя:
персидские числовые слова (например, یک, پنجاه)
Неофициальное/разговорное написание (например, یه, پونصد, تومن)
Цель состоит в том, чтобы проанализировать текст и вычислить правильное числовое значение, а не просто извлечь цифры.
Примеры и правильный вывод (целая часть):
[ ('صدو پنجاه و دو تومان ', '1520000 ریال ')
, ('هزار و 200 تومان ', '12000 ریال ')
, ('یک میلیون و 100 پنجاه تومان ', '11500000 ریال ')
, ('یک میلیاردو صدو هشتاد میلیون تومان ', '11800000ریال')
, ('چهارصدو پنجاه و 8 تومان ', '4580000ریال')
, ('1200 و هشت تومان ', '12080 ریال ')
, ('یه میلیون و پونصد هزار تومن ', '15000000ریال ')
, ('یکو پونصد میلیون تومن ', '15000000ریال ')
, ('یک میلیاردو 800 میلیون تومن ', '18000000ریال ')
, ('دو هزار و 325 تومان ', '23250 ریال ')
, ('پونزده میلیارد تومن ', '150000000ریال ')
, ('یک هزارو بیستمن', '10200 ریال ')
, ('پونصدو پنجاه تومن ', '5500000 ریال ')
, ('یکصدو بیست تومن ', '1200000 ریال ')
, ('پنحاه هزارو 800 تومن ', '508000ریال ')
, ('199 هزار و دویست ', '1992000ریال ')
, ('هزارو هشتصدو 50 تومن ', '18500 ریال ')
, ('هراز و 500 تومن ', '15000 ریال ')
, ('598 هزارو صدو پنجاه تومن ', '5981500ریال ')
, ('500 هزار تومن', '5000000ریال ')
, ('182000ریال ', '182000ریال')
, ('100تومن', '1000 ریال')
, ('108 هزارو 6 تومن و58 ریال', '10806058 ریال')
, ('100 هزاروپنج تومن و و شش ریال ', '1000056 ریال')
, ('9 میلیاردو ششصدو سی و هشت میلیون و 527 هزارو 41تومن ', '96385270410 ریال')
, ('هشتصدو هفتادو پنج میلیون و 430 هزارو یک تومن', '8754300010 ریال')
, ('یکهزارو دویست و 56 تومن و 9 ریال ', '10012569 ریال')
, ('یک میلیون و چهارصدو پنجاه ونه هزارو ششصدو هشتادو هفت تومان و 5 ریال ', '14596875 ریال')
, ('چهارصدو پنجاه شش میلیون و 123 هزارو 357 تومن', '4561233570 ریال ')
, ('یک میلیون و 582 هزارو 745 تومان و 4 ریال ', '15827454 ریال ')
, ('یک میلیون و 595 هزارو هشتصدو بیست و چهارتومن ', '958240 ر یال ')
, ('چهار تریلیون و هشتصدو 59 میلیاردو 765 میلیون و 132هزارو540 تومن ', '48597651325400 ریال ')
, ('هشت میلیون و 957 هزارو 421 تومن ', '89574210 ریال ')
, ('یکصدو بیست و 4 هزارو 571 تومن ', '1245710 ریال ')
, ('شصت و 5 میلیون 824 هزارو 500 تومن ', '658245000ریال ')
, ('شصت و پنج میلیون و 652 هزراو 400 تومن ', '656524000ریال ')
, ('هفت میلیاردو 775میلیون و 557 هزارو 755 تومان ', '77755577550 ریال ')
, ('دویست و سی و یک میلیون 547 هزارو 121 تومن', '2315471210 ریال ')
, ('یکصدو 21 هزارو 451 تومن ', '1214510 ریال ')
, ('120 تومن ', '1200 ریال ')
, ('دوازده هزارو صد تومن ', '121000 ریال ')
, ('چهارده هزارو هفتصدو 85 تومن ', '147850 ریال ')
, ('شصت و یک هزارو 43 تومن و 3 ریال ', '610433 ریال ')
, ('پنجاه و هشت هزارو 921 تومن', '589210 ریال ')
, ('نهصدو شصت و پنج هزارو 874 تومن ', '9658740 ریال ')
, ('یک میلیون و چهارصدو 78 هزارو 52 تومن ', '14785200 ریال ')
, ('65 میلیون و 284 هزارو 710 تومن ', '652847100 ریال ')
, ('659 میلیون و 856 هزارو 589 تومن ', '6598565890 ریال ')
, ('14 میلیون و 521 هزارو 470 تومن ', '145214700 ریال ')
, ('547ملیون پانصد هشتاد هزار تومان', 'مبلغ547580000 ریال')
, ('صد بیست پنج ملیون پانصد هزار تومان', 'مبلغ125500000 ریال')
, ('645ملیون هتصد و هفتاد هزار تومان', 'مبلغ645770000 ریال')
, ('صد نود ملیون و574 هزار تومان', 'مبلغ190000574 ریال')
, ('194ملیون وپنجاهو چهار هزار تومان', 'مبلغ194900054ریال')
, ('7ملیون پانصد هزار تومان', 'مبلغ7500000 ریال')
, ('3ملیارد753 ملیون وپانصدهشتاد هزار تون هتصد', 'مبلغ3753589700 ریال')
, ('4ملیون پانصد هفتاد هشت هزار صد و بیست هزار تومان', 'مبلغ4578120 ریال')
, ('96ملیونپانصد هشتاد و چهار هفتصد هزار تومان', 'مبلغ96584700 ریال')
, ('10هزار تومان', 'مبلغ 10000 ریال')
, ('195ملیون تومان', 'مبلغ195000 ریال')
, ('1ملیون وششصد پنجاه چهار هشتصد تومان', 'مبلغ1654800 ریال')
, ('یک ملیون هشتثد هشتاد هزار تومان', '1880000 ریال')
, (' 5ملیون وهتصد هفتاد هزار تومان', '5700000 ریال')
, ('2ملیون پانصد چهل هشت پتنصد هزار تومان ', 'مبلغ2548500 ریال')
, ('80هزار تومان', 'مبلغ80000 ریال')
, ('50هزار تومان', 'مبلغ50000ریال')
, ('1ملیون پانصد 42هزار تومان', 'مبلغ1542000 ریال')
, ('457هزار پانصد تومان', 'مبلغ457500 ریال')
, ('127هزار تومان', 'مبلغ127000 ریال')
, ('1ملیون نهصد هفتاد پنج هزار تومان', 'مبلغ1975000 ریال')
, ('754هزار تومان', 'مبلع 754000')
, ('4ملیون پانصد هزار تومان', 'مبلغ4500000 ریال')
, ('354هزار چهار صد هتاد دو تومان', 'مبلغ35472 ریال')
, ('1ملیون هتصد و بیست یک هزار ششصد هشتاد تومان ', 'مبلغ1721680 ریال')
, ('150هزار تومان', 'مبلغ150000ریال')
, ('11هزار تومان', 'مبلغ11000 ریال')
, ('325هزار صد چهل هزار تومان', 'مبلغ325140 ریال')
, ('15هزار تومان', 'مبلغ15000 ریال')
, ('145هزار تومان', 'مبلغ145000 ریال')
, ('50هزار تومان', 'مبلغ50000 ریال')
, ('صد بیست چهار هزار 500 تومان', 'مبلغ124500 ریال')
, ('547هزار هشتصد پنجاه تومان', 'مبلغ547850 ریال')
, ('369هزار پانصد هشتاد نومان', 'مبلغ369580 ریال')
, ('1ملیون دویست و پنجاه و چهار هشتصد هفتاد هراز تومان', 'مبلغ1254870 ریال')
, ('1ملیون و پانصد چهار هزار 870 تومان', 'مبلغ1504870ریال')
, ('37هزا تومان', 'مبلغ37000 ریال')
, ('4500هزار تومان', 'مبلغ4500 ریال')
, ('950هزا رتومان', 'مبلغ950000 ریال')
, ('نهصد و 87 هزار تومان', 'مبلغ987000 ریال')
, ('125هزار تومان', 'مبلغ125000 ریال')
, ('305هزار تومان', 'مبلغ305000 ریال')
, ('220هزار تومان', 'مبلغ220000')
, ('300هزار تومان', 'مبلغ300 ریال')
, ('46هزار 200 تومان', 'مبلغ46200 ریال')
, ('72هزار 587 هزار تومان', 'مبلغ 72587 ریال')
, ('900هزار تومان', 'مبلغ 900000 ریال')
, ('154هزار 855 هزار تومان', 'مبلغ 154855 ریال')
]
Каков рекомендуемый подход (алгоритм или существующая библиотека) для анализа персидских числовых слов, включая неформальные/разговорные варианты, в правильное целочисленное значение?