修复图片没有文本时报错的bug

This commit is contained in:
YaoFANGUK
2023-12-28 08:45:33 +08:00
parent 491b4089ec
commit efa49df6ab

View File

@@ -171,36 +171,39 @@ class SubtitleDetect:
def unify_regions(self, raw_regions): def unify_regions(self, raw_regions):
"""将连续相似的区域统一,保持列表结构。""" """将连续相似的区域统一,保持列表结构。"""
keys = sorted(raw_regions.keys()) # 对键进行排序以确保它们是连续的 if len(raw_regions) > 0:
unified_regions = {} keys = sorted(raw_regions.keys()) # 对键进行排序以确保它们是连续的
unified_regions = {}
# 初始化 # 初始化
last_key = keys[0] last_key = keys[0]
unify_value_map = {last_key: raw_regions[last_key]} unify_value_map = {last_key: raw_regions[last_key]}
for key in keys[1:]: for key in keys[1:]:
current_regions = raw_regions[key] current_regions = raw_regions[key]
# 新增一个列表来存放匹配过的标准区间 # 新增一个列表来存放匹配过的标准区间
new_unify_values = [] new_unify_values = []
for idx, region in enumerate(current_regions): for idx, region in enumerate(current_regions):
last_standard_region = unify_value_map[last_key][idx] if idx < len(unify_value_map[last_key]) else None last_standard_region = unify_value_map[last_key][idx] if idx < len(unify_value_map[last_key]) else None
# 如果当前的区间与前一个键的对应区间相似,我们统一它们 # 如果当前的区间与前一个键的对应区间相似,我们统一它们
if last_standard_region and self.are_similar(region, last_standard_region): if last_standard_region and self.are_similar(region, last_standard_region):
new_unify_values.append(last_standard_region) new_unify_values.append(last_standard_region)
else: else:
new_unify_values.append(region) new_unify_values.append(region)
# 更新unify_value_map为最新的区间值 # 更新unify_value_map为最新的区间值
unify_value_map[key] = new_unify_values unify_value_map[key] = new_unify_values
last_key = key last_key = key
# 将最终统一后的结果传递给unified_regions # 将最终统一后的结果传递给unified_regions
for key in keys: for key in keys:
unified_regions[key] = unify_value_map[key] unified_regions[key] = unify_value_map[key]
return unified_regions return unified_regions
else:
return raw_regions
@staticmethod @staticmethod
def find_continuous_ranges(subtitle_frame_no_box_dict): def find_continuous_ranges(subtitle_frame_no_box_dict):