
    iK                        S SK r S SKr\ R                  R                  \ R                  R	                  \5      5      r\R                  R                  \5        \R                  R                  S \ R                  R	                  \ R                  R                  \S5      5      5        S\ R                  S'   S SKrS SKrS SKrS SKrS SKJs  Jr  S SKJr  S SKJrJr  S SKJrJr  S SKJr  S SKr " S	 S
\5      r\S:X  Ga  \R@                  " 5       r!\" \!RD                  5      r#S r$\!RJ                  r%\ RL                  " \%SS9  \!RN                  r(\ R                  RS                  \!RN                  5      (       dJ  \ R                  RU                  \!RN                  5      (       d<  \!RN                  RW                  S5      (       a  \ R                  R                  \(S5      r(\" \(S9r,\" \!\,5      r-\!R\                  (       aO  \R^                  Ra                  S S/ SQ5      Rc                  \Rd                  5      r3\4" S5       H  r5\-" \35      r6M     / r7\8" \#5       GH  u  r9r:\" \:5      u  r3r;r<\;(       d  \<(       d  \Rz                  " \:5      r3\<(       d)  \3c"  \,R}                  SR                  \:5      5        M_  \3/r@O+\!R                  rA\A\B" \35      :  d  \AS :X  a  \B" \35      rA\3S\A r@\8" \@5       GH;  u  rCr3\R                  " 5       rD\-" \35      u  rErF\R                  " 5       \D-
  rG\$\G-  r$\B" \@5      S:  ae  \ R                  R                  \:5      S-   \I" \C5      -   S-   \I" \R                  " \E V s/ s H  o R                  5       PM     sn 5      5      -   S-   rLOX\ R                  R                  \:5      S-   \I" \R                  " \E V s/ s H  o R                  5       PM     sn 5      5      -   S-   rL\7R                  \L5        \,R                  \L5        \B" \@5      S:  a$  \,R                  SR                  \9\C\:\G5      5        O"\,R                  SR                  \9\:\G5      5        \R                  " \E\35      rO\;(       a	  \:SS S-   rPO(\<(       a  \:R                  SS\I" \C5      -   S-   5      rPO\:rP\ R                  R                  \%SR                  \ R                  R                  \P5      5      5      rR\R                  " \R\O5        \,R                  S R                  \R5      5        GM>     GM     \T" \ R                  R                  \%S!5      S"5       rU\UR                  \75        \UR                  5         SSS5        \!R                  (       a  \-R                  R                  5         gggs  sn f s  sn f ! , (       d  f       NF= f)#    Nz../..auto_growthFLAGS_allocator_strategy)
get_logger)get_image_file_listcheck_and_read)create_operators	transform)build_post_processc                   L    \ rS rSrSS jrS rS rS rS rS r	S	 r
SS
 jrSrg)TextDetector$   Nc                 V	   Uc
  [        5       nXl        UR                  U l        UR                  U l        SUR                  UR
                  S.0S/ SQ/ SQSSS.0S	S 0S
SSS/00/n0 nU R                  S:X  af  SUS'   UR                  US'   UR                  US'   SUS'   UR                  US'   UR                  US'   UR                  US'   UR                  US'   GOnU R                  S:X  av  SUS'   UR                  US'   UR                  US'   SUS'   UR                  US'   UR                  US'   UR                  US'   UR                  US'   S/ SQ/ SQSSS.0US'   GOU R                  S:X  a4  SUS'   UR                  US'   UR                  US '   UR                  US!'   GOU R                  S":X  ah  SS#UR                  00US$'   S%US'   UR                  US'   UR                   US!'   UR                  S&:X  a  S'US('   S)US*'   S+US,'   GO=S-US('   S.US*'   S/US,'   GO,U R                  S0:X  aQ  S1US'   UR"                  US'   UR$                  US'   UR&                  US2'   UR                  US'   UR(                  US3'   OU R                  S4:X  a\  SS5S6S7/00US$'   S8US'   UR*                  US9'   UR,                  US:'   UR.                  US;'   UR0                  US<'   UR                  US'   O_U R                  S=:X  a  S>S?S@00US$'   SAUS'   O@UR3                  SBR5                  U R                  5      5        [6        R8                  " S$5        [;        U5      U l        [?        U5      U l         [B        RD                  " USCU5      u  U l#        U l$        U l%        U l&        U R                  (       ab  U RH                  RN                  S-S  u  pV[Q        U[R        5      (       d  [Q        U[R        5      (       a  OUb  Ub  US$:  a  US$:  a
  SSDXV/00US$'   [;        U5      U l        URT                  (       aw  S$S K+n[X        RZ                  " 5       n[B        R\                  " 5       n	UR_                  SCUR`                  SSES U RL                  US URb                  (       a  U	OS / SFQS-USG9U l2        g g )HNDetResizeForTest)limit_side_len
limit_typeNormalizeImage)gZd;O?gy&1?g?)g
ףp=
?gv/?gCl?z1./255.hwc)stdmeanscaleorder
ToCHWImageKeepKeys	keep_keysimageshapeDBDBPostProcessnamethresh
box_threshi  max_candidatesunclip_ratiouse_dilation
score_modebox_typeDB++)      ?r(   r(   )gy=?gy+H?gw?
?   EASTEASTPostProcessscore_threshcover_thresh
nms_threshSASTresize_longr   SASTPostProcesspoly   sample_pts_numg333333?expand_scaleg?shrink_ratio_of_width   r(   g333333?PSEPSEPostProcessmin_arear   FCErescale_imgi8  i  FCEPostProcessscalesalphabetafourier_degreeCTScaleAlignedShort
short_size  CTPostProcesszunknown det_algorithm:{}detimage_shapedynamic)preprocess_timeinference_timepostprocess_time)
model_namemodel_precision
batch_size
data_shape	save_pathinference_configpidsprocess_namegpu_ids	time_keyswarmuplogger)3r   argsdet_algorithmuse_onnxdet_limit_side_lendet_limit_typedet_db_threshdet_db_box_threshdet_db_unclip_ratior$   det_db_score_modedet_box_typedet_east_score_threshdet_east_cover_threshdet_east_nms_threshdet_sast_score_threshdet_sast_nms_threshdet_pse_threshdet_pse_box_threshdet_pse_min_areadet_pse_scaler>   r?   r@   rA   infoformatsysexitr   preprocess_opr
   postprocess_oputilitycreate_predictor	predictorinput_tensoroutput_tensorsconfigr   
