
    9io%                     Z    S r SSKrSSKrSSKrSSKJr   S r S	S jrS r	S
S jr
SS jrg)z4
Copyright (c) 2019-present NAVER Corp.
MIT License
    N)labelc                     [         R                  " XS   US   S45      n[         R                  " US   US   -  US   US   -  /5      $ )Nr         )npmatmularray)Minvptouts      S/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/easyocr/craft_utils.py	warpCoordr      sK    
))Da5"Q%+
,C88SVCF]CF3q6M233    c           
      	   UR                  5       nU R                  5       n U R                  u  pg [        R                  " XSS5      u  p[        R                  " XSS5      u  p[        R
                  " X-   SS5      n[        R                  " UR                  [        R                  5      SS9u  pp/ n/ n[        SU5       GH  nUU[        R                  4   nUS:  a  M!  [        R                  " XU:H     5      U:  a  MB  [        R                  " U R                  [        R                  S9nSUUU:H  '   U(       aD  [        R                  " X-
  U-  S-  USS5      u  nn[        U5      u  nnUR                  U5        OUR                  U5        SU[        R                  " U
S:H  U	S:H  5      '   UU[        R                   4   UU[        R"                  4   nnUU[        R$                  4   UU[        R&                  4   nn[)        [*        R,                  " U[/        UU5      -  UU-  -  5      S	-  5      nUU-
  UU-   U-   S-   UU-
  UU-   U-   S-   4u  nnnn US:  a  SnUS:  a  SnUU:  a  UnU U:  a  Un [        R0                  " [        R2                  SU-   SU-   45      n![        R4                  " UUU 2UU24   U!5      UUU 2UU24'   [        R6                  " [        R8                  " [        R:                  " US:g  5      5      SSS
9R=                  5       R?                  SS	5      n"[        R@                  " U"5      n#[        RB                  " U#5      n$[        RD                  RG                  U$S   U$S   -
  5      [        RD                  RG                  U$S   U$S	   -
  5      nn[        UU5      [/        UU5      S-   -  n%[I        SU%-
  5      S::  aw  [/        U"S S 2S4   5      [        U"S S 2S4   5      n'n&[/        U"S S 2S4   5      [        U"S S 2S4   5      n)n([        R8                  " U&U(/U'U(/U'U)/U&U)//[        RJ                  S9n$U$RM                  SS
9RO                  5       n*[        R6                  " U$SU*-
  S5      n$[        R8                  " U$5      n$UR                  U$5        GM     UUU4$ )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      sF   llnGllnG==LEmmGq!<OCmmGQBOCggj5q!<O(+(H(HI_I_`b`h`hIixy(z%GU
CF1W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 d r   c                 J   SnSnSnSnSn/ n	[        U 5       GH  u  p[        [        R                  R	                  US   US   -
  5      S-   5      [        [        R                  R	                  US   US   -
  5      S-   5      pUS	:  d  US	:  a  U	R                  S 5        M  [        R                  " SS/US/X/SU//5      n[        R                  " X5      n[        R                  " XX4[        R                  S
9n [        R                  R                  U5      nX*   nSUUU:g  '   SUUS:  '    / nSn[        U5       Hi  n[        R                  " US S 2U4   S:g  5      S   n[        U5      S:  a  M7  UR                  UUS   US   45        US   US   -
  S-   nUU:  d  Mg  UnMk     X-  U:  a  U	R                  S 5        GM  US-  S-   nUU-  nS /U-  nSS//U-  nS/U-  nSnSnSn[        S[        U5      5       H  nUU   u  n n!n"US-   U-  U ::  a0  UU::  a*  US:X  a    OUU   S   U-  UU   S   U-  /UU'   SnUS-  nSnU!U"-   S-  n#U"U!-
  S-   n$UU   S   U -   UU   S   U#-   /UU'   US-  nUS-  S:X  a  M  UU$:  d  M  U U#4U[        US-
  S-  5      '   U$U[        US-
  S-  5      '   U$nM     US:w  a  US   S   U-  US   S   U-  /US'   S U;   d  U[        R                  " U5      S-  :  a  U	R                  S 5        GM   [        R                   " U5      U-  S-  n%/ n&[        U5       H  u  nu  n n#UUS-  S-      S   UUS-     S   -
  n'UUS-  S-      S   UUS-     S   -
  n(U'S:X  a  U&R                  U U#U%-
  U U#U%-   /5        M`  ["        R$                  " U(U'5      * n)U%["        R&                  " U)5      -  U%["        R(                  " U)5      -  n+n*U&R                  U U+-
  U#U*-
  U U+-   U#U*-   /5        M     Su  n,n-US   S   US   S   -
  US   S   US   S   -
  -  US   S   US   S   -
  US   S   US   S   -
  -  -   n.US   S   US   S   -
  US   S   US   S   -
  -  US   S   US   S   -
  US   S   US   S   -
  -  -   n/[        R*                  " SXx5       GH  n0SU%-  U0-  n'U,(       d  [        R,                  " UR.                  [        R0                  S9n1U.U'-  n([        R2                  " U&S   5      [        R2                  " U'U(U'U(/5      -
  n2[        R4                  " U1[        U2S   5      [        U2S   5      4[        U2S   5      [        U2S   5      4SSS9  [        R6                  " [        R8                  " UU15      5      S:X  d  U0SU-  -   U:  a  U2n3Sn,U-(       d  [        R,                  " UR.                  [        R0                  S9n1U/U'-  n([        R2                  " U&S   5      [        R2                  " U'U(U'U(/5      -   n2[        R4                  " U1[        U2S   5      [        U2S   5      4[        U2S   5      [        U2S   5      4SSS9  [        R6                  " [        R8                  " UU15      5      S:X  d  U0SU-  -   U:  a  U2n4Sn-U,(       d  GM  U-(       d  GM    O   U,(       a  U-(       d  U	R                  S 5        GM  / n5U5R                  [;        UW3S   U3S   45      5        U& H&  n2U5R                  [;        UU2S   U2S   45      5        M(     U5R                  [;        UW4S   U4S   45      5        U5R                  [;        UU4S   U4S   45      5        [=        U&5       H&  n2U5R                  [;        UU2S   U2S   45      5        M(     U5R                  [;        UU3S   U3S   45      5        U	R                  [        R2                  " U55      5        GM     U	$ !   U	R                  S 5         GM
  = f)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"299>>#a&3q6/2Q67RYY^^CPQFUXYZU[O=\_`=`9a1r6QVLL jj1Q%1qeQqE23''1((QF#BSBST
	)99==#D
 I	./
:*+%&
:>""qAXXj1o23A6F6{QIIq&)VBZ01BZ&)+a/F6  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.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zjj' /, zLL IdSVSV$456AKK	$1qt56 IdSVSV$456IdSVSV$456&!AKK	$1qt56 "IdSVSV$456 	RXXd^$K #N Lw	)LLs   ``"c                     U(       a  U(       a  [        S5      e[        XX#XF5      u  pxn	U(       a  [        XxX5      n
OS /[        U5      -  n
XzU	4$ )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      sR    "`aa,W~_g|E6UF<U#r   c                     [        U 5      S:  aJ  [        R                  " U 5      n [        [        U 5      5       H  nX   c  M
  X==   X-  X#-  4-  ss'   M     U $ )Nr   )rw   r   r	   r!   )r   ratio_wratio_h	ratio_netrP   s        r   adjustResultCoordinatesr      sS    
5zA~s5z"Ax#W0'2EFF # 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   