
    i                     L    S SK rS SKrSSKJr   " S S\5      r " S S\5      rg)    N   )AttnLabelDecodec                   >    \ rS rSrSrS
S jrSS jrS rS rS r	S	r
g)TableLabelDecode    c                    / n[        US5       nUR                  5       nU HC  nUR                  S5      R                  S5      R                  S5      nUR	                  U5        ME     S S S 5        U(       a.  SU;  a  UR	                  S5        SU;   a  UR                  S5        U R                  U5      n0 U l        [        U5       H  u  pXR                  U	'   M     X@l	        / SQU l
        g ! , (       d  f       N= f)Nrbzutf-8
z
	<td></td><td>)r   z<tdr   )open	readlinesdecodestripappendremoveadd_special_chardict	enumerate	charactertd_token)
selfcharacter_dict_pathmerge_no_span_structurekwargsdict_characterfinlineslineichars
             m/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddleocr/ppocr/postprocess/table_postprocess.py__init__TableLabelDecode.__init__   s    %t,MMOE{{7+11$7==fE%%d+  - #.0%%k2'%%f-..~>	 0GAIIdO 1'4# -,s   AC00
C>Nc                 J   US   nUS   n[        U[        R                  5      (       a  UR                  5       n[        U[        R                  5      (       a  UR                  5       nUS   nU R	                  X4U5      n[        U5      S:X  a  U$ U R                  U5      nXg4$ )Nstructure_probs	loc_predsr   )
isinstancepaddleTensornumpyr   lendecode_label)r   predsbatchr'   
bbox_preds
shape_listresultlabel_decode_results           r#   __call__TableLabelDecode.__call__-   s     12;'
ov}}55-335Oj&--00#))+J2Y
_*Eu:?M"//6**    c                    U R                  5       nU R                  U R                     nUR                  SS9nUR	                  SS9n/ n/ n[        U5      n	[        U	5       GH  n
/ n/ n/ n[        [        Xj   5      5       H  n[        Xj   U   5      nUS:  a  X:X  a    O{X;   a  M'  U R                  U   nUU R                  ;   a+  X*U4   nU R                  UX:   5      nUR                  U5        UR                  U5        UR                  XU4   5        M     UR                  U[        R                  " U5      /5        UR                  [        R                  " U5      5        GM
     UUS.nU$ )#convert text-label into text-index.   )axisr   bbox_batch_liststructure_batch_list)get_ignored_tokensr   end_strargmaxmaxr.   rangeintr   r   _bbox_decoder   npmeanarray)r   r'   r2   r3   ignored_tokensend_idxstructure_idxr?   r>   
batch_size	batch_idxstructure_list	bbox_list
score_listidxchar_idxtextbboxr4   s                      r#   r   TableLabelDecode.decode<   ss   002))DLL)'..A.6)--1-5!'
z*INIJS!9:;}7<=7x2-~~h/4==(%n5D,,T:3HID$$T*%%d+!!/S."AB < !''9L(MN""288I#67% +(  /$8
 r8   c                 P   US   nUS   nUS   nU R                  5       nU R                  U R                     n/ n/ n[        U5      n	[	        U	5       H  n
/ n/ n[	        [        X*   5      5       H  n[        X*   U   5      nUS:  a  X:X  a    OkX;   a  M'  UR                  U R                  U   5        X:   U   nUR                  5       S:w  d  Mb  U R                  XU
   5      nUR                  U5        M     UR                  U5        UR                  U5        M     UUS.nU$ )r:   r   r;   r)   r   r=   )
r@   r   rA   r.   rD   rE   r   r   sumrF   )r   r1   rL   gt_bbox_listr3   rJ   rK   r?   r>   rM   rN   rO   rP   rR   rS   rU   r4   s                    r#   r/   TableLabelDecode.decode_label`   s4   aQx2Y
002))DLL)!'
z*INIS!9:;}7<=7x2-%%dnnX&>?#.s388:?,,Ti3HID$$T* < !''7""9-! +$  /$8
 r8   c                     Uu  p4pVpxXxpCUSS S2==   U-  ss'   USS S2==   U-  ss'   USS S2==   U-  ss'   USS S2==   U-  ss'   U$ )Nr   r;   r    )	r   rU   shapehwratio_hratio_wpad_hpad_ws	            r#   rF   TableLabelDecode._bbox_decode   sf    /4,g1QTT
a
QTT
a
QTT
g
QTT
g
r8   )r   r   r   )FN)__name__
__module____qualname____firstlineno____doc__r$   r6   r   r/   rF   __static_attributes__r\   r8   r#   r   r      s     5*+"H Dr8   r   c                   F   ^  \ rS rSrSr  SU 4S jjrS rS rS rSr	U =r
$ )	TableMasterLabelDecode   r   c                 R   > [         [        U ]  X5        X l        US;   d   S5       eg )N)oripadz7The shape used for box normalization must be ori or pad)superrm   r$   	box_shape)r   r   rs   r   r   	__class__s        r#   r$   TableMasterLabelDecode.__init__   sC     	$d4	
 # 
 
 	E E	E 
r8   c                     SU l         SU l        SU l        SU l        UnUU R                  U R                   U R                  U R                  /-   nU$ )Nz<SOS>z<EOS>z<UKN>z<PAD>)beg_strrA   unknown_strpad_str)r   r   s     r#   r   'TableMasterLabelDecode.add_special_char   sY    "''LLLLLL	+
 
 r8   c                     U R                   U R                     nU R                   U R                     nU R                   U R                     nU R                   U R                     nX#X/$ re   )r   ry   rw   rA   rx   )r   pad_idx	start_idxrK   unknown_idxs        r#   r@   )TableMasterLabelDecode.get_ignored_tokens   sW    ))DLL)IIdll+	))DLL)ii 0 01G99r8   c                 *   Uu  p4pVpxU R                   S:X  a  XxpCUSS S2==   U-  ss'   USS S2==   U-  ss'   USS S2==   U-  ss'   USS S2==   U-  ss'   Uu  ppCXS-  -
  XS-  -
  XS-  -   XS-  -   4u  pp[        R                  " XX/5      nU$ )Nrq   r   r;   r   )rs   rG   rI   )r   rU   r]   r^   r_   r`   ra   rb   rc   xyx1y1x2y2s                  r#   rF   #TableMasterLabelDecode._bbox_decode   s    /4,g>>U"qQTT
a
QTT
a
QTT
g
QTT
g

a!VQaZ!VQaZGxx()r8   )rw   rs   rA   ry   rx   )rp   T)rf   rg   rh   ri   rj   r$   r   r@   rF   rk   __classcell__)rt   s   @r#   rm   rm      s(    
  $	E : r8   rm   )r-   rG   r+   rec_postprocessr   r   rm   r\   r8   r#   <module>r      s,      ,t tn3- 3r8   