You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将乌尔都语(RTL)转换为LTR后语义丢失,求解决方案

问题分析与解决方案

你混淆了文本方向调整和语言转写/翻译的区别:bidi和arabic_reshaper只是用来处理RTL文本在LTR环境下的显示顺序与字形,根本不负责语言的音译或翻译,所以会出现无意义的乱码输出。要保留语义完成转换,需要从以下两个方向入手:


方案1:乌尔都语转拉丁字母音译(罗马化)

如果需要将乌尔都语(阿拉伯字母体系)转成类似你给出的prograaming kee duniya mein aapaka svaagat hai这种拉丁字母音译形式,可以使用专门的罗马化工具:

使用urduhack库

pip install urduhack
import urduhack

# 乌尔都语文本,对应语义"Welcome to the world of programming"
urdu_text = "مرحبا بك في عالم البرمجة"
# 转换为拉丁字母音译
romanized_text = urduhack.romanize(urdu_text)
print(romanized_text)  # 输出接近语义的拉丁化表述

使用transliterate库(自定义映射更灵活)

pip install transliterate
from transliterate import translit

urdu_text = "مرحبا بك في عالم البرمجة"
# 乌尔都语转拉丁字母反向转写
romanized_text = translit(urdu_text, 'ur', reversed=True)
print(romanized_text)

方案2:乌尔都语直接翻译为目标语言(如英文)

如果需要直接得到语义对应的英文句子,可使用机器翻译模型:

pip install transformers torch
from transformers import pipeline

# 加载乌尔都语→英文翻译模型
translator = pipeline("translation", model="Helsinki-NLP/opus-mt-ur-en")
urdu_text = "مرحبا بك في عالم البرمجة"
result = translator(urdu_text)
print(result[0]['translation_text'])  # 输出 "Welcome to the world of programming"

为什么之前的代码无效?

  • bidi.algorithm.get_display仅调整字符的显示顺序,让RTL文本在LTR界面中不出现顺序错乱,但不会改变字符本身,乌尔都语的阿拉伯字母是连写体系,反向后字符组合会变成无意义的乱码。
  • arabic_reshaper只是修复阿拉伯字母的连写字形,确保字符显示正确,同样不涉及语言转写或翻译。

内容的提问来源于stack exchange,提问作者Tanisha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 01:43:09