
    y ho%                     T    d Z ddlZddlZddlZddlmZ 	 d Z	 d	dZd Z	d
dZ
ddZy)z6  
Copyright (c) 2019-present NAVER Corp.
MIT License
    N)labelc                     t        j                  | |d   |d   df      }t        j                  |d   |d   z  |d   |d   z  g      S )Nr         )npmatmularray)Minvptouts      o/home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/easyocr/craft_utils.py	warpCoordr      sM    
))D2a5"Q%+
,C88SVCF]CF3q6M233    c           
      n	   |j                         }| j                         } | j                  \  }}	 t        j                  | |dd      \  }}	t        j                  ||dd      \  }}
t	        j
                  |	|
z   dd      }t        j                  |j                  t        j                        d      \  }}}}g }g }t        d|      D ]  }||t        j                  f   }|dk  rt	        j                  | ||k(           |k  r>t	        j                  | j                  t        j                        }d|||k(  <   |rDt        j                  | |z
  |z  dz  |dd      \  }}t        |      \  }}|j                  |       n|j                  |       d|t	        j                  |
dk(  |	dk(        <   ||t        j                   f   ||t        j"                  f   }}||t        j$                  f   ||t        j&                  f   }}t)        t+        j,                  |t/        ||      z  ||z  z        d	z        }||z
  ||z   |z   dz   ||z
  ||z   |z   dz   f\  }}}} |dk  rd}|dk  rd}||k\  r|}| |k\  r|} t        j0                  t        j2                  d|z   d|z   f      }!t        j4                  ||| ||f   |!      ||| ||f<   t	        j6                  t	        j8                  t	        j:                  |dk7              dd
      j=                         j?                  dd	      }"t        j@                  |"      }#t        jB                  |#      }$t        jD                  jG                  |$d   |$d   z
        t        jD                  jG                  |$d   |$d	   z
        }}t        ||      t/        ||      dz   z  }%tI        d|%z
        dk  ryt/        |"d d df         t        |"d d df         }'}&t/        |"d d df         t        |"d d df         })}(t	        j8                  |&|(g|'|(g|'|)g|&|)ggt        jJ                        }$|$jM                  d
      jO                         }*t	        j6                  |$d|*z
  d      }$t	        j8                  |$      }$|j                  |$        |||fS )Nr   r      )connectivity
   dtype   g     o@r   )axisgh㈵>g?)(copyshapecv2	thresholdr   clipconnectedComponentsWithStatsastypeuint8rangeCC_STAT_AREAmaxzerosr   appendlogical_andCC_STAT_LEFTCC_STAT_TOPCC_STAT_WIDTHCC_STAT_HEIGHTintmathsqrtmingetStructuringElement
MORPH_RECTdilaterollr	   where	transposereshapeminAreaRect	boxPointslinalgnormabsfloat32sumargmin)+textmaplinkmaptext_thresholdlink_thresholdlow_textestimate_num_charsimg_himg_wret
text_score
link_scoretext_score_combnLabelslabelsstats	centroidsdetmapperksizesegmap_character_locsn_charsxywhnitersxexsyeykernelnp_contours	rectanglebox	box_ratiolrtbstartidxs+                                              r   getDetBoxes_coreri      s_   llnGllnG==LE5mmGXq!<OCmmG^QBOCggj:5q!<O(+(H(HI_I_`b`h`hIixy(z%GVUI
CF1W 0Q((()"9h 66'&!)$%6 '--rxx8vqy #w/@F.JD.PR`bcef gA~~.JAwMM'"MM!?@r~~j!mZ];<Q((()5COO1C+D1Q)))*E!S5G5G2G,H1DIIdSAY.!a%89A=>UAEEMA$5q5y!a%%-RSBSSBB6B6B;U;U**3>>1u9a%i:PQ"zz&B2*>Gr"ube| ggbhhrxx	':;A1EOOQYYZ\]^_OOK0	mmI& yy~~c!fs1vo.		s1vA0O11IQT!12	q9}${1Q3'(#k!A#.>*?qA{1Q3'(#k!A#.>*?qA((QFQFQFQF;2::NC 777?))+ggc1X:q)hhsm

3a0d r   c                    d}d}d}d}d}g }	t        |       D ]  \  }
}t        t        j                  j	                  |d   |d   z
        dz         t        t        j                  j	                  |d   |d   z
        dz         }}|d	k  s|d	k  r|	j                  d        t        j                  ddg|dg||gd|gg      }t        j                  ||      }t        j                  ||||ft        j                  
      }	 t        j                  j                  |      }||
   }d|||k7  <   d||dkD  <   	 g }d}t        |      D ]c  }t        j                  |d d |f   dk7        d   }t        |      dk  r4|j                  ||d   |d   f       |d   |d   z
  dz   }||kD  sb|}e ||z  |k  r|	j                  d        |dz  dz   }||z  }d g|z  }ddgg|z  }dg|z  }d}d}d}t        dt        |            D ]  }||   \  } }!}"|dz   |z  | k  r.||k  r)|dk(  r n||   d   |z  ||   d   |z  g||<   d}|dz  }d}|!|"z   dz  }#|"|!z
  dz   }$||   d   | z   ||   d   |#z   g||<   |dz  }|dz  dk(  r|||$k  s| |#f|t        |dz
  dz        <   |$|t        |dz
  dz        <   |$} |dk7  r|d   d   |z  |d   d   |z  g|d<   d |v s|t        j                  |      dz  k  r|	j                  d        t        j                   |      |z  dz  }%g }&t        |      D ]  \  }\  } }#||dz  dz      d   ||dz     d   z
  }'||dz  dz      d   ||dz     d   z
  }(|'dk(  r|&j                  | |#|%z
  | |#|%z   g       ^t#        j$                  |(|'       })|%t#        j&                  |)      z  |%t#        j(                  |)      z  }+}*|&j                  | |+z
  |#|*z
  | |+z   |#|*z   g        d\  },}-|d   d   |d   d   z
  |d   d   |d   d   z
  z  |d   d   |d   d   z
  |d   d   |d   d   z
  z  z   }.|d   d   |d   d   z
  |d   d   |d   d   z
  z  |d   d   |d   d   z
  |d   d   |d   d   z
  z  z   }/t        j*                  d||      D ]  }0d|%z  |0z  }'|,st        j,                  |j.                  t        j0                        }1|.|'z  }(t        j2                  |&d         t        j2                  |'|(|'|(g      z
  }2t        j4                  |1t        |2d         t        |2d         ft        |2d         t        |2d         fdd       t        j6                  t        j8                  ||1            dk(  s|0d|z  z   |k\  r|2}3d},|-st        j,                  |j.                  t        j0                        }1|/|'z  }(t        j2                  |&d         t        j2                  |'|(|'|(g      z   }2t        j4                  |1t        |2d         t        |2d         ft        |2d         t        |2d         fdd       t        j6                  t        j8                  ||1            dk(  s|0d|z  z   |k\  r|2}4d}-|,s|-s n |,r|-s|	j                  d        g }5|5j                  t;        |3d   |3d   f             |&D ]%  }2|5j                  t;        ||2d   |2d   f             ' |5j                  t;        |4d   |4d   f             |5j                  t;        ||4d   |4d   f             t=        |&      D ]%  }2|5j                  t;        ||2d   |2d   f             ' |5j                  t;        ||3d   |3d   f             |	j                  t        j2                  |5              |	S #  |	j                  d        Y xY w)N   gffffff?g333333?g       @g?r   r   r   r   )flagsr   g      ?g      ?FFr      )	thicknessT)	enumerater+   r   r8   r9   r%   r;   r   getPerspectiveTransformwarpPerspectiveINTER_NEARESTinvr!   r3   lenr#   medianr,   atan2cossinaranger$   r   r    r	   liner<   r&   r   reversed)6boxesrK   rO   r?   num_cpmax_len_ratioexpand_ratiomax_rstep_rpolysrP   rb   rX   rY   tarM
