
    i                         S SK r S SKrS SKrS SKrS SKJr  S SKrS SKJ	r	  S SK
r
S SKrS rS rS rS rSS jr\S	:X  a(  \R$                  S
   r\R$                  S   r\" \\5        gg)    N)Polygon)defaultdictc                     SnU  H6  n[        U5      nUS:X  a  SnOUS:  a  US::  a  US-  nU[        U5      -  nM8     U$ )N i 0      i  i^  i  )ordchr)ustringrstringucharinside_codes       d/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddleocr/tools/end2end/eval_end2end.pystrQ2Br      sV    G%j%KE!kU&:5 K3{##  N    c                 |    [         R                  " U 5      R                  SS5      n [        U 5      R                  nU$ )z5
Create a shapely polygon object from gt or dt line.
      )nparrayreshaper   convex_hull)polygon_pointspolygons     r   polygon_from_strr   &   s4     XXn-55a;Nn%11GNr   c                 *   U R                  U5      (       d  SnU$  U R                  U5      R                  nU R                  UR                  -   U-
  n[        U5      U-  nU$ ! [        R
                  R                   a    [        S5        Sn U$ f = f)z7
Intersection over union between two shapely polygons.
r   z4shapely.geos.TopologicalError occurred, iou set to 0)
intersectsintersectionareafloatshapelygeosTopologicalErrorprint)poly1poly2iou
inter_area
union_areas        r   polygon_iour)   /   s     E"" J	++E277Jejj0:=J
#j0C J ||,, 	 HICJ	s   AA# #+BBc                 .    [         R                  " X5      $ )N)editdistanceeval)str1str2s     r   edr/   B   s    T((r   c           	      j   [        S5        Sn[        R                  " U 5      nSnSnSnSnSn	[        U5       GH  u  p[	        [        R
                  R                  X5      SS9 nUR                  5        Vs/ s H  oR                  5       PM     nnS S S 5        / n/ nW H  nUR                  5       R                  S5      n[        U5      S:  a  M3  [        U5      S:  d   e[        U5      S:X  a  UR                  US S	 S
/-   5        OUR                  US S	 US   /-   5        UR                  US	   5        M     [        R
                  R                  X5      n[        R
                  R                  U5      (       d  / nO@[	        USS9 nUR                  5        Vs/ s H  oR                  5       PM     nnS S S 5        / nW H~  nUR                  5       R                  S5      n[        U5      S:  d   SR                  U5      5       e[        U5      S	:X  a  UR                  US
/-   5        Mm  UR                  U5        M     S/[        U5      -  nS/[        U5      -  n[        [        5      n[        U5       H  u  nnUSS	  Vs/ s H  n[!        U5      PM     nn[#        U5      n[        U5       HJ  u  nnUSS	  V s/ s H  n [!        U 5      PM     n!n [#        U!5      n"[%        U"U5      n#U#U:  d  MC  U#UUU4'   ML     M     ['        UR)                  5       [*        R,                  " S5      SS9n$U$ V%s/ s H  n%U%S   PM
     n&n%U& H  n'U'u  nnUU   S:X  d  M  UU   S:X  d  M  SUU'   SUU'   U(       aC  [/        UU   S	   5      R1                  SS
5      n([/        UU   S	   5      R1                  SS
5      n)O"[/        UU   S	   5      n([/        UU   S	   5      n)UU   S:X  d  M  U	[3        U(U)5      -  n	U[        U(5      -  nU(U):X  a  US-  nUS-  nUS-  nM     [        U5       H,  u  n*n+U+S:X  d  M  UU*   S	   n)S
n(U	[3        U)U(5      -  n	US-  nM.     [        U5       HE  u  n*n,U,S:X  d  M  UU*   S:X  d  M  S
n)UU*   S	   n(U	[3        U(U)5      -  n	U[        U(5      -  nUS-  nMG     GM     Sn-[        SXU5        XU--   -  n.XU--   -  n/SU.-  U/-  U.U/-   U--   -  n0U	[        U5      -  n1XU--   -  n2SXU--   -  -
  n3[        SU3S-  -  S-   5        [        SU2-  5        [        SU1-  5        [        SU.S-  -  S-   5        [        SU/S-  -  S-   5        [        SU0S-  -  S-   5        g s  snf ! , (       d  f       GN= fs  snf ! , (       d  f       GN= fs  snf s  sn f s  sn%f )Nzstart testing...g      ?r   zutf-8)encoding		         r   
   zline error: {}F   T)keyreverse 0g&.>zhit, dt_count, gt_countg       @zcharacter_acc: %.2fd   %zavg_edit_dist_field: %.2fzavg_edit_dist_img: %.2fzprecision: %.2fzrecall: %.2fzfmeasure: %.2f)r#   oslistdir	enumerateopenpathjoin	readlinesstripsplitlenappendexistsformatr   tupler   r   r)   sorteditemsoperator
itemgetterr   replacer/   )4gt_dirres_dirignore_blank
iou_thresh	val_namesnum_gt_charsgt_countdt_counthited_sumival_namefogt_linesgtsignore_maskslinepartsval_pathdt_linesdtsdt_matchgt_matchall_iousindex_gtgtgt_coorgt_coorsgt_polyindex_dtdtdt_coordt_coorsdt_polyr&   sorted_iousitemsorted_gt_dt_pairs
gt_dt_pairgt_strdt_strtindexdt_match_flaggt_match_flageps	precisionrecallfmeasureavg_edit_dist_imgavg_edit_dist_fieldcharacter_accs4                                                       r   e2e_evalr   F   s   	
J

6"ILHH
CF +"'',,v07Cq+,;;=9=a	=H9 DDJJL&&t,E5zA~u:?"?5zQ

5!9t+,

5!9b	{23a)  77<<2ww~~h''Hh1Q/0{{}=}!GGI}= 2DJJL&&t,Eu:?A$4$;$;D$AA?5zQ

5B4<(

5!  7SX%7SX%u%%cNLHb681g>g7ggH>&x0G )#":<Qq'B'wE'N'B*84!'73*$58Hh12 !/ + X^^-83F3Fq3ISWX2=>+$d1g+> -J!+Hh!U*x/AU/J%)"%)"#CM!$45==c2FF#CM!$45==c2FF#CM!$45F#CM!$45F)S0b00F CK/L'qMHMH# -( &/x%8!FM%VQ"VV,,A &9 &/x%8!FM%,v*>#*EVQ"VV,,F+A &9] ,l C	
#SH=#~&IsN#FY'9v+=+CDHY/ sN3"455M	
=3#6
7#
=>	
%)<
=>	
#'8
9:	
y3
/#
56	.FSL
)C
/0	
hn
-
34E : DC, > 21  ? C ?sN   &U=9U8U=V$V=VV&V+
V08U==
V	V
V#	__main__r8   r   )F)r?   resysr    shapely.geometryr   numpyr   collectionsr   rO   r+   r   r   r)   r/   r   __name__argv	gt_folderpred_folder r   r   <module>r      sr    
 	 
  $  #  	&)n5b z I((1+KY$ r   