1818from one_dragon .utils .log_utils import log
1919
2020DEFAULT_OCR_MODEL_NAME : str = 'ppocrv5'
21+ PPOCRV6_MODEL_NAME : str = 'ppocrv6'
2122GITHUB_DOWNLOAD_URL : str = 'https://github.com/OneDragon-Anything/OneDragon-Env/releases/download'
2223GITEE_DOWNLOAD_URL : str = 'https://gitee.com/OneDragon-Anything/OneDragon-Env/releases/download'
2324
2425
26+ def normalize_ocr_model_name (ocr_model_name : str ) -> str :
27+ """
28+ 规范化 OCR 模型名。
29+ """
30+ if ocr_model_name .startswith (PPOCRV6_MODEL_NAME ):
31+ return PPOCRV6_MODEL_NAME
32+ return ocr_model_name
33+
34+
2535def get_ocr_model_dir (ocr_model_name : str ) -> str :
36+ ocr_model_name = normalize_ocr_model_name (ocr_model_name )
2637 return os_utils .get_path_under_work_dir ('assets' , 'models' , 'onnx_ocr' , ocr_model_name )
2738
2839
@@ -35,6 +46,7 @@ def get_ocr_download_url_gitee(ocr_model_name: str) -> str:
3546
3647
3748def get_ocr_download_url (website : str , ocr_model_name : str ) -> str :
49+ ocr_model_name = normalize_ocr_model_name (ocr_model_name )
3850 return f'{ website } /{ ocr_model_name } /{ ocr_model_name } .zip'
3951
4052
@@ -88,13 +100,13 @@ def __init__(
88100 det_limit_side_len : float = 960.0 ,
89101 ocr_model_size : str | None = None ,
90102 ):
91- self .ocr_model_name : str = ocr_model_name
103+ self .ocr_model_name : str = normalize_ocr_model_name ( ocr_model_name )
92104 self .models_dir : str = get_ocr_model_dir (ocr_model_name )
93105 if dict_name is None :
94106 dict_name = get_ocr_model_dict_name (ocr_model_name )
95107 if dict_name is None :
96108 # 首次运行未下载时,根据模型名推导一个默认的字典文件名,避免崩溃
97- dict_name = f"{ ocr_model_name } _dict.txt"
109+ dict_name = f"{ self . ocr_model_name } _dict.txt"
98110 # ===================================================================
99111 # I. 设备与性能 (Device & Performance)
100112 # ===================================================================
@@ -113,15 +125,8 @@ def __init__(
113125 # III. 核心功能开关 (Core Feature Switches)
114126 # ===================================================================
115127 self .use_angle_cls = use_angle_cls # 是否加载并使用方向分类模型
116- if ocr_model_size is None :
117- if 'medium' in ocr_model_name :
118- ocr_model_size = 'medium'
119- elif 'tiny' in ocr_model_name :
120- ocr_model_size = 'tiny'
121- elif 'small' in ocr_model_name :
122- ocr_model_size = 'small'
123- else :
124- ocr_model_size = 'small'
128+ if self .ocr_model_name == PPOCRV6_MODEL_NAME or ocr_model_size is None :
129+ ocr_model_size = 'small'
125130 self .ocr_model_size : str | None = ocr_model_size
126131
127132 # ===================================================================
@@ -400,7 +405,7 @@ def match_words(
400405 """
401406 all_match_result : dict = self .run_ocr (image , threshold , merge_line_distance = merge_line_distance )
402407 match_key = set ()
403- for k in all_match_result . keys () :
408+ for k in all_match_result :
404409 for w in words :
405410 ocr_result : str = k
406411 ocr_target = gt (w , 'ocr' )
@@ -533,7 +538,7 @@ def _emit_overlay_vision_from_ocr_results(
533538 return
534539
535540 offset_x , offset_y = bus .crop_offset
536- for i , result in enumerate ( ocr_results [:60 ]) :
541+ for result in ocr_results [:60 ]:
537542 label = str (result .data or "" ).strip ()
538543 if len (label ) > 32 :
539544 label = label [:29 ] + "..."
0 commit comments