
    i,              	          S SK r 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rS SKrS SKJr  S SKJs  Jr  S SKJs  Jr  S SKJs  Jr  S SKJs  Jr  S SKJrJ r   S SK!J"r"  S SKJ#r#J$r$J%r%J&r&J'r'  \"" 5       r( " S	 S
\)5      r*S r+S r,\-S:X  a  \R\                  " 5       r/\/R`                  (       a  / r1\/Rd                  r2\3" \25       Hx  r4\Rj                  S/\Rl                  -   SRo                  \45      SRo                  S5      /-   r8\Rr                  " \8\Rt                  \Rt                  S9r;\1R                  \;5        Mz     \1 H  r;\;Ry                  5         M     g\," \/5        gg)    Nz../..auto_growthFLAGS_allocator_strategy)Image)get_image_file_listcheck_and_read)
get_logger)draw_ocr_box_txtget_rotate_crop_imageget_minarea_rect_cropslice_generatormerge_fragmentedc                   .    \ rS rSrS rS rS0 4S jrSrg)
TextSystem0   c                    UR                   (       d#  [        R                  [        R                  5        [
        R                  " U5      U l        [        R                  " U5      U l
        UR                  U l        UR                  U l        U R                  (       a  [        R                  " U5      U l        Xl        SU l        g )Nr   )show_logloggersetLevelloggingINFOpredict_detTextDetectortext_detectorpredict_recTextRecognizertext_recognizeruse_angle_cls
drop_scorepredict_clsTextClassifiertext_classifierargscrop_image_res_index)selfr"   s     d/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddleocr/tools/infer/predict_system.py__init__TextSystem.__init__1   s    }}OOGLL)(55d;*99$?!////#.#=#=d#CD 	$%!    c           	      X   [         R                  " USS9  [        U5      n[        U5       Hf  n[        R
                  " [         R                  R                  USXPR                  -    S35      X%   5        [        R                  U SX5    35        Mh     U =R                  U-  sl        g )NTexist_okmg_crop_z.jpgz, )osmakedirslenrangecv2imwritepathjoinr#   r   debug)r$   
output_dirimg_crop_listrec_resbbox_numbnos         r%   draw_crop_rec_resTextSystem.draw_crop_rec_res?   s    
J.}%?CKK(3/H/H+H*I N "	 LLC57<.12 # 	!!X-!r(   Tc                 n   SSSSS.nUc  [         R                  S5        S S U4$ [        R                  " 5       nUR                  5       nU(       a  [	        UUS   US   S9n/ n/ n	U Hu  u  pnU R                  U
SS9u  pUR                  (       d  M+  US S 2S S 2S4==   U-  ss'   US S 2S S 2S	4==   U-  ss'   U	R                  U5        UR                  U5        Mw     [        R                  " U	5      n[        UUS
   US   S9n[        U5      nOU R                  U5      u  pXS'   UcE  [         R                  SR                  U5      5        [        R                  " 5       nX-
  US'   S S U4$ [         R                  SR                  [        U5      U5      5        / n[        U5      n[        [        U5      5       H`  n[        R                   " UU   5      nU R"                  R$                  S:X  a  ['        UU5      nO[)        UU5      nUR                  U5        Mb     U R*                  (       aN  U(       aG  U R-                  U5      u  nnnXS'   [         R                  SR                  [        U5      U5      5        [        U5      S:  a"  [         R                  S[        U5       S35        U R/                  U5      u  nnXS'   [         R                  SR                  [        U5      U5      5        U R"                  R0                  (       a'  U R3                  U R"                  R4                  UU5        / / nn[7        UU5       HD  u  nnUS   US	   nnUU R8                  :  d  M"  UR                  U5        UR                  U5        MF     [        R                  " 5       nX-
  US'   UUU4$ )Nr   )detrecclsallzno valid image providedhorizontal_stridevertical_stride)rB   rC   T)	use_slice   merge_x_thresmerge_y_thres)boxesx_thresholdy_thresholdr>   zno dt_boxes found, elapsed : {}rA   zdt_boxes num : {}, elapsed : {}quadr@   zcls num  : {}, elapsed : {}i  zrec crops num: z$, time and memory cost may be large.r?   zrec_res num  : {}, elapsed : {})r   r5   timecopyr   r   sizeappendnpconcatenater   sumformatr/   sorted_boxesr0   deepcopyr"   det_box_typer
   r   r   r!   r   save_crop_resr;   crop_res_save_dirzipr   )r$   imgr@   slice	time_dictstartori_im	slice_genelapseddt_slice_boxes
slice_cropv_starth_startdt_boxeselapseendr7   r:   tmp_boximg_crop
angle_listr8   filter_boxesfilter_rec_resbox
rec_resulttextscores                               r%   __call__TextSystem.__call__L   si   a!<	;LL23y((		'"'(;"< %&7 8I
 GN09,
W#'#5#5jD#5#Q ===Q1W%0%Q1W%0%"))(3NN6* 1: ~~n5H'!/2!/2H
 \F#11#6H!%LL:AA&IJ))+C"{Iey((LL188XO )X'CmmHSM2Gyy%%/0A0A  * ( #040D0D]0S-M:v%eLL-44S5GP }$LL!#m"4!55YZ ..}=!%6==c'lFST99""""499#>#>wW')2n"8W5OC$Q-A%D'##C(%%j1	  6
 iik;	%^Y66r(   )r"   r#   r   r!   r   r   r   N)__name__
__module____qualname____firstlineno__r&   r;   rq   __static_attributes__ r(   r%   r   r   0   s    &. !%B Q7r(   r   c                 L   U R                   S   n[        U S S9n[        U5      n[        US-
  5       Hl  n[        USS5       HX  n[	        X5S-      S   S   X5   S   S   -
  5      S:  a/  X5S-      S   S   X5   S   S   :  a  X5   nX5S-      X5'   XcUS-   '   MW    Mj     Mn     U$ )z
Sort text boxes in order from top to bottom, left to right
args:
    dt_boxes(array):detected text boxes with shape [4, 2]
return:
    sorted boxes(array) with shape [4, 2]
r   c                 "    U S   S   U S   S   4$ )Nr   rE   rx   )xs    r%   <lambda>sorted_boxes.<locals>.<lambda>   s    1Q47AaDG2Dr(   )keyrE   
   )shapesortedlistr0   abs)re   	num_boxesrT   _boxesijtmps          r%   rT   rT      s     q!I((DEL,F9q=!q"b!A6a%=#A&1a89B>1ua #fil1o5i"q5M	 #q1u " " Mr(   c                    [        U R                  5      nXR                  S U R                  2   n[	        U 5      nSnU R
                  nU R                  nU R                  n[        R                  " USS9  / n[        R                  S5        U R                  (       aZ  [        R                  R                  SS/ SQ5      R!                  [        R"                  5      n[%        S5       H  n	U" U5      n
M     SnSu  pn[&        R&                  " 5       nSn[)        U5       GHE  u  nn[+        U5      u  nnnU(       d  U(       d  [,        R.                  " U5      nU(       d-  Uc&  [        R1                  S	R3                  U5      5        Mj  U/nO1U R4                  nU[7        U5      :  d  US:X  a  [7        U5      nUS U n[)        U5       GH  u  nn[&        R&                  " 5       nU" U5      u  nnn[&        R&                  " 5       U-
  nUU-  n[7        U5      S
:  a6  [        R1                  [9        U5      S-   [9        U5      -   SUU4-  -   5        O&[        R1                  [9        U5      SUU4-  -   5        U H+  u  nn[        R1                  SR3                  UU5      5        M-     [%        [7        U5      5       V	s/ s HP  n	UU	   S   [        R:                  " UU	   5      R!                  [        R<                  5      R?                  5       S.PMR     n
n	[7        U5      S
:  aK  [        R@                  RC                  U5      S-   [9        U5      -   S-   [D        RF                  " U
SS9-   S-   nO;[        R@                  RC                  U5      S-   [D        RF                  " U
SS9-   S-   nURI                  U5        U(       d  GM   [J        RL                  " [,        RN                  " U[,        RP                  5      5      n Un![%        [7        U5      5       V	s/ s H  n	UU	   S   PM     n"n	[%        [7        U5      5       V	s/ s H  n	UU	   S
   PM     n#n	[S        U U!U"U#UUS9n$U(       a	  US S S-   n%O+U(       a"  URU                  SS[9        U5      -   S-   5      n%OUn%[,        RV                  " [        R@                  RY                  U[        R@                  RC                  U%5      5      U$S S 2S S 2S S S24   5        [        R1                  SR3                  [        R@                  RY                  U[        R@                  RC                  U%5      5      5      5        GM     GMH     [        R                  SR3                  [&        R&                  " 5       U-
  5      5        U RZ                  (       aH  UR\                  R^                  Ra                  5         URb                  R^                  Ra                  5         [e        [        R@                  RY                  US5      SSS9 n&U&Rg                  U5        S S S 5        g s  sn	f s  sn	f s  sn	f ! , (       d  f       g = f)NTr*   zIn PP-OCRv3, rec_image_shape parameter defaults to '3, 48, 320', if you are using recognition model with PP-OCRv2 or an older version, please set --rec_image_shape='3,32,320r      )  r      r   )r   r   r   zerror in loading image:{}rE   _z  Predict time of %s: %.3fsz
{}, {:.3f})transcriptionpoints	F)ensure_ascii
)r   	font_pathpngz.pdfz.pngr   z The visualized image saved in {}zThe predict total time is {}zsystem_results.txtwzutf-8)encoding)4r   	image_dir
process_idtotal_process_numr   vis_font_pathr   draw_img_save_dirr-   r.   r   infowarmuprP   randomuniformastypeuint8r0   rL   	enumerater   r1   imreadr5   rS   page_numr/   strarrayint32tolistr3   basenamejsondumpsrO   r   	fromarraycvtColorCOLOR_BGR2RGBr	   replacer2   r4   	benchmarkr   autologreportr   open
writelines)'r"   image_file_listtext_sysis_visualizer   r   r   save_resultsrZ   r   res
total_timecpu_memgpu_memgpu_util_stcountidx
image_fileflag_gifflag_pdfimgsr   index	starttimere   r8   r\   rf   ro   rp   	save_predimagerH   txtsscoresdraw_img	save_filefs'                                          r%   mainr      se   )$..9O%oo&O9O9O&OPO$HL""IJ..KK!D1L
KK	w {{ii36==bhhGrA3-C  J!(Gh
))+CE$_5Z"0"<Xx**Z(C{8??
KL5D}}H#c("h!ms8y>D#D/JE3		I+3C=(HgyYY[9,F& J4y1}H%j! 4z66JJK H<
F?SSS  'e\00u=>  ' s8}-
 .A &-QZ] hhx{3::288DKKM .   4y1}GG$$Z0%j!  jj59	:
   GG$$Z0jj59:   	*|S#:K:K(LM /4S\/BC/B!
1/BC16s7|1DE1DA'!*Q-1DE+)'  *3B% 7I * 2 263U;Kf;T UI *IGGLL!2BGG4D4DY4OPQ4R4Z( 6==%68H8H8STI * 6p KK.55diikC6GHI~~&&--/  ((//1	
&(<=sW
	
	\"
 
y8 DE>
 
s   AYYY(Y
Y __main__z-uz--process_id={}z--use_mp={}F)stdoutstderr)=r-   sys
subprocessr3   dirnameabspath__file____dir__rO   insertr4   environr1   rM   numpyrP   r   rL   r   PILr   tools.infer.utilityinferutilitytools.infer.predict_recr   tools.infer.predict_detr   tools.infer.predict_clsr   ppocr.utils.utilityr   r   ppocr.utils.loggingr   r	   r
   r   r   r   r   objectr   rT   r   rs   
parse_argsr"   use_mpp_listr   r0   r   
executableargvrS   cmdPopenr   pwaitrx   r(   r%   <module>r      s   
 
 
''//"''//(3
4   277??277<<#AB C)6

% & 
       % % - - - - - - C *  
m7 m7`2z#z zD{{ 22 12J&(($++J79M9Me9TUV 
   SZZ

KAMM! 3 AFFH  	T
! r(   