isinstancestr	benchmarkauto_logosgetpidget_infer_gpuid
AutoLogger	precisionuse_gpuautolog)
selfrY   rX   pre_process_listpostprocess_paramsimg_himg_wr{   pidgpu_ids
             a/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddleocr/tools/infer/predict_det.py__init__TextDetector.__init__%   sL   >\F	!// #&*&=&="&"5"5% !01&"	# 4 +'9:;!
$  %)8v&+/+=+=x(/3/E/E|,37/0151I1I~.151B1B~./3/E/E|,-1->->z*6))8v&+/+=+=x(/3/E/E|,37/0151I1I~.151B1B~./3/E/E|,-1->->z* *R&"	##Q 6)):v&151K1K~.151K1K~./3/G/G|,6)"]D4K4K$L#Q *;v&151K1K~./3/G/G|,  F*78"#3458">2>A"#:;78"#3458">2>A"#:;5()9v&+/+>+>x(/3/F/F|,-1-B-Bz*-1->->z**.*<*<w'5(#5c{7S"TQ)9v&+/;;x(*.**w')-v&373F3F/0-1->->z*4'#6s8K"LQ)8v&KK299$:L:LMNHHQK-.>?01CD $$T5&9	
NK ==,,22126LE%%%E3)?)?"u'8UQY5ST9&(G' # ..>?>>))+C,,.F#..  $$!%!"&,,DS / DL     c                     [         R                  " SSS9nUR                  SS9nU[         R                  " U5         US'   U[         R                  " U5         US'   [         R
                  " U[         R                  " U5      [         R                  " U5      4SS9n[         R                  " [         R                  " U5      SS9nU[         R                  " U5         US'   U[         R                  " U5         US'   U$ )	N)   r7   float32dtyper)   axisr   r7      )npzerossumargminargmaxdeletediffarray)r   ptsrectstmpr   s         r   order_points_clockwise#TextDetector.order_points_clockwise   s    xxi0GGGObiil#Qbiil#QiibiilBIIaL9Bwwrxx}1-biio&Qbiio&Qr   c                     U[        U5      -
  nUS:X  a  U$ US   n[        R                  " U/USS9n[        R                  " X/5      $ )Nr   r   )lenr   repeatvstack)r   polygon
