
    i                     D    S SK rS SKJrJr  S SKrS rS r " S S5      rg)    N)deal_eb_tokendeal_bbc                    U u  p#pEUu  pgp[        Xb-
  5      [        Xs-
  5      -   [        X-
  5      -   [        X-
  5      -   n
[        Xb-
  5      [        Xs-
  5      -   n[        X-
  5      [        X-
  5      -   nU
[        X5      -   $ N)absmin)box_1box_2x1y1x2y2x3y3x4y4disdis_2dis_3s                c/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddleocr/ppstructure/table/matcher.pydistancer      s|    NBBNBB
bg,RW
%BG
4s27|
CCL3rw<'EL3rw<'EU"""    c                 2   U S   U S   -
  U S   U S   -
  -  nUS   US   -
  US   US   -
  -  nX#-   n[        U S   US   5      n[        U S   US   5      n[        U S   US   5      n[        U S   US   5      nXV:  d  Xx:  a  gXe-
  X-
  -  n	XU	-
  -  S-  $ )z
computing IoU
:param rec1: (y0, x0, y1, x1), which reflects
        (top, left, bottom, right)
:param rec2: (y0, x0, y1, x1)
:return: scala value of IoU
   r         g              ?)maxr   )
rec1rec2S_rec1S_rec2sum_area	left_line
right_linetop_linebottom_line	intersects
             r   compute_iour)      s     1gQDGd1g$56F1gQDGd1g$56F H DGT!W%IT!Wd1g&J47DG$Hd1gtAw'K ("9+0FG		12c99r   c                   <    \ rS rSrS
S jrS rS rS rS rS r	Sr
g	)
TableMatch:   c                     Xl         X l        g r   filter_ocr_result
use_master)selfr/   r0   s      r   __init__TableMatch.__init__;   s    !2$r   c                     Uu  pEU R                   (       a  U R                  XRU5      u  p#U R                  X%5      nU R                  (       a  U R	                  XFU5      u  pxU$ U R                  XFU5      u  pxU$ r   )r/   _filter_ocr_resultmatch_resultr0   get_pred_html_masterget_pred_html)	r1   structure_resdt_boxesrec_respred_structurespred_bboxesmatched_index	pred_htmlpreds	            r   __call__TableMatch.__call__?   s    '4$!! $ 7 7w WH))(@??"77OI  #00OI r   c                    0 n[        U5       GHA  u  pE/ n[        U5       H  u  px[        U5      S:X  an  [        R                  " USS S2   5      [        R                  " USS S2   5      [        R                  " USS S2   5      [        R                  " USS S2   5      /nUR                  [        XX5      S[        XX5      -
  45        M     UR                  5       n	[        U	S S9n	UR                  U	S   5      UR                  5       ;  a  U/X6R                  U	S   5      '   GM  X6R                  U	S   5         R                  U5        GMD     U$ )N   r   r   r   r   c                     U S   U S   4$ )Nr   r    )items    r   <lambda>)TableMatch.match_result.<locals>.<lambda>`   s    DGT!W3Er   )key)	enumeratelennpr   r   appendr   r)   copysortedindexkeys)
r1   r:   r=   matchedigt_box	distancesjpred_boxsorted_distancess
             r   r6   TableMatch.match_resultN   s?   "8,IAI(5x=A%x1~.x1~.x1~.x1~.	 H   f/{67T1TU  6  )~~/% &E  /237<<>IAB(8(;<=(8(;<=DDQG+ -, r   c                 @   / nSnU GH  nSU;   Gae  SU:X  a  UR                  S5        XRR                  5       ;   Ga	  SnSX2U   S      ;   a$  [        X%   5      S:  a  SnUR                  S5        [        X%   5       H  u  pX9   S   n
[        X%   5      S:  ah  [        U
5      S:X  a  M.  U
S   S	:X  a  U
SS  n
SU
;   a  U
S
S  n
SU
;   a  U
S S n
[        U
5      S:X  a  Mc  U[        X%   5      S-
  :w  a  S	U
S   :w  a  U
S	-  n
[        R
                  " U
5      n
UR                  U
5        M     U(       a  UR                  S5        SU:X  a  UR                  S5        OUR                  U5        US-  nGMp  UR                  U5        GM     SR                  U5      U4$ )Nr   </td>	<td></td>z<td>F<b>r   T r   </b> )extendrR   rL   rK   htmlescaperN   join)r1   r<   r>   ocr_contentsend_htmltd_indextagb_withrT   td_index_indexcontents              r   r8   TableMatch.get_pred_htmlh   s   "C#~#%OOF+1133"FH.Ea.H!II 781<!% .-6}7N-O)".">q"A}67!;"7|q0 (&qzS0*1!"+$/*1!"+%0*1#2,"7|q0 ( !S)@%AA%E E$'72;$6 '3"&++g"6 0) .P*  /#%OOG,OOC(A$S #T wwx (**r   c                    / nSnU GH?  nSU;   Ga  SnSnXRR                  5       ;   a  SX2U   S      ;   a  [        X%   5      S:  a  Sn[        X%   5       H  u  pX:   S   n[        X%   5      S:  ah  [        U5      S:X  a  M.  US   S:X  a  USS  nSU;   a  US	S  nS
U;   a  US S n[        U5      S:X  a  Mc  U	[        X%   5      S-
  :w  a  SUS   :w  a  US-  nX{-  nM     U(       a  SR                  U5      nSU:X  a  SR                  U5      nOSR                  U5      nUS-  n[	        U5      nUR                  U5        GMB     SR                  U5      n[        U5      nX4$ )Nr   r\   rc   Fr^   r   Tr_   r   r`   ra   rb   z	<b>{}</b>r]   z<td>{}</td>z{}</td>)rR   rL   rK   formatr   rN   rg   r   )r1   r<   r>   rh   ri   rj   tokentxtrl   rT   rm   rn   re   s                r   r7   TableMatch.get_pred_html_master   s   $E%1133H.Ea.H!II 781<!%-6}7N-O)".">q"A}67!;"7|q0 (&qzS0*1!"+$/*1!"+%0*1#2,"7|q0 ( !S)@%AA%E E$'72;$6 '3% .P& %,,S1C%')005E%,,S1EA!%(EOOE"K %L wwx t}~r   c                     US S 2SS S24   R                  5       n/ n/ n[        X#5       HI  u  px[        R                  " USS S2   5      U:  a  M'  UR	                  U5        UR	                  U5        MK     XV4$ )Nr   r   )r   ziprM   r   rN   )	r1   r=   r:   r;   r   new_dt_boxesnew_rec_resboxrecs	            r   r5   TableMatch._filter_ocr_result   s    ADqD!%%'H.HCvvc!$Q$i 2%$s#	 /
 ((r   r.   N)FF)__name__
__module____qualname____firstlineno__r2   rA   r6   r8   r7   r5   __static_attributes__rF   r   r   r+   r+   :   s"    %4-+^+Z
)r   r+   )	numpyrM   $ppstructure.table.table_master_matchr   r   re   r   r)   r+   rF   r   r   <module>r      s&     G #::T) T)r   