如何利用类别ID与X中心坐标从YOLO预测结果重构阿拉伯语单词?
基于YOLO的阿拉伯字符检测结果重构RTL单词
需求说明
使用YOLO模型检测图像中的阿拉伯字符后,会输出两个关键列表:
classes:预测的类别ID列表(每个ID对应一个阿拉伯字符,比如0 = 'ا',1 = 'ب'等)centers_x:每个检测字符的X中心坐标列表
由于阿拉伯语是**从右到左(RTL)**的书写体系,需要按照以下规则重构完整单词:
- 按
centers_x从高到低的顺序对字符排序(X坐标越高,对应阿拉伯语单词中阅读顺序越靠前的位置) - 将排序后的类别ID映射为对应阿拉伯字母,拼接成完整单词
示例与实现
给定以下数据:
id_to_char = {0: 'ا', 1: 'ب', 2: 'ت'} classes = [2, 0, 1] centers_x = [300, 250, 100]
实现代码
# 1. 将坐标与类别ID配对成元组列表 char_coords = list(zip(centers_x, classes)) # 2. 按X坐标降序排序 char_coords_sorted = sorted(char_coords, key=lambda x: -x[0]) # 3. 映射字符并拼接成单词 arabic_word = ''.join([id_to_char[cls_id] for (x, cls_id) in char_coords_sorted]) print(arabic_word) # 输出: 'بتا'
逻辑说明
阿拉伯语单词在图像中显示时,最右侧的字符X坐标最大,对应阅读顺序的第一个字符。因此按X坐标降序排序后再映射字符,就能得到符合RTL书写规则的正确单词。
内容的提问来源于stack exchange,提问作者Chaimae Benmakhlouf
相关产品推荐
相关产品推荐