max_pointspadding_size
last_pointpaddings         r   pad_polygonsTextDetector.pad_polygons   sL    !CL01NR[
))ZL,Q?yy'+,,r   c           
          [        UR                  S   5       HW  n[        [        [	        XS4   S5      US-
  5      5      XS4'   [        [        [	        XS4   S5      US-
  5      5      XS4'   MY     U$ )Nr   r)   )ranger   intminmax)r   points
img_height	img_widthpnos        r   clip_det_resTextDetector.clip_det_res   sp    a)C SQ%;Y]!KLF6N SQ%;Z!^!LMF6N * r   c                    USS u  p4/ nU H  n[        U5      [        L a  [        R                  " U5      nU R	                  U5      nU R                  XcU5      n[        [        R                  R                  US   US   -
  5      5      n[        [        R                  R                  US   US   -
  5      5      nUS::  d  US::  a  M  UR                  U5        M     [        R                  " U5      nU$ )Nr   r7   r)   r   )
typelistr   r   r   r   r   linalgnormappend)	r   dt_boxesrH   r   r   dt_boxes_newbox
rect_widthrect_heights	            r   filter_tag_det_resTextDetector.filter_tag_det_res   s     +Aa 0
CCyD hhsm--c2C##CY?CRYY^^CFSVO<=JbiinnSVc!f_=>KQ+"2$  88L)r   c                 x   USS u  p4/ nU HN  n[        U5      [        L a  [        R                  " U5      nU R	                  XcU5      nUR                  U5        MP     [        U5      S:  a2  [        S U 5       5      nU Vs/ s H  oR                  X5      PM     nn[        R                  " U5      nU$ s  snf )Nr   r7   c              3   8   #    U  H  n[        U5      v   M     g 7fN)r   ).0r   s     r   	<genexpr><TextDetector.filter_tag_det_res_only_clip.<locals>.<genexpr>   s     FgS\\s   )	r   r   r   r   r   r   r   r   r   )	r   r   rH   r   r   r   r   r   r   s	            r   filter_tag_det_res_only_clip)TextDetector.filter_tag_det_res_only_clip   s     +Aa 0
CCyD hhsm##CY?C$	  |q FFFJFRFR7!!'6l   88L)s   B7c                    UR                  5       nSU0n[        R                  " 5       nU R                  R                  (       a$  U R                  R
                  R                  5         [        X0R                  5      nUu  pUc  g[        R                  " USS9n[        R                  " USS9nUR                  5       nU R                  R                  (       a$  U R                  R
                  R                  5         U R                  (       aA  0 nXU R                  R                  '   U R                  R!                  U R"                  U5      nOU R                  R%                  U5        U R                  R!                  5         / nU R"                   H$  nUR'                  5       n	UR)                  U	5        M&     U R                  R                  (       a$  U R                  R
                  R                  5         0 n
U R*                  S:X  a  US   U
S'   US   U
S'   OU R*                  S	:X  a!  US   U
S
'   US   U
S'   US   U
S'   US   U
S'   OxU R*                  S;   a	  US   U
S'   O_U R*                  S:X  a(  [-        U5       H  u  pXSR/                  U5      '   M     O'U R*                  S:X  a  US   U
S'   US   U
S'   O[0        eU R3                  X5      nUS   S   nU R                  R4                  S:X  a  U R7                  XR8                  5      nOU R;                  XR8                  5      nU R                  R                  (       a#  U R                  R
                  R=                  SS9  [        R                  " 5       nXU-
  4$ )Nr   )Nr   r   r   r*   f_geor)   f_scorer/   f_borderr7   f_tcor   f_tvo)r   r8   r'   mapsr;   zlevel_{}rB   scorer   r2   T)stamp)copytimerY   rz   r   timesstartr	   rp   r   expand_dimsr   r[   ru   r   rt   runrv   copy_from_cpucopy_to_cpur   rZ   	enumeraterm   NotImplementedErrorrq   rb   r   r   r   end)r   imgori_imdatast
shape_list
input_dictoutputsoutput_tensoroutputpredsipost_resultr   ets                  r   predictTextDetector.predict   s   ~YY[99LL$$&112;nnSq)^^JQ7
hhj99LL$$&==J14t((--.nn(()<)<jIG++C0NN G!%!4!4&224v& "5 yy""""((*'$QZE'N&qzE)6) '
E*&qzE)$QZE'N$QZE'N#88#AJE&M5(&w/	.4j''*+ 04'#AJE&M$QZE'N%%))%<q>(+99!!V+88<<PH..xFH99LL""".YY[b  r   c           	         Sn[         R                  " S[         R                  S9nSnUR                  S   UR                  S   -  S:  Ga  UR                  S   U R                  R
                  :  Ga  U(       Ga  SnSnXqR                  S   ::  Ga  XaR                  S   S-  S-  -   nXU2S S 24   n[        U5      S:X  a   XE4$ U R                  U5      u  pUn[        U	5      S:X  d5  UR                  S   [        U	 Vs/ s H
  oS	   S   PM     sn5      -
  U:  a  UnOw[         R                  " U	S S 2SS4   5      nX   n	[        U	5      S::  a  SO&[        [         R                  " U	S S	2SS4   5      5      nUS:  a  Xn-  nU	U	S S 2SS4   U:*     n	OUn[        U	5      S:  ax  UR                  S   S:X  a)  U	[         R                  " SU/[         R                  S9-   nO<[         R                  " UU	[         R                  " SU/[         R                  S9-   SS
9nXZ-  nXqR                  S   ::  a  GM  XE4$ UR                  S   UR                  S   -  S:  Ga  UR                  S   U R                  R
                  S-  :  Ga  U(       Ga  SnSnUUR                  S   ::  Ga  XR                  S   S-  S-  -   nUS S 2UU24   n[        U5      S:X  a   XE4$ U R                  U5      u  pUn[        U	5      S:X  d5  UR                  S   [        U	 Vs/ s H
  oS	   S   PM     sn5      -
  U:  a  UnOw[         R                  " U	S S 2SS4   5      nX   n	[        U	5      S::  a  SO&[        [         R                  " U	S S	2SS4   5      5      nUS:  a  UU-  nXS S 2SS4   U:*     n	OUn[        U	5      S:  ax  UR                  S   S:X  a)  U	[         R                  " US/[         R                  S9-   nO<[         R                  " UU	[         R                  " US/[         R                  S9-   SS
9nXZ-  nUUR                  S   ::  a  GM  XE4$ U R                  U5      u  pEXE4$ s  snf s  snf )N2   )r   r   r7   r   r   r)   r7   r   r   r   r   )r   r   r   r   rY   r\   r   r   r   argsortr   r   r   )r   r   	use_sliceMIN_BOUND_DISTANCEr   elapsestart_hend_hsubimgsub_dt_boxes
sub_elapseoffsetxsorted_indicesbottom_linestart_wend_w
right_lines                     r   __call__TextDetector.__call__(  s     88IRZZ8IIaL399Q<'!+		!tyy;;;GE99Q<'))A,"2a"77U]A-.v;!#h g ,0<<+?(  %*yy|c\*J\R58\*J&KK() $G%'ZZQ1W0E%FN#/#?L |,1  SbS!QY(?!@A  
 #Q.'3(Aq1[@( #(|$q(~~a(A-#/"((Krzz3 $ $&99$(288QKrzz+RR!"$
 $Q 99Q<'p ] IIaL399Q<'!+		!tyy;;a??GE399Q<'))A,"2a"77Q-.v;!#H G ,0<<+?( %*yy|c\*J\R58\*J&KK() $G%'ZZQ1W0E%FN#/#?L |,1  SbS!QY(?!@A 
 "A~:-'3Aq4IZ4W'X"'|$q(~~a(A-#/"((#QKrzz3 $ $&99$(288VQKrzz+RR!"$
 $K 399Q<'P   $||C0H] +K^ +Ks   Q.
Q3
)
rY   r   rw   rZ   ru   rv   rq   rt   rp   r[   r   )F)__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r  __static_attributes__ r   r   r   r   $   s/    DL	- $@!De r   r   __main__T)exist_ok/zbenchmark_detection.log)log_file   )rE   rE   r   r7   zerror in loading image:{}r)   _	
z {}_{} The predict time of {}: {}z{} The predict time of {}: {}pngz.pdfz.pngz
det_res_{}z The visualized image saved in {}zdet_results.txtw)[r|   rn   pathdirnameabspath__file____dir__r   insertjoinenvironcv2numpyr   r   tools.infer.utilityinferrr   ppocr.utils.loggingr   ppocr.utils.utilityr   r   
ppocr.datar   r	   ppocr.postprocessr
   jsonobjectr   r  
parse_argsrY   	image_dirimage_file_list
total_timedraw_img_save_dirmakedirssave_log_pathr  isdirexistsendswithrX   text_detectorrW   randomuniformastypeuint8r   r   r   ressave_resultsr   idx
image_fileflag_gifflag_pdfimreaddebugrm   imgspage_numr   indexr   r   r  r   basenamery   dumpstolist	save_predrl   draw_text_det_ressrc_im	save_filereplaceimg_pathimwriteopenf
writelinescloserz   r   report)r   s   0r   <module>rS     s   
 

''//"''//(3
4   277??277<<#AB C)6

% & 
   
 % % * C 2 0 i 6 i X zD)$..9OJ..KK!D1 !!H	ww}}T''((GGNN4--..43E3E3N3Ns3S3S77<<*CD*F !v.M{{ii36==bhhGqA$C  L$_5Z"0"<Xx**Z(C{8??
KL5D}}H#c("h!ms8y>D#D/JE3B',KHaYY[2%F& J4y1}GG$$Z0%j!  $**(%C(Qhhj(%CDE	F
   GG$$Z0$**(%C(Qhhj(%CDEF   	*KK	"4y1}6==UJ 3::3
FS ..x=F&sOe3	&..vsSZ7G&7PQ	&	ww||!<#6#6rww7G7G	7R#SH KK&)KK:AA(KL] * 6| 
bggll,.?@#	F!	\"		 
G ~~$$& s b &D &D< 
G	Fs   1V.
V3"V88
W