
    i!              	          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        \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Js  Jr  S SKJs  J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  S S	KJ r   S S
K!J"r"  S SK#J$r$  S SK%J&s  J'r(  \" 5       r)S r* " S S\+5      r,S r-S r.\/S:X  a  \$" 5       r0\0Rb                  (       a  S SK2r2/ r3\0Rh                  r4\5" \45       Hx  r6\Rn                  S/\Rp                  -   SRs                  \65      SRs                  S5      /-   r:\2Rv                  " \:\Rx                  \Rx                  S9r=\3R                  \=5        Mz     \3 H  r=\=R}                  5         M     g\." \05        gg)    Nz..z../..auto_growthFLAGS_allocator_strategy)sorted_boxes)get_image_file_listcheck_and_read)
get_logger)
TableMatch)TableMasterMatcher)
parse_argsc                     Uu  p4pVUu  pxn	X0-
  n
XP-   nX@-
  nX`-   nU
S:  a  U
OSnX::  a  UOUnUS:  a  UOSnX::  a  UOUnUUUU4$ )Nr    )pixdet_boxshapex0y0x1y1hwctmp_x0tmp_x1tmp_y0tmp_y1x0_x1_y0_y1_s                     i/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddleocr/ppstructure/table/predict_table.pyexpandr!   +   so    NBBGA!XFXFXFXFaK&QCK&QCaK&QCK&QCS#    c                   4    \ rS rSrSS jrS	S jrS rS rSrg)
TableSystem:   Nc                    Xl         UR                  (       d#  [        R                  [        R
                  5        SnUR                  (       a  UR                  nSUl        Uc*  [        R                  " [        R                  " U5      5      OUU l        Uc*  [        R                  " [        R                  " U5      5      OUU l        U(       a  SUl        [        R                   " U5      U l        UR$                  S;   a  ['        5       U l        O[+        SS9U l        [,        R.                  " US[        5      u  U l        U l        U l        U l        g )NFT)TableMaster)filter_ocr_resulttable)argsshow_logloggersetLevelloggingINFO	benchmarkpredict_detTextDetectorcopydeepcopytext_detectorpredict_recTextRecognizertext_recognizerpredict_strtureTableStructurertable_structurertable_algorithmr
   matchr	   utilitycreate_predictor	predictorinput_tensoroutput_tensorsconfig)selfr*   r5   r8   benchmark_tmps        r    __init__TableSystem.__init__;   s   	}}OOGLL)>> NNM"DN $ $$T]]4%89 	 & &&t}}T':;  	
 !DN / ? ? E?2+-DJ#d;DJ $$T7F;	
NKr"   c                 f   [        5       nSSSSSS.n[        R                  " 5       nU R                  [        R                  " U5      5      u  pgUS   R                  5       US'   XtS'   U R                  [        R                  " U5      5      u  ppXS'   XS'   U(       a'  U Vs/ s H  oR                  5       PM     snUS'   XS	'   [        R                  " 5       nU R                  XhU	5      n[        R                  " 5       nX-
  US
'   XS'   [        R                  " 5       nUU-
  US'   X44$ s  snf )Nr   )detrecr)   allr=      	cell_bboxr)   rI   rJ   boxesrec_resr=   htmlrK   )dicttime
_structurer3   r4   tolist_ocrr=   )rD   imgreturn_ocr_result_in_tableresult	time_dictstartstructure_reselapsedt_boxesrO   
det_elapse
rec_elapsextic	pred_htmltocends                    r    __call__TableSystem.__call__\   s   a!AJ			 $c0B C+A.557{#'48IIdmmC>P4Q1:%%%%%3;<8axxz8<F7O '9iikJJ}@	iik Y	'"viik;	%   =s   $D.c                 V    U R                  [        R                  " U5      5      u  p#X#4$ )N)r;   r3   r4   )rD   rV   r[   r\   s       r    rS   TableSystem._structureu   s'     $ 5 5dmmC6H I$$r"   c                    UR                   S S u  p#U R                  [        R                  " U5      5      u  pE[	        U5      n/ nU H  n[        SUS S 2S4   R                  5       S-
  5      n[        X7S S 2S4   R                  5       S-   5      n	[        SUS S 2S4   R                  5       S-
  5      n
[        X'S S 2S4   R                  5       S-   5      nXX/nUR                  U5        M     [        R                  " U5      n[        R                  SR                  [        U5      U5      5        Uc  g/ n[        [        U5      5       He  nXM   n[        SXR                   5      u  nnnnU[!        U5      [!        U5      2[!        U5      [!        U5      2S S 24   nUR                  U5        Mg     U R#                  U5      u  nn[        R                  SR                  [        U5      U5      5        UUUU4$ )N   r   rL   zdt_boxes num : {}, elapse : {}NNzrec_res num  : {}, elapse : {})r   r5   r3   r4   r   maxminappendnparrayr,   debugformatlenranger!   intr8   )rD   rV   r   r   r]   r^   r_boxesboxx_minx_maxy_miny_maximg_crop_listir   r   r   r   r   	text_rectrO   r_   s                         r    rU   TableSystem._ocry   s   yy!}#11$--2DE)C3q!t9==?Q./Eq!t9==?Q./E3q!t9==?Q./Eq!t9==?Q./E.CNN3  88G$5<<S]JWXs8}%AkG#Aw		:NBBCGc"g-s2wR/@!CDI  +	 &
 #22=A5<<S\:VW*j88r"   )	r*   rC   rA   r=   rB   r@   r;   r5   r8   rk   )F)	__name__
__module____qualname____firstlineno__rF   re   rS   rU   __static_attributes__r   r"   r    r$   r$   :   s    <B!2%9r"   r$   c                 2    SSK J n  UR                  X5        g )Nr   )	tablepyxl)r   document_to_xl)
html_table
excel_pathr   s      r    to_excelr      s    #Z4r"   c                 D	   [        U R                  5      nXR                  S U R                  2   n[        R
                  " U R                  SS9  [        U 5      n[        U5      n[        [        R                  R                  U R                  S5      SSS9nUR                  S5        UR                  S5        UR                  S	5        UR                  S
5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        [        U5       GH  u  pV[        R                  SR!                  XSU5      5        [#        U5      u  pxn	[        R                  R                  U R                  [        R                  R%                  U5      R'                  S5      S   S-   5      n
U(       d  [(        R*                  " U5      nUc&  [        R-                  SR!                  U5      5        M  [.        R.                  " 5       nU" U5      u  pUS   n[        R                  U5        [1        X5        [        R                  SR!                  U
5      5        [.        R.                  " 5       U-
  n[        R                  SR!                  U5      5        [        US   5      S:  a/  [        US   S   5      S:X  a  [2        R4                  " XlS   5      nO[6        R8                  " X|S   5      n[        R                  R                  U R                  [        R                  R%                  U5      5      n[(        R:                  " X5        UR                  S
5        UR                  S[        R                  R%                  U5       S35        UR                  SU S35        UR                  SUR=                  SS 5      R=                  S!S 5      -   S"-   5        UR                  S[        R                  R%                  U5       S35        UR                  S5        GM     UR                  S#5        UR?                  5         U R@                  (       a%  URB                  RD                  RG                  5         g g )$NT)exist_okz	show.htmlr   zutf-8)modeencodingz<html>
<body>
z<table border="1">
zE<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />z<tr>
z<td>img name
z<td>ori image</td>z<td>table html</td>z<td>cell box</td>z</tr>
z
[{}/{}] {}.r   z.xlsxzerror in loading image:{}rP   zexcel saved to {}zPredict time : {:.3f}srM      z<td> z <br/>
z<td><img src="z" width=640></td>
z<td><table  border="1">z<html><body><table> z</table></body></html>z</table></td>
z	</table>
)$r   	image_dir
process_idtotal_process_numosmakedirsoutputr$   rs   openpathjoinwrite	enumerater,   inforr   r   basenamesplitcv2imreaderrorrR   r   r9   draw_rectangler>   
draw_boxesimwritereplacecloser0   r;   autologreport)r*   image_file_list	table_sysimg_numf_htmlr}   
image_filerV   flag_r   	starttimepred_resrb   r\   img_save_paths                   r    mainr      s   )$..9O%oo&O9O9O&OPOKKd+D!I/"G"'',,t{{K8sWUF
LL#$
LL'(
LLO LL
LL!"
LL%&
LL&'
LL$%
LL"?3L''J?@%j11WW\\KK))*5;;C@CgM

 **Z(C;LL4;;JGHIIK	nV$	I''..z:;y(,33F;<x$%)c(;2G2J.Kq.P!00k=RSC$$S;*?@CT[["''2B2B:2NOM'XuRWW--j9:(CD~j\1DEF% 5r:BB("  	 	
 	~bgg&6&6z&B%CCVWXYM 4N LL
LLN~~""**113 r"   __main__z-uz--process_id={}z--use_mp={}F)stdoutstderr)?r   sysr   dirnameabspath__file____dir__rn   insertr   environr   r3   r.   numpyro   rR   tools.infer.predict_recinferr6   tools.infer.predict_detr1   tools.infer.utilityr>   tools.infer.predict_systemr   ppocr.utils.utilityr   r   ppocr.utils.loggingr   ppstructure.table.matcherr	   $ppstructure.table.table_master_matchr
   ppstructure.utilityr   #ppstructure.table.predict_structurer)   predict_structurer9   r,   r!   objectr$   r   r   r   r*   use_mp
subprocessp_listr   rt   r   
executableargvrr   cmdPopenr   pwaitr   r"   r    <module>r      s   
 

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

% & 
     - - - - % % 3 C * 0 C * = =	Y9& Y9x5@4F z<D{{ 22 12J&(($++J79M9Me9TUV 
   SZZ

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