
    i2"                         S r SSKJr  SSKJr  SSKJr  SSKJr  SSKrSSKrSSKr	 " S S\
5      r " S	 S
\
5      r " S S\
5      rg)ab  
# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
    )absolute_import)division)print_function)unicode_literalsNc                   >    \ rS rSrSrS
S jrS
S jrS rS rS r	Sr
g	)GenTableMask   zgen table maskc                 ,    SU l         SU l        X0l        g )N   )shrink_h_maxshrink_w_max	mask_type)selfr   r   r   kwargss        d/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddleocr/ppocr/data/imaug/table_ops.py__init__GenTableMask.__init__   s    "    c                 ^   [         R                  " U5      n[        SU5       Vs/ s H  nSPM     nn[        SU5       H.  n[        SU5       H  n	XU	4   S:X  d  M  Xx==   S-  ss'   M     M0     Sn
SnSn/ n[        [        U5      5       HL  n	US:X  a  Xy   U:  a  SnU	n
M  Xy   U::  d  M!  US:X  d  M)  U	nSnX-
  S::  a  M7  UR	                  XS-   45        MN     U(       a  UR	                  XS-
  45        [        SU5       H  n[        SXx   5       H	  n	SXXU	4'   M     M      X4$ s  snf )Nr         FT   )np	ones_likerangelenappend)r   erosionhwspilt_thresholdprojection_map_project_val_arrayji	start_idxend_idxin_textbox_lists                 r   
projectionGenTableMask.projection#   sE   g.(-a41Q4q!A1a[a4=C'%(A-( ! 
 	s,-.A5 %6%9O%K	!$7GtO&!+aK 89 / OOYA./q!A1/23'(!t$ 4  ''A 5s   D*c                    [         R                  " U[         R                  5      nUR                  u  p4[         R                  " USS[         R
                  5      u  pVX4:  a;  [        R                  " S[        R                  5      n[         R                  " XgSS9nOUn[        R                  " S[        R                  5      n[         R                  " XSS9n	[        R                  " U	5      n
[        SU5       Vs/ s H  nSPM     nn[        SU5       H.  n[        SU5       H  nXU4   S:X  d  M  X==   S-  ss'   M     M0     SnSnSn/ nSn[        [        U5      5       HN  nUS:X  a  X   U:  a  S	nUnM  X   U::  d  M!  US	:X  d  M)  UnSnUU-
  S
::  a  M8  UR                  UUS-   45        MP     U(       a  UR                  XS-
  45        [        SU5       H  n[        SX   5       H	  nSXU4'   M     M      / n[        U5      S:  a  [        U5       H  u  nu  nnUS:X  a  SnU[        U5      :X  a  UnU	UUS-   2S S 24   nUR                  u  nnU R!                  UR"                  UU5      u  nnUS   S   US   S   nnUS:  a  US-  nUS-  nUUUS-   2UUS-   2S S 24   nUR                  UUUU/5        M     U$ UR                  SSXC/5        U$ s  snf )N   r   )r   r   r   )
iterations)r   r   r   FTr   )cv2cvtColorCOLOR_BGR2GRAYshape	thresholdTHRESH_BINARY_INVr   onesuint8erodedilater   r   r   r   	enumerater+   T)r   box_imgbox_gray_imgr   r    retthresh1kernelr9   r   r"   r#   r$   r%   r&   r'   r(   r)   r*   r!   split_bbox_listh_starth_endword_imgword_hword_ww_split_listw_projection_mapw_startw_ends                                 r   projection_cxGenTableMask.projection_cxH   s   ||GS-?-?@!!}}\3S=R=RS5WWVRXX.FIIg!<EE***Uq9g.(-a41Q4q!A1a[a4=C'%(A-( ! 
 	s,-.A5 %6%9O%K	!$7GtOY&!+GaK 89 / OOYA./q!A1/23'(!t$ 4  x=1'0':##GU6GH%E"7UQY#6#9:!)15JJ2.. ".a!3\"5Ea5HQ;qLG
"7UQY#8'EAI:Mq#PQ&&%'GH (;$  ""Aq!<0k 5s   =K#c                    Uu  p#pE[        [        [        XS-
  S-  5      S5      U R                  5      n[        [        [        XB-
  S-  5      S5      U R                  5      nX'-   nXG-
  n	X6-   n
XV-
  nX:  a  UnUn	X:  a  Un
UnXX/$ )Ng?r   )minmaxintr   r   )r   bboxlefttoprightbottomsh_hsh_wleft_new	right_newtop_new
bottom_news               r   shrink_bboxGenTableMask.shrink_bbox   s    #' 53sFLC/0!4d6G6GH3sELC/0!4d6G6GH;L	*]
 HI GJ999r   c                 6   US   nUS   nUR                   SS u  pEU R                  S:X  a%  [        R                  " XE4[        R                  S9nO%[        R                  " XES4[        R                  S9n[        U5      n[        U5       GH  nSX8   ;   d  M  X8   S   n	U	u  ppX+U2X2S S 24   R                  5       nU R                  U5      n[        [        U5      5       HC  nUU   S==   U
-  ss'   UU   S==   U-  ss'   UU   S==   U
-  ss'   UU   S==   U-  ss'   ME     [        [        U5      5       HP  nUU   u  ppU R                  XX/5      u  ppU R                  S:X  a  S	XkU2X24'   XaS
'   M@  SXkU2X2S S 24'   XaS'   MR     GM     U$ )Nimagecellsr   r   r   dtype   rR         ?mask_img)r   r   r   )
r4   r   r   zerosfloat32r   r   copyrL   r]   )r   dataimgra   heightwidthrf   cell_numcnorR   rS   rT   rU   rV   r=   rB   snos                    r   __call__GenTableMask.__call__   s   7mW		!A>>QxxrzzBHxx 2"**EHu:?C#z&)+/(5&j$*a78==?"&"4"4W"= _!56C#C(+t3+#C(+s2+#C(+t3+#C(+s2+	 7 !_!56C/>s/C,Du/3/?/?E20,Du ~~*;>VTZ!78+3Z(>MVTZ!:;(0W 7 #. r   )r   r   r   N)r   )__name__
__module____qualname____firstlineno____doc__r   r+   rL   r]   rq   __static_attributes__ r   r   r   r      s!    #
#(JEN:  r   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )ResizeTableImage   c                 N   > [         [        U ]  5         Xl        X l        X0l        g N)superr{   r   max_lenresize_bboxes
infer_mode)r   r   r   r   r   	__class__s        r   r   ResizeTableImage.__init__   s!    .0*$r   c                    US   nUR                   SS u  p4U R                  [        X45      S-  -  n[        X5-  5      n[        XE-  5      n[        R
                  " X'U45      nU R                  (       a  U R                  (       d  US   U-  US'   XS'   X!S'   [        R                  " X4XU/5      US'   U R                  US'   U$ )	Nr`   r   r   re   bboxessrc_imgr4   r   )
r4   r   rP   rQ   r1   resizer   r   r   array)	r   rj   rk   rl   rm   ratioresize_hresize_w
resize_imgs	            r   rq   ResizeTableImage.__call__   s    7m		!AF 2S 89v~&u}%ZZ%9:
doo!(^e3DN"WY&!>?W,,Yr   )r   r   r   )FFrs   rt   ru   rv   r   rq   rx   __classcell__r   s   @r   r{   r{      s    % r   r{   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )PaddingTableImage   c                 6   > [         [        U ]  5         Xl        g r~   )r   r   r   size)r   r   r   r   s      r   r   PaddingTableImage.__init__   s    /1	r   c                 T   US   nU R                   u  p4[        R                  " X4S4[        R                  S9nUR                  SS u  pgUR                  5       USU2SU2S S 24'   XQS'   US   R                  5       nUR                  X4/5        [        R                  " U5      US'   U$ )Nr`   rd   rb   r   r   r4   )	r   r   rg   rh   r4   ri   tolistextendr   )	r   rj   rk   pad_hpad_wpadding_imgrl   rm   r4   s	            r   rq   PaddingTableImage.__call__   s    7myyhha0

C		!A,/HHJAfHagq()#WW$$&e^$Wr   )r   r   r   s   @r   r   r      s    
 
r   r   )rw   
__future__r   r   r   r   sysr1   numpyr   objectr   r{   r   ry   r   r   <module>r      sH     '  % ' 
 
 d6 dNv . r   