
    iŏ              	       J   S SK r S SKrS SKJr  \ R                  R                  \ R                  R                  \5      5      r\R                  R                  \5        \R                  R                  S \ R                  R                  \ R                  R                  \S5      5      5        S\ R                  S'   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s  Jr  S SKJr  S SKJr  S SKJrJr  \" 5       r " S	 S
\5      r S r!\"S:X  a  \!" \RF                  " 5       5        gg)    N)Imagez../..auto_growthFLAGS_allocator_strategy)build_post_process)
get_logger)get_image_file_listcheck_and_readc                       \ rS rSrSS jrS rS rS rS rS r	SS	 jr
S
 rS rS\R                  4S jrS rS rSS jrS rS rS rSrg)TextRecognizer'   Nc                    Uc
  [        5       nUR                  R                  S5       Vs/ s H  n[        U5      PM     snU l        UR                  U l        UR
                  U l        SUR                  UR                  S.nU R
                  S:X  a  SUR                  UR                  S.nGOU R
                  S:X  a  SUR                  UR                  S.nGOTU R
                  S:X  a  S	UR                  UR                  S.nGO(U R
                  S
:X  a  SUR                  UR                  S.nGOU R
                  S:X  a'  SUR                  UR                  UR                  S.nGOU R
                  S:X  a  SUR                  UR                  S.nGOU R
                  S:X  a  SUR                  UR                  S.nGOmU R
                  S:X  a  SUR                  UR                  S.nGOAU R
                  S:X  a  SUR                  UR                  SS.nGOU R
                  S:X  a  SS UR                  S.nOU R
                  S:X  a  SUR                  UR                  SS.nOU R
                  S;   a  SUR                  UR                  SS.nOU R
                  S:X  a  SS 0nOU R
                  S!:X  a,  UR                  U l
        S"UR                  UR                  S.nOJU R
                  S#:X  a  S$UR                  S%.nO*U R
                  S&:X  a  S'UR                  UR                  S.n[        U5      U l        X@l        [        R                  " US(U5      u  U l        U l        U l        U l        UR(                  U l        UR*                  U l        UR(                  (       a  S)S Kn[.        R0                  " 5       n[        R2                  " 5       nUR5                  S(UR6                  UR                  S*S U R&                  US UR8                  (       a  UOS / S+QS)US,9U l        UR<                  U l        g s  snf )-N,CTCLabelDecode)namecharacter_dict_pathuse_space_charSRNSRNLabelDecodeRAREAttnLabelDecodeNRTRNRTRLabelDecodeSARSARLabelDecode	VisionLANVLLabelDecode)r   r   r   max_text_lengthViTSTRViTSTRLabelDecodeABINetABINetLabelDecodeSPINSPINLabelDecodeRobustScannerT)r   r   r   	rm_symbolRFLRFLLabelDecodeSATRNSATRNLabelDecode)CPPDCPPDPaddingCPPDLabelDecodePRENr   PRENLabelDecodeCANCANLabelDecodeLaTeXOCRLaTeXOCRDecode)r   rec_char_dict_pathParseQParseQLabelDecoderecr   dynamic)preprocess_timeinference_timepostprocess_time)
model_namemodel_precision
batch_size
data_shape	save_pathinference_configpidsprocess_namegpu_ids	time_keyswarmuplogger)r   rec_image_shapesplitintrec_batch_numrec_algorithmr3   r   r   rec_image_inverseinverser   postprocess_oppostprocess_paramsutilitycreate_predictor	predictorinput_tensoroutput_tensorsconfig	benchmarkuse_onnxauto_logosgetpidget_infer_gpuid
AutoLogger	precisionuse_gpuautologreturn_word_box)selfargsrF   vrO   rX   pidgpu_ids           a/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddleocr/tools/infer/predict_rec.py__init__TextRecognizer.__init__(   s)   >\F040D0D0J0J30OP0O1A0OP!//!//$#'#:#:"11

 &('+'>'>"&"5"5"
 6))'+'>'>"&"5"5"
 6))'+'>'>"&"5"5"
 5(('+'>'>"&"5"5"
 ;.''+'>'>"&"5"5#'#7#7	" 8++'+'>'>"&"5"5"
 8++'+'>'>"&"5"5"
 6))'+'>'>"&"5"5"
 ?2('+'>'>"&"5"5!	" 5(('+"&"5"5"
 7**'+'>'>"&"5"5!	" #::)'+'>'>"&"5"5!	" 6)"(*;!<5(11DL('+'>'>"&"5"5"
 :-(&*&=&=" 8++'+'>'>"&"5"5"
 11CD"4 $$T5&9	
NK>>))+C,,.F#..  $--$!%!"&,,DS / DL  $33K  Qs   P<c                 $   U R                   u  p4nU R                  S:X  d  U R                  S:X  GaE  [        R                  " U[        R                  5      n[
        R                  " [        R                  " U5      5      nU R                  S:X  a"  UR                  XT/[
        R                  5      nO+UR                  XT/[
        R                  R                  5      n[        R                  " U5      n[        R                  " US5      nUR                  S5      nU R                  S:X  a$  UR!                  [        R"                  5      S-  nU$ UR!                  [        R"                  5      S-  S-
  nU$ U R                  S:X  a  [        R                  " U[        R                  5      n[        R                  " XU4[        R$                  S	9nUR!                  S
5      nUS-  nU[        R&                  S S 24   nUS-  nUS-  nU$ X1R(                  S   :X  d   e[+        XB-  5      nU R,                  (       a=  U R.                  R(                  SS  S   n	[1        U	[2        5      (       a  OU	b  U	S:  a  U	nUR(                  S S u  pU	[5        U
5      -  n[6        R8                  " XK-  5      U:  a  UnO![+        [6        R8                  " XK-  5      5      nU R                  S:X  a0  XR                   S   :  a  U R                   S   nU R                   S   n[        R                  " XU45      nUR!                  S
5      nUR                  S5      S-  nUS-  nUS-  n[        R:                  " X4U4[        R"                  S9nXS S 2S S 2SU24'   U$ )Nr   r      r           o@g      `@      ?r&   interpolationfloat32         ?rl      r   r   dtype)rG   rK   cv2cvtColorCOLOR_BGR2GRAYr   	fromarraynpuint8resizeBICUBIC
ResamplingLANCZOSarrayexpand_dims	transposeastyperr   INTER_CUBICnewaxisshaperI   rW   rS   
isinstancestrfloatmathceilzeros)ra   imgmax_wh_ratioimgCimgHimgW	image_pilnorm_imgresized_imagewhratio	resized_w
padding_ims                 rf   resize_norm_imgTextRecognizer.resize_norm_img   s
   //D'4+=+=+I,,sC$6$67C6I!!X-&&|U]]C&&|U5E5E5M5MN((3-C~~c2.H)))4H!!X-#??2::6> O $??2::6>DO5(,,sC$6$67CJJs4LXM)00;M)C/M)"**a-8MS MS M  yy|###D')==!!''+A.A!S!!1q5yy!}E!H99T\"T)IDIIdl34I'//22 003	''*D

3D(9:%,,Y7%//	:S@XXt40

C
(51a9$%    c                     Uu  p4nUS S 2S S 2S S S24   n[         R                  " XU4[         R                  S9nUR                  S5      nUR	                  S5      S-  nU$ )Nrj   rp   rr   rk   rs   rx   r~   INTER_LINEARr   r   ra   r   image_shaper   r   r   r   s          rf   resize_norm_img_vl!TextRecognizer.resize_norm_img_vl   sd    &D!Q"*o

3tCDTDTU%,,Y7%//	:S@r   c                    Uu  p4n[         R                  " XE45      nUR                  S   nUR                  S   nXS-  ::  a  [        R                  " XS-  U45      n	O`XS-  ::  a  [        R                  " XS-  U45      n	O<XS-  ::  a  [        R                  " XS-  U45      n	O[        R                  " XU45      n	[         R
                  " U	5      n
[        R                  " U
[        R                  5      n
XS S 2SU
R                  S   24'   US S 2S S 2[         R                  4   nUR                  u  pnSn[         R                  " XmX45      R                  [         R                  5      $ )Nr   rm   rl   ru   )r|   r   r   rx   r~   asarrayry   rz   r   reshaper   rr   )ra   r   r   r   r   r   	img_blackim_heiim_widimg_newimg_nprowcolcs                 rf   resize_norm_img_srn"TextRecognizer.resize_norm_img_srn   s2   &DHHd\*	11aZjjax&67Gz!jjax&67Gz!jjax&67GjjTl3GG$fc&8&89,2!Qa(()aBJJ./	oo!zz)]3::2::FFr   c                 (   Uu  pEn[        US-  US-  -  5      n[        R                  " [        SU5      5      R	                  US45      R                  S5      n[        R                  " [        SU5      5      R	                  US45      R                  S5      n	[        R                  " SX345      n
[        R                  " U
S5      R	                  SSX3/5      n[        R                  " USUSS/5      R                  S5      S/-  n[        R                  " U
S5      R	                  SSX3/5      n[        R                  " USUSS/5      R                  S5      S/-  nU[        R                  S S 24   nU	[        R                  S S 24   n	UU	UU/$ )N   r   rm   int64rj   rr   g    e)rI   r|   r   ranger   r   onestriutiletrilr   )ra   r   	num_headsr   r   r   r   feature_dimencoder_word_posgsrm_word_posgsrm_attn_bias_datagsrm_slf_attn_bias1gsrm_slf_attn_bias2s                rf   srn_other_inputsTextRecognizer.srn_other_inputs  s   &D4!8q12 HHU1k*+33[!4DELLWU 	 HHU1o./Woq)*VG_ 	 !ggq/&KL gg&91=EEO5
 !gg&9Ay!Q;OPWW
F !gg&92>FFO5
 !gg&9Ay!Q;OPWW
F ,BJJM:%bjj!m4 	
 	
r   c                    U R                  X5      nU[        R                  S S 24   nU R                  X#U5      u  nnnn	UR	                  [        R
                  5      nU	R	                  [        R
                  5      n	UR	                  [        R                  5      nUR	                  [        R                  5      nUUUUU	4$ N)r   r|   r   r   r   rr   r   )
ra   r   r   r   r   r   r   r   r   r   s
             rf   process_image_srn TextRecognizer.process_image_srn1  s    ++C=BJJM* !!+/J	
 288D188D+22288<%,,RXX6 
 	
r   c                    Uu  pEpgUR                   S   nUR                   S   n	Sn
[        SU-  5      nU	[        U5      -  n[        R                  " X\-  5      nX-  S:w  a  [        X-  5      U-  nUb  [        Xm5      nUb  [        SSU-  U-  5      n
[        X}5      n[        R                  " XU45      nUR                  S5      nUS   S:X  a  US-  nU[        R                  S S 24   nOUR                  S5      S-  nUS-  nUS-  nUR                   nS[        R                  " XEU4[        R                  S	9-  nUUS S 2S S 2SU24'   UR                   nUUUU
4$ )
Nr   rm   ro   rr   rs   rk   rt   g      rv   )r   rI   r   r   r   roundmaxminrx   r~   r   r|   r   r   r   rr   )ra   r   r   width_downsample_ratior   r   imgW_minimgW_maxr   r   valid_ratiowidth_divisorr   resize_wr   resize_shaper   	pad_shapes                     rf   resize_norm_img_sar"TextRecognizer.resize_norm_img_sarI  sv   )4&HIIaLIIaLA 667E!H99T\*#q(X56FH8.Hc3>H#<=K8.H

34(89%,,Y7q>Q)C/M)"**a-8M)33I>DM$**BGGT$:"**MM
'4
1a8#$$$	<K??r   c                    [         R                  " U[         R                  5      n[         R                  " U[	        SS/5      [         R
                  5      n[        R                  " U[        R                  5      n[        R                  " US5      nUR                  S5      nS/nS/n[        R                  " U[        R                  S9n[        R                  " U[        R                  S9n[        R                  " UR                  SS5      5      nS[        R                  " UR                  SS5      5      -  nX-  nX-  nU$ )Nd       rj   rk   g     _@rv   rm   )rx   ry   rz   r~   tupler   r|   r   rr   r   r   r   )ra   r   meanstdstdinvs        rf   resize_norm_img_spin#TextRecognizer.resize_norm_img_spink  s    ll3 2 23jjeS"I.@hhsBJJ'nnS"%mmI&wgxxBJJ/hhs"**-zz$,,q"-.RZZAr 233
r   c                     Uu  p4n[         R                  " XU4[         R                  S9nUR                  S5      nUR	                  S5      S-  nUS-  nUS-  nU$ )Nrp   rr   rk   rs   rt   r   r   s          rf   resize_norm_img_svtr#TextRecognizer.resize_norm_img_svtr|  se    &D

3tCDTDTU%,,Y7%//	:S@r   Tc                 h   Uu  pVnUR                   S   nUR                   S   n	U(       d  [        R                  " XU4US9n
UnOfU	[        U5      -  n[        R
                  " Xl-  5      U:  a  UnO![        [        R
                  " Xl-  5      5      n[        R                  " XU45      n
U
R                  S5      n
US   S:X  a  U
S-  n
U
[        R                  S S 24   n
OU
R                  S5      S-  n
U
S-  n
U
S-  n
[        R                  " XVU4[        R                  S9nXS S 2S S 2SU24'   U$ )	Nr   rm   rp   rr   rs   rk   rt   rv   )r   rx   r~   r   r   r   rI   r   r|   r   r   r   rr   )ra   r   r   paddingrq   r   r   r   r   r   r   r   r   r   s                 rf   resize_norm_img_cppd_padding+TextRecognizer.resize_norm_img_cppd_padding  s$    'DIIaLIIaLJJs4LVMIaLEyy&- 			$, 78	JJs,=>M%,,Y7q>Q)C/M)"**a-8M)33I>DMXXt40

C
(51a9$%r   c                 D   Uu  p4n[         R                  " XU4[         R                  S9nUR                  S5      nUS-  n[        R
                  " / SQ5      n[        R
                  " / SQ5      nXgS   -
  US   -  nUR                  S5      nUR                  S5      nU$ )Nrp   rr   rn   )g
ףp=
?gv/?gCl?)gZd;O?gy&1?g?)NN.rk   )rx   r~   r   r   r|   r   r   )	ra   r   r   r   r   r   r   r   r   s	            rf   resize_norm_img_abinet%TextRecognizer.resize_norm_img_abinet  s    &D

3tCDTDTU%,,Y7%-xx-.hh,-&o)>>#oBVV%//	:%,,Y7r   c                    [         R                  " U[         R                  5      nU R                  (       a  SU-
  nU R                  S   S:X  ab  UR
                  u  p4U R                  u  pVnX6:  d  XG:  a;  [        Xc-
  S5      n[        Xt-
  S5      n	[        R                  " USU4SU	44SSS9n
U
n[        R                  " US5      S-  nUR                  S5      nU$ )Nrs   r   rm   constantconstant_valuesrn   rr   )rx   ry   rz   rM   rG   r   r   r|   padr   r   )ra   r   r   r   r   _r   r   	padding_h	padding_w
img_paddeds              rf   norm_img_canTextRecognizer.norm_img_can  s    ll3 2 23<<)C"a'99DA 00MATx18!,	!,	VV^a^4%(	
 !nnS!$u,jj#
r   c                    Sn[         R                  " UR                  S5      5      nUS   R                  5       S:X  a#  US   R	                  [         R
                  5      nO%SUS   -
  R	                  [         R
                  5      nXDR                  5       -
  UR                  5       UR                  5       -
  -  S-  nUR                  5       U:  a%  SXC:  R	                  [         R
                  5      -  nO)SXC:  R	                  [         R
                  5      -  nSU-
  n[        R                  " U5      n[        R                  " U5      u  pxpXHX-   2XwU	-   24   n[        R                  " U5      R                  S5      n/ nX4 H/  n[        X5      u  nnUR                  X/US:  a  SOS-   -  5        M1     [        R                   " SUS5      nUR#                  USSUR$                  S   UR$                  S   45        U$ )	N   LA).rj   r   ).r   rs   Lrm   )r|   r   convertvarr   r}   r   r   r   rx   findNonZeroboundingRectr   r{   divmodappendnewpastesize)ra   r   divable	thresholddatagraycoordsabr   r   rectimdimsxdivmodpaddeds                     rf   pad_TextRecognizer.pad_  s   	xxD)*=!#L((2D$w-'//9Dxxz!dhhj488:&=>D99;"$*22288<<D$*22288<<D:D&%%f-
aIqq5y()__T"**3/Aa)HCKKsQw!A#>?@  3c*R!Q
BGGAJ78r   c                    Ub  [        UR                  U5       VVs/ s H	  u  pEXE-  PM     nnn[        U Vs/ s H  owS:  PM	     sn5      (       ah  [        R                  " UR                  5      [        U5      -  nUR                  [        UR                  [        5      5      [        R                  5      nUb  [        UR                  U5       V	V
s/ s H  u  p[        X5      PM     nn	n
U[        UR                  5      :w  a9  [        R                  " SUS5      nUR                  XR                  5       5        UnU$ s  snnf s  snf s  sn
n	f )Nrm   r   rs   )zipr   anyr|   r   r   r~   r   r   rI   r   BILINEARlistr   r   getbbox)ra   r   max_dimensionsmin_dimensionsr  r  ratiosrr   img_dimmin_dimpadded_size	padded_ims                rf   minmax_size_TextRecognizer.minmax_size_  s    %(+CHHn(EF(Eae(EFF6*6aE6*++xx)S[8jjt{{3'7!8%..I% ),CHHn(E(E$G G%(E   d388n,!IIc;<	[[]3
 G*
s   EEEc                 \   Sn/ SQn/ SQn[         R                  " S5      nSS/nSS/n[         R                  " U5      R                  U5      R	                  S5      n[         R                  " U5      R                  U5      R	                  S5      nUR
                  S S	 u  pUS
   U	s=::  a	  US
   ::  a  O  OUS   Us=::  a	  US   ::  a  O  OO[        R                  " [         R                  " U5      5      nU R                  U R                  U5      Xv5      n[         R                  " U5      nUR
                  S S	 u  p[         R                  " XU/5      nUR	                  S5      U-  U-
  U-  n[        R                  " U[        R                  5      n[        R                   " US-  5      S-  n
[        R                   " U	S-  5      S-  n[         R"                  " US
X-
  4S
X-
  44SS9nUS S 2S S 2[         R$                  4   R'                  S	S
S5      nUR	                  S5      nU$ )N)rm   rm   ru   )穤N@a?r"  r"  )??r#  r#  gp?r   i     rr   rl   r   rm      )rm   rm   r   )r|   rr   r   r   r   r   r   r{   r}   r  r  dstackrx   ry   rz   r   r   r   r   r   )ra   r   r   r   r   scaler  r  im_him_wdivide_hdivide_ws               rf   norm_img_latexocr TextRecognizer.norm_img_latexocr  s   '&

;'bsxx~%%e,33I>hhsm##E*11)<YYr]
1:)::q!T>^A->>//"((3-0C##DIIcNNSC((3-C2AJD))SsO,Czz)$u,t3s:ll3 2 2399TBY'",99TBY'",ff1ho&HO(<=v
 !Q

"#--aA6jj#
r   c                 ,"   [        U5      n/ nU H:  nUR                  UR                  S   [        UR                  S   5      -  5        M<     [        R
                  " [        R                  " U5      5      nSS//U-  nU R                  n[        R                  " 5       nU R                  (       a$  U R                  R                  R                  5         [        SX'5       GH  n	[        X)U-   5      n
/ nU R                  S:X  a  / n/ n/ n/ nU R                  S:X  a  / nU R                   S S u  nnnUU-  n/ n[        X5       H?  nXU      R                  SS u  nnUS	-  U-  n[#        UU5      nUR                  U5        MA     [        X5       GH  nU R                  S:X  av  U R%                  XU      U R                   5      u  n  nnU[        R&                  S S 24   n[        R(                  " USS
9nWR                  U5        UR                  U5        M  U R                  S:X  a  U R+                  XU      U R                   SS5      nWR                  US   5        WR                  US   5        WR                  US   5        WR                  US   5        UR                  US   5        GM$  U R                  S;   aL  U R-                  XU      U R                   5      nU[        R&                  S S 24   nUR                  U5        GM  U R                  S;   aL  U R/                  XU      U R                   5      nU[        R&                  S S 24   nUR                  U5        GM  U R                  S;   aL  U R1                  XU      U R                   5      nU[        R&                  S S 24   nUR                  U5        GM8  U R                  S:X  aA  U R3                  XU      5      nU[        R&                  S S 24   nUR                  U5        GM  U R                  S:X  aL  U R5                  XU      U R                   5      nU[        R&                  S S 24   nUR                  U5        GM  U R                  S:X  a  U R%                  XU      U R                   SS9u  n  nnU[        R&                  S S 24   n[        R(                  " USS
9n/ nUR                  U5        UR                  U5        / n[        R                  " [        SS5      5      R7                  S5      n[        R(                  " USS
9nUR                  U5        GM  U R                  S:X  a  U R9                  XU      U5      nU[        R&                  S S 24   nUR                  U5        [        R:                  " UR                  SS9n[        R:                  " SS/SS9n / n!/ n"U!R                  U5        U"R                  U 5        GMr  U R                  S:X  aA  U R=                  XU      5      nU[        R&                  S S 24   nUR                  U5        GM  U R?                  XU      U5      nU[        R&                  S S 24   nUR                  U5        GM     [        R@                  " U5      nURC                  5       nU R                  (       a$  U R                  R                  RE                  5         U R                  S:X  Ga  [        R@                  " W5      n[        R@                  " W5      n[        R@                  " W5      n[        R@                  " W5      nUUUUU/n#U RF                  (       aJ  0 n$UU$U RH                  RJ                  '   U RL                  RO                  U RP                  U$5      n%SU%S   0n&GOKU RL                  RS                  5       n'[        [        U'5      5       H5  n(U RL                  RU                  U'U(   5      n)U)RW                  U#U(   5        M7     U RL                  RO                  5         / n%U RP                   H$  n*U*RY                  5       n+U%R                  U+5        M&     U R                  (       a$  U R                  R                  RE                  5         SU%S   0n&GOVU R                  S:X  Ga  [        R@                  " W5      nU[        R                  " U/[        RZ                  S9R\                  /n#U RF                  (       aH  0 n$UU$U RH                  RJ                  '   U RL                  RO                  U RP                  U$5      n%U%S   n&GOU RL                  RS                  5       n'[        [        U'5      5       H5  n(U RL                  RU                  U'U(   5      n)U)RW                  U#U(   5        M7     U RL                  RO                  5         / n%U RP                   H$  n*U*RY                  5       n+U%R                  U+5        M&     U R                  (       a$  U R                  R                  RE                  5         U%S   n&GOU R                  S:X  Ga}  [        R@                  " W5      n[        R@                  " W5      nUUU/n#U RF                  (       aH  0 n$UU$U RH                  RJ                  '   U RL                  RO                  U RP                  U$5      n%U%S   n&GOU RL                  RS                  5       n'[        [        U'5      5       H5  n(U RL                  RU                  U'U(   5      n)U)RW                  U#U(   5        M7     U RL                  RO                  5         / n%U RP                   H$  n*U*RY                  5       n+U%R                  U+5        M&     U R                  (       a$  U R                  R                  RE                  5         U%S   n&GO%U R                  S:X  Ga  [        R@                  " W!5      n![        R@                  " W"5      n"UU!U"/n#U RF                  (       aE  0 n$UU$U RH                  RJ                  '   U RL                  RO                  U RP                  U$5      n%U%n&GOU RL                  RS                  5       n'/ n)[        [        U'5      5       HF  n(U RL                  RU                  U'U(   5      n,U,RW                  U#U(   5        U)R                  U,5        MH     U)U l$        U RL                  RO                  5         / n%U RP                   H$  n*U*RY                  5       n+U%R                  U+5        M&     U R                  (       a$  U R                  R                  RE                  5         U%n&GOU R                  S:X  Gac  U/n#U RF                  (       aE  0 n$UU$U RH                  RJ                  '   U RL                  RO                  U RP                  U$5      n%U%n&GOU RL                  RS                  5       n'/ n)[        [        U'5      5       HF  n(U RL                  RU                  U'U(   5      n,U,RW                  U#U(   5        U)R                  U,5        MH     U)U l$        U RL                  RO                  5         / n%U RP                   H$  n*U*RY                  5       n+U%R                  U+5        M&     U R                  (       a$  U R                  R                  RE                  5         U%n&GOU RF                  (       aG  0 n$UU$U RH                  RJ                  '   U RL                  RO                  U RP                  U$5      n%U%S   n&OU RH                  RW                  U5        U RL                  RO                  5         / n%U RP                   H$  n*U*RY                  5       n+U%R                  U+5        M&     U R                  (       a$  U R                  R                  RE                  5         [        U%5      S:w  a  U%n&OU%S   n&U R^                  S   S:X  a  U Ra                  U&U Rb                  UUS 9n-OXU R^                  S   S!:X  a4  U& V.s/ s H  n.U.Re                  S"/5      PM     n&n.U Ra                  U&5      n-OU Ra                  U&5      n-[        [        U-5      5       H  n/U-U/   XeU	U/-      '   M     U R                  (       d  GM  U R                  R                  Rg                  S#S$9  GM     U[        R                  " 5       U-
  4$ s  sn.f )%Nrm   r    g        r   r   ru   rl   ro   )axisr         )SVTRr(   r4   r*   )r+   )r   r-   r"   r    r$         ?)r   (   r   r/   rr   rv   $   r1   predictr   r   )r`   wh_ratio_listr   r2   rj   T)stamp)4lenr   r   r   r|   argsortr   rJ   timerV   r_   timesstartr   r   rK   rG   r   r   r   r   r   r   r   r   r   r   r   r   r   r,  r   concatenatecopyr9  rW   rS   r   rR   runrT   get_input_namesget_input_handlecopy_from_cpucopy_to_cpurr   TrO   rN   r`   r   end)0ra   img_listimg_num
width_listr   indicesrec_res	batch_numst
beg_img_no
end_img_nonorm_img_batchencoder_word_pos_listgsrm_word_pos_listgsrm_slf_attn_bias1_listgsrm_slf_attn_bias2_listvalid_ratiosr   r   r   r   r8  inor   r   wh_ratior   r   r   word_positions_listword_positionsnorm_image_mask
word_labelnorm_img_mask_batchword_label_listinputs
input_dictoutputspredsinput_namesirS   output_tensoroutputinput_tensor_i
rec_resultprnos0                                                   rf   __call__TextRecognizer.__call__  su   h-
CciilU399Q<-@@A  **RXXj129+'&&	YY[>>LL$$&76JW9&<=JN!!U*(*%%'"+-(+-(!!U*!#33BQ7D$$;LMZ4-33Aa81s7Q;"<:$$X.	 5
 Z4%%.262J2J .0D0D3/HaK  (

A6H"$..1"EK ''4"))(3''50#55 .0D0Da H *00!=&--hqk:,33HQK@,33HQK@"))(1+6''+NN#88 .0D0D H  (

A6H"))(3''?:#@@ .0D0D H  (

A6H"))(3''+@@#66 .0D0D H  (

A6H"))(3''61#88#,9OPH'

A6H"))(3''83#:: .0D0D H  (

A6H"))(3''?:262J2J .,,/3 3K 3/HaK
  (

A6H"$..1"EK#%L ''4"))(3*,'%'XXeArl%;%B%B7%KN%'^^N%KN'..~>''50#00#,1GVH'

A6H"))(3&(gghnnI&NO!#!R!@J*,'&(O'..?#**:6'':5#55hs|6LMH'

A6H"))(3#33 . H  (

A6H"))(3a 5b  ^^N;N+002N~~""((*!!U*(*7L(M%%'^^4F%G"+->>:R+S(+->>:R+S( #)&,, ==!#J9GJt00556"nn001D1DjQG&
3E"&.."@"@"BK"3{#34'+~~'F'F{ST~'V$226!9= 5 NN&&( G)-)<)<!.!:!:!<v. *= ~~**002&
3E##u,!~~l;"HHl^2::>@@ ==!#J9GJt00556"nn001D1DjQG#AJE"&.."@"@"BK"3{#34'+~~'F'F{ST~'V$226!9= 5 NN&&( G)-)<)<!.!:!:!<v. *= ~~**002#AJE##6!~~l;&(nn5H&I#(,8KL==!#J9GJt00556"nn001D1DjQG#AJE"&.."@"@"BK"3{#34'+~~'F'F{ST~'V$226!9= 5 NN&&( G)-)<)<!.!:!:!<v. *= ~~**002#AJE##u,&(nn5H&I#"$.."A(*=O==!#J9GJt00556"nn001D1DjQG#E"&.."@"@"BK#%L"3{#34)-)H)HUV)X&44VAY?$++N; 5 )5D%NN&&( G)-)<)<!.!:!:!<v. *= ~~**002#E##z1()==!#J9GJt00556"nn001D1DjQG#E"&.."@"@"BK#%L"3{#34)-)H)HUV)X&44VAY?$++N; 5 )5D%NN&&( G)-)<)<!.!:!:!<v. *= ~~**002#E==!#J9GJt00556"nn001D1DjQG#AJE%%33NCNN&&( G)-)<)<!.!:!:!<v. *= ~~**0027|q( ' '
&&v.2BB!00$($8$8"/!-	 1 
 ((04DD278%QB4%8!007
!007
S_-5?_
S 012 .~~~""&&T&2Q 7R 		b((( 9s   AAD)r_   rV   rU   rS   rM   rT   rN   rO   rR   rK   rJ   rG   r`   rW   r   )r4  )r   )__name__
__module____qualname____firstlineno__rg   r   r   r   r   r   r   r   r   rx   r   r   r   r   r  r  r,  rk  __static_attributes__ r   rf   r   r   '   sh    H4T5nG4$
L
0 @D" )-C<L<L:26. DV)r   r   c                 f   [        U R                  5      n/ n/ nU R                  n[        R                  R                  U R                  5      (       dN  [        R                  R                  U R                  5      (       d@  U R                  R                  S5      (       a   [        R                  R                  US5      n[        US9n[        U 5      nUR                  S5        U R                  (       aq  [        R                  R                  SS/ SQ5      R!                  [        R"                  5      n[%        S5       H"  nU" U/['        U R(                  5      -  5      n	M$     U Hu  n
[+        U
5      u  p{nU(       d  [,        R.                  " U
5      nUc"  UR                  S	R1                  U
5      5        MS  UR3                  U
5        UR3                  U5        Mw      U" U5      u  p[%        [=        U5      5       H)  nUR                  S
R1                  X/   WU   5      5        M+     U R>                  (       a  UR@                  RC                  5         g g ! [4         aI  nUR                  [6        R8                  " 5       5        UR                  U5        [;        5          S nANS nAff = f)N/zbenchmark_recognition.log)log_filezIn PP-OCRv3, rec_image_shape parameter defaults to '3, 48, 320', if you are using recognition model with PP-OCRv2 or an older version, please set --rec_image_shape='3,32,320r   rs   )0   i@  ru   rl   zerror in loading image:{}zPredicts of {}:{})"r   	image_dirsave_log_pathrY   pathisdirexistsendswithjoinr   r   inforE   r|   randomuniformr   r}   r   rI   rJ   r	   rx   imreadformatr   	Exception	traceback
format_excexitr:  rV   r_   report)rb   image_file_listvalid_image_file_listrH  ru  rF   text_recognizerr   rd  res
image_fileflagr   rL  ErW  s                   rf   mainr  7  s   )$..9OH !!H	ww}}T''((GGNN4--..43E3E3N3Ns3S3S77<<*EF*F %T*O
KK	w {{ii35<<RXXFqA!3%#d.@.@*A"ABC  &
%j11**Z(C;KK3:::FG$$Z0 &$X.
 S]#&&'<'A73<P	
 $ ~~&&(   I((*+As   %
I 
J0'?J++J0__main__)$rY   sysPILr   ry  dirnameabspath__file____dir__r   insertr}  environrx   numpyr|   r   r<  r  paddletools.infer.utilityinferrP   ppocr.postprocessr   ppocr.utils.loggingr   ppocr.utils.utilityr   r	   rF   objectr   r  rm  
parse_argsrr  r   rf   <module>r     s    
 
 
''//"''//(3
4   277??277<<#AB C)6

% & 
      % % 0 * C	M)V M)`0)f z			 r   