
    i                     v    S r SSKJr  SSKJr  SSKJr  SSKrSSKJr  SSK	r
SSKrSSKrSSKr " S S\5      rg)z]
This code is referred from:
https://github.com/shengtao96/CentripetalText/blob/main/test.py
    )absolute_import)division)print_functionNc                   (    \ rS rSrSrSS jrS rSrg)CTPostProcess   z-
The post process for Centripetal Text (CT).
c                     Xl         X l        X0l        [        R                  " S[        R
                  S9U l        [        S5       H5  n[        S5       H#  nX`R                  SXV4'   XPR                  SXV4'   M%     M7     g )N)   ,  r   dtyper   r      )	min_scoremin_areabox_typenpzerosint32coordrange)selfr   r   r   kwargsijs          j/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddleocr/ppocr/postprocess/ct_postprocess.py__init__CTPostProcess.__init__$   sc    "  XXm288<
sA3Z&'

1a7#&'

1a7#       c           	         US   nUS   n[        U[        R                  5      (       a  UR                  5       n[        U[        R                  5      (       a  UR                  5       nUR                  S   n/ n[        U5       GH/  n/ n/ n	X'   n
U
S S nU
SS  n
U
S S n[        R                  " X7   SS9n[        5       n[        R                  " XG   SS9nUS S 2SS S 2S S 24   S:  nUS S 2SS 2S S 2S S 24   R                  S	5      nUS   R                  [        R                  5      nUS   R                  [        R                  5      nUS   R                  [        R                  5      n[        R                  " US
S9u  nn[        SU5       H#  nUU:H  nUR                  5       S:  d  M  SUU'   M%     [        R                  " U5      nUR                  u  nnU R                   S S 2S U2S U24   R#                  SS5      nUR%                  SS/5      R                  [        R                  5      nUSUS S 2US   US   4   R&                  -  -   R                  [        R(                  5      n[        R*                  " US S 2S4   SUR                  S   S-
  5      US S 2S4'   [        R*                  " US S 2S4   SUR                  S   S-
  5      US S 2S4'   UUS S 2S4   US S 2S4   4   UUS   US   4'   UUS:     UUS:  '   S/n[        SU5       HY  nUU:H  nUR                  5       S:X  a  UR-                  S5        M/  [        R.                  " UU   5      nUR-                  U5        M[     [        R0                  " U5      S-   n[        R2                  " UUS   US   4[        R4                  S9n[7        US   5      [7        US   5      -  [7        US   5      [7        US   5      -  4n[        SU5       GH  nUU:H  n[        R8                  " [        R:                  " U5      5      R%                  S5      nUR                  S   U R<                  :  a  Ma  UU   nUU R>                  :  a  Mx  U R@                  S:X  aV  [        RB                  " US S 2S S S24   5      n[        RD                  " U5      U-  n U R/                  S5      n!U!U U!-
  S-  -   n OuU R@                  S:X  ae  [        RF                  " UR                  SS9n"SU"U'    [        RH                  " U"[        RJ                  [        RL                  5      u  n#n$n#U$S   U-  n W R                  S5      n UR-                  U R#                  SS5      5        U	R-                  U5        GM     UR-                  SU05        GM2     U$ ! [N         a:    [        RH                  " U"[        RJ                  [        RL                  5      u  n$n# Nf = f)Nmapsscorer      r
   )axisg?r   float32   )connectivity
   g      @g        )interpolation)r   r   rectg333333?polyuint8r   r   points)(
isinstancepaddleTensornumpyshaper   r   expand_dimsdictastyper$   r,   cv2connectedComponentssum
zeros_liker   reshape	transposeTr   clipappendmeanmaxresizeINTER_NEARESTfloatarraywherer   r   r   minAreaRect	boxPointsr   findContoursRETR_EXTERNALCHAIN_APPROX_SIMPLEBaseException)%r   predsbatchouts
out_scores
batch_sizeboxes_batchidxbboxesscores	img_shapeorg_img_sizeimg_sizeoutoutputsr!   kernelloc	label_numlabel_kernelr   indlabelhwpixelsr-   
off_pointsscore_pocketscore_iscaler*   bboxzbinary_contourss%                                        r   __call__CTPostProcess.__call__/   sz   V}7^
dFMM**::<Dj&--00#))+JZZ]
$CFF
I$Ra=L!!"I !}H..3CfGNN:?;EAq!_s*FaQk")))4C!HOOBJJ/EAY%%bhh/Fa&--

+C&)&=&=fST&U#I|1i("a'779r>()L% )
 MM,/E%%DAqZZ2A2rr	*221b9F%%q!f-44RZZ@F :Avay&)4K0L0N0N#NNVVJ  "wwz!Q$'7EKKNQ<NOJq!t!wwz!Q$'7EKKNQ<NOJq!t*61a4 *QT"22+E&)VAY&' '3<!3C&DE,"#5L1i("a'779> '',''%*-##G, ) u)IJJXa[1ARARE
 l1o&x{);;l1o&x{);;E
 1i(qj"((3-0::6B<<?T]]2&q/T^^+==F*??6!TrT'?;D==.6D		!AqD00D]]f,XXekkAF"#F3K),)9)9"C$5$5s7N7N*8Q $A;.D{{7+dll2q12g&A )D &12E %H  ) &)&6&6"C$5$5s7N7N'!s   8V;;AW?>W?)r   r   r   r   N)g)\(?   r+   )__name__
__module____qualname____firstlineno____doc__r   rl   __static_attributes__ r   r   r   r      s    	(or   r   )rs   
__future__r   r   r   osos.pathpathospr1   r   r6   r/   	pyclipperobjectr   ru   r   r   <module>r}      s5   
 '  % 	   
  F r   