
    i^T                         S SK r S SKrS SKrS SKrS SKrS SKr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 SKJr  S SKJr  S SKJr  S S	KJr  S
 rS rS rSS jr  SS jrS rSS jrg)    N)	to_static)OrderedDict)version)ArgumentParserRawDescriptionHelpFormatter)build_model)build_post_process)
load_model)
get_loggerc                 B    U R                  SUR                  5       5      $ )Nztag:yaml.org,2002:map)represent_mappingitems)self	dict_datas     b/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddleocr/ppocr/utils/export_model.pyrepresent_dictionary_orderr   !   s    !!"99??;LMM    c                  B    [         R                  " [        [        5        g N)yamladd_representerr   r    r   r   setup_orderdictr   %   s    &@Ar   c                 T	   [        5         [        5       n[        R                  R	                  [        R                  R                  U5      5      (       d3  [        R                  " [        R                  R                  U5      5        U S   R                  SS 5      (       a  SU S   S   0US'   U S   R                  SS 5      (       Ga  U S   nUS   S;   a  S/ S	Q/ S
Q/ SQ/0nOUS   S:X  a  S/ SQ/ SQ/ SQ/0nOUS   S:X  a5  U S   R                  SS 5      S:X  a  S/ SQ/ SQ/ SQ/0nOS/ SQ/ SQ/ SQ/0nOuUS   S:X  a  S/ SQ/ SQ/ SQ/0nO^US   S:X  a  S/ SQ/ SQ/ SQ/0nOGUS   S:X  a  S/ SQ/ SQ/ SQ/0nO0US   S:X  a  S/ S Q/ S Q/ S!Q/0nOUS   S":X  a  S/ S#Q/ S#Q/ S$Q/0nOS nS%S&/nS'U Vs0 s H  nUUS&:X  a  S(OS)U0_M     sn0nU(       a  XS*'   S+U S,   S-   S.   0US/'   [        5       n	U S0   R                  5        H/  u  pU S   R                  S5      S1;   a  U
S2:w  a  XU
'   M)  M+  XU
'   M1     U S   R                  S5      S3;   aH  U S   R                  S25      nUb/  [        US4S59 n[        R                  " U5      nXS6'   S S S 5        GO?GO=U S   R                  S5      S7;   a  U S   R                  S25      n[        R                  R                  US85      n[        R                  R                  US95      n0 U	S6'   Ub0  [        US4S59 n[        R                  " U5      nXS6   S:'   S S S 5        Ub1  [        US4S59 n[        R                  " U5      nXS6   S;'   S S S 5        OeOdU S   R                  S<5      bO  [        U S   S<   S4S59 nUR                  5       nU Vs/ s H  nUR                  S=5      PM     nnS S S 5        WU	S6'   XS0'   [        US>S4S59 n[        R                   " UUS?S@SA9  S S S 5        UR#                  SBR%                  [        R                  R                  U5      5      5        g s  snf ! , (       d  f       N= f! , (       d  f       GN+= f! , (       d  f       N= fs  snf ! , (       d  f       N= f! , (       d  f       N= f)CNGlobalpdx_model_name
model_nameuniform_output_enabledArchitecture	algorithm
SVTR_LCNet
SVTR_HGNetx)      0      )r%   r&   r'   i@  )   r&   r'     
model_typedet)r%   r&   r(   r(   )r%   r&   r*   r*   )r%   r&      r-   SLANetSLANet_plus)r%   r&       r0   )r%   r&   @     )r%   r&     r3   )r)   r&   r3   r3   SLANeXt)r%   r&      r5   LaTeXOCR)r%   r%   r0   r0   )r%   r%   r1   r2   )r%   r%        	UniMERNet)r)   r%   r7   r8   PP-FormulaNet-L)r%   r%      r;   )r)   r%   r;   r;   PP-FormulaNet-S)r%   r%     r=   )r)   r%   r=   r=   paddle_infertensorrtbackend_configsdynamic_shapestrt_dynamic_shapesHpitransform_opsEvaldataset
transforms
PreProcessPostProcess)r6   r9   r:   r<   rec_char_dict_pathr6   zutf-8)encodingcharacter_dict)r9   r:   r<   ztokenizer.jsonztokenizer_config.jsonfast_tokenizer_filetokenizer_config_filecharacter_dict_path
wFT)default_flow_styleallow_unicodez"Export inference config file to {})r   r   ospathexistsdirnamemakedirsgetr   openjsonloadjoin	readlinesstripr   dumpinfoformat)configrV   logger	infer_cfgarch_configcommon_dynamic_shapesbackend_keyskey
hpi_configpostprocesskvtokenizer_filetokenizer_config_handlerM   rN   rO   flineslines                       r   dump_infer_configrt   )   s%   I77>>"''//$/00
BGGOOD)*h,d33+VH-=>N-OP	(h4d;;^,{#'CCoH%! &%/&(8:LM%! %1h##$4d;}L./;KL)%
 ./;KL)% %2&(8:JK%! %3no7GH%! %4&(8:JK%! %)::&(8:JK%! %)::&(8:JK%! %)!&
3 (  (C ,/:,=(CW, 
 ( 	

 !)e.vy0I,0WXIl-K}%++-.!%%k2 7
 
 ((!"A ) N . n!!+.,>)--.BC%nw7;R!%+B!C0>,- 87 & 
		#	#K	0 5 

  )--.BC ggll>;KL "^=T U(*$%*)G<@W!%+B!CGU,-.CD = !,%(!%+B!CIW,-.EF	  - ( 56BfX&'<=PTU?D!Eut$**T"2u!E Q -;K()*m	dC'	*a		)Q5M 
+
KK4;;BGGLL<NOP} : 87 =<  "F QP 
+	*sT   :Q
9QQ Q2R3RR,R
Q 
Q/2
R R
R
R'c           
         US   S:X  a  US   S   n[         R                  R                  / SQSS9[         R                  R                  / SQS	S9[         R                  R                  S US
/S	S9[         R                  R                  S SXD/S	S9[         R                  R                  S SXD/S	S9//n[        XS9n GOWUS   S:X  aK  [         R                  R                  / SQSS9[         R                  R                  S /SS9//n[        XS9n GOUS   S;   a,  [         R                  R                  / SQSS9/n[        XS9n GOUS   S;   a.  [         R                  R                  S /U-   SS9/n[        XS9n GOUS   S:X  a,  [         R                  R                  / SQSS9/n[        XS9n GObUS   S:X  a,  [         R                  R                  / SQSS9/n[        XS9n GO-US   S:X  a,  [         R                  R                  / SQSS9/n[        XS9n GOUS   S:X  a9  U(       d  / SQn[         R                  R                  S /U-   SS9/n[        XS9n GOUS   S;   a,  [         R                  R                  / SQSS9/n[        XS9n GOUS   S;   a,  [         R                  R                  / SQSS9/n[        XS9n GOLUS   S:X  a,  [         R                  R                  / SQSS9/n[        XS9n GOUS   S :X  ar  US   S   n[         R                  R                  / SQSS9[         R                  R                  S /SS9[         R                  R                  S U/S	S9//n[        XS9n GOUS   S!:X  aq  [         R                  R                  / S"QSS9[         R                  R                  / S"QSS9[         R                  R                  S US   S   /S	S9//n[        XS9n GO"US   S#:X  a,  [         R                  R                  / S"QSS9/n[        XS9n GOUS   S$:X  a@  [         R                  R                  U [         R                  R                  / S%QSS9/S&S'9n GOUS   S(:X  a@  [         R                  R                  U [         R                  R                  / S)QSS9/S&S'9n GO[US   S*:X  a@  [         R                  R                  U [         R                  R                  / S+QSS9/S&S'9n GOUS   S,:X  a@  [         R                  R                  U [         R                  R                  / S-QSS9/S&S'9n GOUS   S.;   Ga-  [         R                  R                  S S//S	S9[         R                  R                  / S0QS	S9[         R                  R                  S S//S	S9[         R                  R                  S S//S	S9[         R                  R                  / S1QS	S9/nS2US3   S4   ;   aO  UR                  [         R                  R                  / S5QS	S9[         R                  R                  / S6QS	S9/5        U R                  R                  S7L a  UR                  S85        [        X/S9n O/ S9QnUS   S::X  a3  / S;QnS<U;   a(  US<   b"  US<   S4   S=:X  a  UR                  S>5        S?US@'   O'US   SA:X  a  / SBQnUS   SC:X  a  / SDQnUS   SE:X  a  / S9Qn[        U [         R                  R                  S /U-   SS9/S9n US   S:w  aY  US3   S4   SF:X  aM  U R                  5        H9  n[        USG5      (       d  M  [        USH5      (       a  M)  UR                  5         M;     U $ )INr    SRNHeadmax_text_length)Nr%   r1      float32)shapedtype)Nry   r%   int64r%   r)   )
input_specSAR)Nr&   r'   r(   r!   )Nr&   r'   SVTRCPPDPREN)Nr&   r1   ry   r+   sr)Nr&      r1   ViTSTR)Nr%      r   ABINet)r&   r0      )NRTRSPINRFL)Nr%   r0   d   )SATRN)Nr&   r0   r   	VisionLANRobustScannerCAN)Nr%   NNr6   r9   )r   r%   r7   r8   T)r~   
full_graphr4   )r   r&   r5   r5   r:   )r   r%   r;   r;   r<   )r   r%   r=   r=   )LayoutLM
LayoutLMv2	LayoutXLMr5   )Nr5      )Nr&   r   r   ReBackbonename)Nr5   r&   )NN   Fr   )r&   r   r   rec)r&   r0   r   	TransformTPSzWhen there is tps in the network, variable length input is not supported, and the input size needs to be the same as during trainingr   r   table)r&   r3   r3   TableMaster)r&     r   r.   	PPLCNetV3rep	is_repped)paddlestatic	InputSpecr   jitextendbackboneuse_visual_backbonepoprb   	sublayershasattrgetattrr   )	modelrg   re   input_shaperx   other_shaper~   infer_shapelayers	            r   dynamic_to_staticr      s   ;5(%f-.?@MM##*<I#N''nG'L''!4G (  ''OEW (  ''OEW ( 
 %8	[	!U	*MM##*<I#N]]$$D6$CD
 %8	[	!%A	AMM##*;9#M
 %8	[	!%5	5MM##4&;*>i#P
 %8	[	!V	+MM##*<I#N
 %8	\	"d	*MM##*;9#M
 %8	[	!X	-MM##*=Y#O
 %8	[	!X	-&KMM##4&;*>i#P
 %8	[	!%<	<MM##*<I#N
 %8	[	!Y	.MM##*<I#N
 %8	[	![	0MM##*<I#N
 %8	[	!_	4%f-.?@MM##*<I#N'' $	 (  ''t_.EW'U
 %8	[	!U	* ''.C9'U''.C9'U''V!45F!GHPW ( 
 %8	[	!Z	/MM##*?y#Q
 %8	[	![	0

$$''.?y'Q  % 
 
[	!Y	.

$$''.?y'Q  % 
 
[	!%6	6

$$''.?y'Q  % 
 
[	!%6	6

$$''.?y'Q  % 
 
[	!%L	LMM##4+W#EMM##.#HMM##4+W#EMM##4+W#EMM##*=W#M

 ;z*622MM++,G ,  MM++-W , 		 >>--6NN1%L9!|$-%K{*,8,V4= [ #&B&'1'K;'=8+;'83)''tf{.B)'T
 	L!T)
#F+{: __&Eue$$WUK-H-H		 ' Lr   c                    [        XX65      n UGc~   SS Kn[        R
                  " [        R                  5      n	US   R                  SS5      (       az  U	[        R
                  " S5      :  d  U	[        R
                  " S5      :X  a$  [        R                  R                  SS 5      S	;  d   e[        R                  R                  X5        OU	[        R
                  " S5      :  d  U	[        R
                  " S5      :X  am  U R                  R                  5         [        R                  R!                  5          [        XX65      n [        R                  R                  X5        S S S 5        O1[        R                  R                  X5        OUR#                  X5        UR%                  S
R'                  U5      5        g ! [         a    [        S5         GNf = f! , (       d  f       NK= f)Nr   z(Skipping import of the encryption moduler   export_with_pirFz3.0.0b2z0.0.0FLAGS_enable_pir_api)0Falsezinference model is saved to {})r   
encryptionModuleNotFoundErrorprintr   parser   __version__rZ   rU   environr   saveforwardrollback	pir_utils
OldIrGuardsave_quantized_modelrb   rc   )
r   rg   	save_pathre   	yaml_pathrd   r   quanterr   paddle_versions
             r   export_single_modelr   `  sq    e&FE	>
 !v'9'9:( 1599'--	"::!W]]7%;;**..!7>nTU U JJOOE-" 7==#99&&(%%002-e&VEJJOOE5 32 

1$$U6
KK077	BC
/  	> <=	>  32s   G :,GGG
G+c                 |   U R                  5        H  u  p[        U[        R                  5      (       ay  [        R                  " UR
                  UR                  UR                  UR                  UR                  5      nUR                  UR                  5       5        [        XU5        M  [        U5        M     g r   )named_children
isinstancennSyncBatchNormBatchNorm2D_num_features	_momentum_epsilon_weight_attr
_bias_attrset_dict
state_dictsetattr
convert_bn)r   nmbns       r   r   r     s|    $$&a))**ajj!..!,,B KK'Eb!qM 'r   c           
      V   [         R                  R                  5       S:w  a  g [        5       n[	        U S   U S   5      n[        US5      (       Ga   [        [        US5      5      nU S   S   S;   a  U S   S    H  nU S   S   U   S	   S
   S:X  aJ  0 nU S   S
   S:X  a  US-
  nU S   S
   S:X  a  US-
  nXWS'   US-   US'   US-   US'   UU S   S   U   S	   S'   OUU S   S   U   S	   S'   SU S   S   U   S'   M     OqU S   S	   S
   S:X  aX  0 n[        [        US5      5      nU S   S
   S:X  a  US-
  nU S   S
   S:X  a  US-
  nXWS'   US-   US'   US-   US'   XpS   S	   S'   O
XPS   S	   S'   U S   S   S:X  a  SU S   S   S'   U S   R                  S5      S;   a!  SU S   S   S'   SU S   S   S'   SU S   S	   S'   U S   R                  S5      S ;   a  SU S   S   S'   SU S   S	   S'   U S   R                  S5      S!;   a  SU S   S	   S'   UbY  Un[        U[         R                  5      (       a!  [        R                  " UR                  5      nO5[        R                  " U5      nO[        U S   5      n[        XU S   S   S"9  [!        U5        UR#                  5         U(       d  U S   S#   n[$        R&                  R)                  US$5      n	U S   n
U
S   S%;   a!  U
S	   S
   S:w  a  U S&   S'   S(   S)   S*   S+   nO_U
S   R+                  5       S,R+                  5       :X  a8  U S&   S'   S(    Vs/ s H  nS-U;   d  M  UPM     nnU(       a  US   S-   S+   OS nOS n[-        X	U5        U
S   S;   a|  [/        U
S   R1                  5       5      n[3        UR4                  5       HF  u  nn[$        R&                  R)                  UUS.5      n[7        UR8                  U   X   UUU	U 5        MH     g [$        R&                  R)                  US.5      n[7        UU
UUU	U US/9  g s  snf )0Nr   rI   r   	characterr   r    )DistillationModelsrw   r   	MultiHeadDistillationSARLabelDecoder   DistillationNRTRLabelDecoder&   CTCLabelDecodeSARLabelDecodeNRTRLabelDecodeout_channels_listout_channelsFreturn_all_featsr+   r   Tr   
infer_moderK   r   
is_predict	is_export)r9   )r<   r:   )r+   save_inference_dirzinference.ymlr   rE   rF   rG   SVTRRecResizeImgimage_shaper   ABINetRecResizeImg	inference)r   )r   distributedget_rankr   r	   r   lenr   rZ   r   DataParallelcopydeepcopy_layersr   r
   r   evalrU   rV   r^   lowerrt   listvalues	enumeratemodel_name_listr   
model_list)rd   
base_modelr   re   post_process_classchar_numrj   r   r   r   rg   r   crec_rsarchsidxr   sub_model_save_paths                     r   exportr
    sL   ""$)\F+F=,A6(CST !;//w1;?@.!+. 3
 
 n-h7>*84S9&A&I[X(*%m,V48TT#+a<m,V48UU#+a<:B&67:BQ,%&67;Ca<%&78 * >*84S9&A+ ! >*84S9&A& MR~&x056HI) 8* N#F+F3{B "7#5{CDHm$V,0@@#a<m$V,0AA#a<2:./2:Q,./3;a</0BS>"6*+>?=E>"6*>: nl+t3<@~{+L9 n!!+.,>;?~z*<8:>~z*;76:~v&{3n!!+.-?:>~z*;76:~v&{3n!!+. 3  7;~v&{3eV0011MM%--0EMM%(EF>236VN-CL-QRu	JJL8$%9:	Y8I(K 	K $44';6VnY/=bABTU
 
[	!	'	'	)X^^-=	= F^I.|<
<#q( < 	 

 IOfQi 45mDTXf0; $  [*1134"5#8#89IC"$'',,y$"L  %
# : GGLLK8	#	
3
s   8
P&P&r   )NN) rU   r   r\   r   shutilr   	paddle.nnr   
paddle.jitr   collectionsr   	packagingr   argparser   r   ppocr.modeling.architecturesr   ppocr.postprocessr	   ppocr.utils.save_loadr
   ppocr.utils.loggingr   r   r   rt   r   r   r   r
  r   r   r   <module>r     sh    
         #  @ 4 0 , *NBqQh@T (V	}
r   