
    9iBJ                        S SK r S SKrS SKrS SKJrJr  S SKJr  S SKr	\	R                  R                  5         S SKrS SKrS\ R                  S'   S SKJr  SSKJ
r
  SS	KJr  SS
KJr  SSKJrJr  / SQr/ SQr " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r  " S S5      r!\!" 5       r"g)    N)ABCabstractmethod)PathcriticalAISTUDIO_LOG)snapshot_download   )logging)	CACHE_DIR)download_and_extract)DISABLE_MODEL_SOURCE_CHECKMODEL_SOURCE(   ResNet18ResNet18_vdResNet34ResNet34_vdResNet50ResNet50_vd	ResNet101ResNet101_vd	ResNet152ResNet152_vdResNet200_vdPaddleOCR-VLzPP-LCNet_x0_25PP-LCNet_x0_25_textline_orizPP-LCNet_x0_35zPP-LCNet_x0_5zPP-LCNet_x0_75zPP-LCNet_x1_0PP-LCNet_x1_0_doc_oriPP-LCNet_x1_0_textline_orizPP-LCNet_x1_5zPP-LCNet_x2_5zPP-LCNet_x2_0zPP-LCNetV2_smallzPP-LCNetV2_basezPP-LCNetV2_largeMobileNetV3_large_x0_35MobileNetV3_large_x0_5MobileNetV3_large_x0_75MobileNetV3_large_x1_0MobileNetV3_large_x1_25MobileNetV3_small_x0_35MobileNetV3_small_x0_5MobileNetV3_small_x0_75MobileNetV3_small_x1_0MobileNetV3_small_x1_25ConvNeXt_tinyConvNeXt_smallConvNeXt_base_224ConvNeXt_base_384ConvNeXt_large_224ConvNeXt_large_384MobileNetV2_x0_25MobileNetV2_x0_5MobileNetV2_x1_0MobileNetV2_x1_5MobileNetV2_x2_0MobileNetV1_x0_25MobileNetV1_x0_5MobileNetV1_x0_75MobileNetV1_x1_0'SwinTransformer_tiny_patch4_window7_224(SwinTransformer_small_patch4_window7_224'SwinTransformer_base_patch4_window7_224(SwinTransformer_base_patch4_window12_384(SwinTransformer_large_patch4_window7_224)SwinTransformer_large_patch4_window12_384zPP-HGNet_tinyzPP-HGNet_smallzPP-HGNet_basezPP-HGNetV2-B0zPP-HGNetV2-B1zPP-HGNetV2-B2zPP-HGNetV2-B3zPP-HGNetV2-B4zPP-HGNetV2-B5zPP-HGNetV2-B6zFasterNet-LzFasterNet-MzFasterNet-SzFasterNet-T0zFasterNet-T1zFasterNet-T2z
StarNet-S1z
StarNet-S2z
StarNet-S3z
StarNet-S4MobileNetV4_conv_smallMobileNetV4_conv_mediumMobileNetV4_conv_largeMobileNetV4_hybrid_mediumMobileNetV4_hybrid_largeCLIP_vit_base_patch16_224CLIP_vit_large_patch14_224zPP-LCNet_x1_0_MLzPP-HGNetV2-B0_MLzPP-HGNetV2-B4_MLzPP-HGNetV2-B6_MLResNet50_MLCLIP_vit_base_patch16_448_MLzPP-YOLOE_plus-XzPP-YOLOE_plus-LzPP-YOLOE_plus-MzPP-YOLOE_plus-Sz	RT-DETR-Lz	RT-DETR-Hz	RT-DETR-XzYOLOv3-DarkNet53zYOLOv3-MobileNetV3zYOLOv3-ResNet50_vd_DCNzYOLOX-LzYOLOX-MzYOLOX-NzYOLOX-SzYOLOX-TzYOLOX-XzRT-DETR-R18zRT-DETR-R50z	PicoDet-Sz	PicoDet-LzDeeplabv3-R50zDeeplabv3-R101zDeeplabv3_Plus-R50zDeeplabv3_Plus-R101zPP-ShiTuV2_reczPP-ShiTuV2_rec_CLIP_vit_basezPP-ShiTuV2_rec_CLIP_vit_largezPP-LiteSeg-TzPP-LiteSeg-BzOCRNet_HRNet-W48zOCRNet_HRNet-W18zSegFormer-B0zSegFormer-B1zSegFormer-B2zSegFormer-B3zSegFormer-B4zSegFormer-B5SeaFormer_tinySeaFormer_smallSeaFormer_baseSeaFormer_largezMask-RT-DETR-HzMask-RT-DETR-LPP-OCRv4_server_reczMask-RT-DETR-SzMask-RT-DETR-MzMask-RT-DETR-XSOLOv2zMaskRCNN-ResNet50zMaskRCNN-ResNet50-FPNzMaskRCNN-ResNet50-vd-FPNzMaskRCNN-ResNet101-FPNzMaskRCNN-ResNet101-vd-FPNzMaskRCNN-ResNeXt101-vd-FPNzCascade-MaskRCNN-ResNet50-FPNz'Cascade-MaskRCNN-ResNet50-vd-SSLDv2-FPNzPP-YOLOE_seg-SPP-OCRv3_mobile_recen_PP-OCRv3_mobile_reckorean_PP-OCRv3_mobile_recjapan_PP-OCRv3_mobile_recchinese_cht_PP-OCRv3_mobile_recte_PP-OCRv3_mobile_recka_PP-OCRv3_mobile_recta_PP-OCRv3_mobile_reclatin_PP-OCRv3_mobile_recarabic_PP-OCRv3_mobile_reccyrillic_PP-OCRv3_mobile_recdevanagari_PP-OCRv3_mobile_recen_PP-OCRv4_mobile_recPP-OCRv4_server_rec_docPP-OCRv4_mobile_recPP-OCRv4_server_detPP-OCRv4_mobile_detPP-OCRv3_server_detPP-OCRv3_mobile_detPP-OCRv4_server_seal_detPP-OCRv4_mobile_seal_detch_RepSVTR_recch_SVTRv2_recz"PP-LCNet_x1_0_pedestrian_attributezPP-LCNet_x1_0_vehicle_attributePicoDet_layout_1xPicoDet_layout_1x_tableSLANetSLANet_plusLaTeX_OCR_rec	UniMERNetPP-FormulaNet-SPP-FormulaNet-LPP-FormulaNet_plus-SPP-FormulaNet_plus-MPP-FormulaNet_plus-LzFasterRCNN-ResNet34-FPNzFasterRCNN-ResNet50zFasterRCNN-ResNet50-FPNzFasterRCNN-ResNet50-vd-FPNz!FasterRCNN-ResNet50-vd-SSLDv2-FPNzFasterRCNN-ResNet101zFasterRCNN-ResNet101-FPNzFasterRCNN-ResNeXt101-vd-FPNzFasterRCNN-Swin-Tiny-FPNzCascade-FasterRCNN-ResNet50-FPNz)Cascade-FasterRCNN-ResNet50-vd-SSLDv2-FPNUVDocDLinearNLinearRLinearNonstationaryTimesNetTiDEPatchTST
DLinear_adAutoEncoder_adNonstationary_adPatchTST_adTimesNet_adTimesNet_clsSTFPMzFCOS-ResNet50zDETR-R50zPP-YOLOE-L_vehiclezPP-YOLOE-S_vehiclezPP-ShiTuV2_detzPP-YOLOE-S_humanzPP-YOLOE-L_humanz	PicoDet-Mz
PicoDet-XSzPP-YOLOE_plus_SOD-LzPP-YOLOE_plus_SOD-SzPP-YOLOE_plus_SOD-largesize-LzCenterNet-DLA-34zCenterNet-ResNet50PicoDet-S_layout_3clsPicoDet-S_layout_17clsPicoDet-L_layout_3clsPicoDet-L_layout_17clsRT-DETR-H_layout_3clsRT-DETR-H_layout_17clsPicoDet_LCNet_x2_5_face	BlazeFacezBlazeFace-FPN-SSHzPP-YOLOE_plus-S_faceMobileFaceNetResNet50_facezPP-YOLOE-R-LzCo-Deformable-DETR-R50zCo-Deformable-DETR-Swin-TzCo-DINO-R50zCo-DINO-Swin-Lwhisper_largewhisper_basewhisper_mediumwhisper_smallwhisper_tinyzPP-TSM-R50_8frames_uniformz PP-TSMv2-LCNetV2_8frames_uniformz!PP-TSMv2-LCNetV2_16frames_uniformMaskFormer_tinyMaskFormer_smallPP-LCNet_x1_0_table_clsSLANeXt_wiredSLANeXt_wirelessRT-DETR-L_wired_table_cell_det!RT-DETR-L_wireless_table_cell_detYOWOzPP-TinyPose_128x96zPP-TinyPose_256x192zGroundingDINO-Tz	SAM-H_boxzSAM-H_pointPP-DocLayoutV2PP-DocLayout-LPP-DocLayout-MPP-DocLayout-SPP-DocLayout_plus-LPP-DocBlockLayout	BEVFusionzYOLO-Worldv2-LPP-DocBee-2BPP-DocBee-7BPP-Chart2TablePP-OCRv5_server_detPP-OCRv5_mobile_detPP-OCRv5_server_recPP-OCRv5_mobile_receslav_PP-OCRv5_mobile_recPP-DocBee2-3Blatin_PP-OCRv5_mobile_reckorean_PP-OCRv5_mobile_recth_PP-OCRv5_mobile_recel_PP-OCRv5_mobile_recen_PP-OCRv5_mobile_recarabic_PP-OCRv5_mobile_recte_PP-OCRv5_mobile_recta_PP-OCRv5_mobile_recdevanagari_PP-OCRv5_mobile_reccyrillic_PP-OCRv5_mobile_rec)MrU   rP   ra   rb   rV   rW   rM   rX   r   rO   rR   rN   r   rg   rT   r   r   r   r   r   rc   rd   r   r   r~   r}   r   r   r   r   r   r   r   r   r   r   r   rj   rm   rl   rk   ri   r   r   r   r   r^   rL   r]   r\   rZ   r`   r[   rY   rJ   r_   r   r   r   r   r   r   r   r   re   rf   r   r   rS   rQ   rh   rn   r   r   r   r   r   c                   P    \ rS rSrSr/ rSrSrS rS r	\
S 5       r\S 5       rS	rg)
_BaseModelHosteri   N   c                     Xl         g N	_save_dir)selfsave_dirs     g/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/paddlex/inference/utils/official_models.py__init___BaseModelHoster.__init__  s    !    c                 2   XR                   ;   d"   SU SU R                  R                   S35       eU R                  U -  n[        R
                  " SU SU S35        U R                  X5        [        R                  " SU SU R                   S	35        U$ )
Nz
The model z is not supported on hosting !zUsing official model (zB), the model files will be automatically downloaded and saved in ``.`z4` model files has been download from model source: `z`!)	
model_list	__class____name__r   r
   info	_downloaddebugalias)r   
model_name	model_dirs      r   	get_model_BaseModelHoster.get_model  s    //)	\
|#@AXAX@YYZ[	\) NN
|4	$ZL0rs|r}}  A	
 	z-
|OPTPZPZ|[]^	
 r   c                     [         er   )NotImplementedErrorr   s    r   r   _BaseModelHoster._download  s    !!r   c                     U R                   c  g [        R                  " U R                   U R                  S9nUR                  S:H  $ ! [
         a'    [        R                  " SU R                   S35         gf = f)NT)timeoutzThe model hosting platform(z) is unreachable!F)	healthcheck_urlrequestshead_healthcheck_timeoutok	Exceptionr
   r   r   )clsresponses     r   is_available_BaseModelHoster.is_available  ss    &	}}##S-E-EH ;;$&& 	MM7~EVWX	s   7A .A98A9r   )r   
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   classmethodr   __static_attributes__ r   r   r   r     sI    EJO"  " " 
 
r   r   c                   >    \ rS rSr\rSrSrSrSr	SSSS	S
S.r
S rSrg)_BosModelHosteri  bosz*https://paddle-model-ecology.bj.bcebos.comzpaddle3.0.0zKhttps://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_modelzwhisper_large.tarzwhisper_base.tarzwhisper_medium.tarzwhisper_small.tarzwhisper_tiny.tar)r   r   r   r   r   c                     XR                   ;   a  U R                   U   nOU S3nU R                   SU R                   SU 3n[        XBR                  USS9  g )Nz
_infer.tar/F)	overwrite)special_model_fnbase_urlversionr   parent)r   r   r   fnurls        r   r   _BosModelHoster._download  sX    ...&&z2B<z*Bqat4S//:Or   r   N)r   r   r   r   
ALL_MODELSr   r   r   r   r   r   r   r   r   r   r   r   r     s=    JEBOGU  -*.,*Pr   r   c                   &    \ rS rSr\rSrSrS rSr	g)_HuggingFaceModelHosteri  huggingfacezhttps://huggingface.coc                 F  ^ U4S jn[         R                  R                  U5      (       a	  U" U5        g [        R                  " 5        n[         R                  R                  US5      nU" U5        [        R                  " XR5        S S S 5        g ! , (       d  f       g = f)Nc                 6   > [         R                  " ST 3U S9  g NPaddlePaddle/repo_id	local_dir)hf_hubr   r   r   s    r   _clone1_HuggingFaceModelHoster._download.<locals>._clone  s    $$'
|4	r   temp_dirospathexiststempfileTemporaryDirectoryjoinshutilmover   r   r   r   tdr   s    `    r   r   !_HuggingFaceModelHoster._download  g    	
 77>>(##8,,."77<<J7x H/ /..   
?B
B r   N
r   r   r   r   
OCR_MODELSr   r   r   r   r   r   r   r   r   r     s    JE.O0r   r   c                   &    \ rS rSr\rSrSrS rSr	g)_ModelScopeModelHosteri  
modelscopezhttps://modelscope.cnc                 F  ^ U4S jn[         R                  R                  U5      (       a	  U" U5        g [        R                  " 5        n[         R                  R                  US5      nU" U5        [        R                  " XR5        S S S 5        g ! , (       d  f       g = f)Nc                 6   > [         R                  " ST 3U S9  g r   )r  r   r   s    r   r   0_ModelScopeModelHoster._download.<locals>._clone  s    (('
|4	r   r   r   r  s    `    r   r    _ModelScopeModelHoster._download  r
  r  r   Nr  r   r   r   r  r    s    JE-O0r   r  c                   &    \ rS rSr\rSrSrS rSr	g)_AIStudioModelHosteri  aistudiozhttps://aistudio.baidu.comc                 F  ^ U4S jn[         R                  R                  U5      (       a	  U" U5        g [        R                  " 5        n[         R                  R                  US5      nU" U5        [        R                  " XR5        S S S 5        g ! , (       d  f       g = f)Nc                 H   > TS:X  a  [        ST 3U S9  g [        ST 3U S9  g )Nr   r   r   zPaddleX/)aistudio_downloadr   s    r   r   ._AIStudioModelHoster._download.<locals>._clone  s2    ^+!+J<8I "HZL*AYWr   r   r   r  s    `    r   r   _AIStudioModelHoster._download  sh    	X 77>>(##8,,."77<<J7x H/ /..r  r   Nr  r   r   r   r  r    s    JE2O0r   r  c                   b    \ rS rSr\r\" \5      S-  r\	\
\\/rSS jrS rS rS rS rS	 rS
rg)_ModelManageri  official_modelsNc                 .    U R                  5       U l        g r   )_build_hosters_hostersr   s    r   r   _ModelManager.__init__'  s    ++-r   c                 `   [         (       a  [        R                  " S5        / nU R                   H\  nUR                  [
        :X  a$  UR                  SU" U R                  5      5        M;  UR                  U" U R                  5      5        M^     U$ [        R                  " S5        / nU R                   H  nUR                  [
        :X  a;  UR                  5       (       a$  UR                  SU" U R                  5      5        MP  MR  UR                  5       (       d  Mi  UR                  U" U R                  5      5        M     [        U5      S:X  a[  [        R                  " S[        R                   S[        R                   S[        R                   S[        R                   S3	5        U$ )	NzhConnectivity check to the model hoster has been skipped because `DISABLE_MODEL_SOURCE_CHECK` is enabled.r   zChecking connectivity to the model hosters, this may take a while. To bypass this check, set `DISABLE_MODEL_SOURCE_CHECK` to `True`.zvNo model hoster is available! Please check your network connection to one of the following model hoster: HuggingFace (z), ModelScope (z), AIStudio (z), or BOS (z,). Otherwise, only local models can be used.)r   r
   warninghoster_candidatesr   r   insertr   appendr   lenr   r   r  r  r   )r   hosters
hoster_clss      r   r!  _ModelManager._build_hosters*  s   %%OOz G"44
##|3NN1j&@ANN:dnn#=>	 5
 N S	
 00J</**,,NN1j&@A - **,,NN:dnn#=> 1 w<1OO I  Ja  Jq  Jq  Ir  rA  BX  Bh  Bh  Ai  iv  wK  w[  w[  v\  \g  hw  hG  hG  gH  Ht  u r   c                    US:X  a  SnU R                   U -  n[        R                  R                  U5      (       a  [        R
                  " SU S35        OX[        U R                  5      S:X  a#  Sn[        R                  " U5        [        U5      eU R                  U R                  U5      nUS:X  a1  US-  nUR                  5       (       a  UR                  5       (       a  U$ U$ )NzPaddleOCR-VL-0.9Br   zeModel files already exist. Using cached files. To redownload, please delete the directory manually: `r   r   zTNo available model hosting platforms detected. Please check your network connection.)r   r   r   r  r
   r   r)  r"  errorr   _download_from_hosteris_dir)r   r   r   msgvl_model_dirs        r   _get_model_local_path#_ModelManager._get_model_local_pathI  s    ,,'JNN
|4	77>>)$$LLw  yB  xC  CE  F 4==!Q&lc"n$224==*MI'$'::L""$$)<)<)>)>##r   c                    [        U5       H*  u  p4X$R                  ;   d  M   UR                  U5      nUs  $    [        SU S	35      e! [         a  n[	        U5      S::  a  [        SUR
                   S35      e[        R                  " SUR
                   SU SXS-      R
                   S35        U R                  XS-   S  U5      s S nAs  $ S nAff = f)
Nr   z-Encounter exception when download model from zN. No model source is available! Please check network or use local model files!z0Encountering exception when download model from z: 
z2, will try to download from other model sources: `r   z(No model source is available for model `zA`! Please check model name and network, or use local model files!)		enumerater   r   r   r)  r   r
   r%  r/  )r   r*  r   idxhoster
model_pathes          r   r/  #_ModelManager._download_from_hostera  s(   $W-KC...V!'!1!1*!=J%%	 . 6zl  CD  E
 	
 ! V7|q('KFLL>  Zh  i  OOJ6<<.X\]^\_  `R  SZ  ab  [b  Sc  Si  Si  Rj  jl  m  55gAgi6H*UUVs   A		
CA7C
CCc                     XR                   ;   $ r   )r   r   r   s     r   __contains___ModelManager.__contains__u  s    __,,r   c                 $    U R                  U5      $ r   )r3  r=  s     r   __getitem___ModelManager.__getitem__x  s    ))*55r   )r"  )returnN)r   r   r   r   r   r   r   r   r   r   r  r  r   r&  r   r!  r3  r/  r>  rA  r   r   r   r   r  r    sH    JY"33I	.>0
(-6r   r  )#r   r  r  abcr   r   pathlibr   huggingface_hubr   r
   set_verbosity_errorr  r   environaistudio_sdk.snapshot_downloadr   r  utilsutils.cacher   utils.downloadr   utils.flagsr   r   r   r  r   r   r   r  r  r  r  r   r   r   <module>rN     s    
   #     " " $  '

>  Q  $ 2 Ca
H	N
b(s (VP& P40. 0(0- 0(0+ 0.\6 \6~  /r   