word_labelr
   	cur_labelcpmax_leniregionlengthtot_segseg_wpp
cp_section
seg_heightseg_numnum_secprev_hrV   r]   r^   cycur_hhalf_char_hnew_ppdxdyradcs
isSppFound
isEppFoundgrad_sgrad_ere   line_imgpsppepppolys6                                                         r   getPoly_corer   W   s   FMLEFEE" E%3299>>#a&3q6/2Q67RYY^^CPQFUXYZU[O=\_`=`9a1r6QVLL jj1Q%1qeQqE23''S1((QF#BSBST
	)99==#D
 1I	./
:*+%&
:>""q 	2AXXj1o23A6F6{QIIq&)VBZ01BZ&)+a/F6	2 }w&LL 1*q.GVf_!fX'
S6\
qR! 	AQ%KQB!u$)g.@a<'1'':1'='GT[I\]^I_biIi&j
7# 1 r'SBGaKE#-g#6q#9A#=z'?RST?UXZ?Z"[JwqLG{a~,-r73!Q'(38
3!Q/0/	4 a<(nQ/'9:b>!;Lw;VWJrN 2:
!3d!::LL ii
+l:Q> #B- 	:JAw2AEAI&q)Jq1u,=a,@@BAEAI&q)Jq1u,=a,@@BQwq"{"2ArK7GHIJJr2&&C#.dhhsm0KqAMM1q5"q&!a%a89	: ".
JQ%(RU1X%"Q%(RU1X*=>"Q%(RPQUSTXBUZ\]^Z_`aZbeghiejklemZmAnnR&)bfQi'BrF1I2q	,ABbfQiRTUWRXYZR[F[`bce`fgh`ilnoqlrstlu`uEvv3v. 	A[1$B88J$4$4BHHEb[HHVAY'"((BB3C*DDC!Is1Q4y#9C!Is1Q4y;QST`ab66"..X>?1DAPVJZ_H_C!%J88J$4$4BHHEb[HHVBZ(288RR4D+EEC!Is1Q4y#9C!Is1Q4y;QST`ab66"..X>?1DAPVJZ_H_C!%Jj'	, zLL IdSVSV$456 	7AKK	$1qt56	7IdSVSV$456IdSVSV$456&! 	7AKK	$1qt56	7IdSVSV$456 	RXXd^$KE%N Lw	)LLs   __c                     |r|rt        d      t        | |||||      \  }}}	|rt        |||	|      }
nd gt        |      z  }
||
|	fS )NzFEstimating the number of characters not currently supported with poly.)	Exceptionri   r   rw   )r>   r?   r@   rA   rB   r   rC   r   rK   rO   r   s              r   getDetBoxesr      sa    "`aa,Wg~~_gi{|E66UFFG<U#%r   c                     t        |       dkD  rIt        j                  |       } t        t        |             D ]  }| |   	| |xx   ||z  ||z  fz  cc<    | S )Nr   )rw   r   r	   r!   )r   ratio_wratio_h	ratio_netrP   s        r   adjustResultCoordinatesr      sb    
5zA~s5z" 	GAQx#aWy0'I2EFF	G Lr   )Frm   )r   )__doc__numpyr   r   r,   scipy.ndimager   r   ri   r   r   r    r   r   <module>r      s=     
   4 #AFPd
 r   