
    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Jr  S SKJr  S SKJr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%J&r&  S SK'J(r(J)r)J*r*  \" 5       r+ " S S\,5      r-SS jr.S r/\0S:X  a  \(" 5       r1\1Rd                  (       a  / r3\1Rh                  r4\5" \45       Hx  r6\Rn                  S/\Rp                  -   SRs                  \65      SRs                  S5      /-   r:\Rv                  " \:\Rx                  \Rx                  S9r=\3R                  \=5        Mz     \3 H  r=\=R}                  5         M     g\/" \15        gg)    Nz../auto_growthFLAGS_allocator_strategy)deepcopy)
try_import)get_image_file_listcheck_and_read)
get_logger)draw_ser_resultsdraw_re_results)
TextSystem)TextRecognizer)LayoutPredictor)TableSystemto_excel)
parse_argsdraw_structure_resultcal_ocr_word_boxc                   6    \ rS rSrS rS	S jrS rS rS rSr	g)
StructureSystem,   c                    UR                   U l         UR                  U l        S U l        UR                  (       a  SS KnUR                  SS9U l        U R                   S:X  Ga  UR                  (       d#  [        R                  [        R                  5        UR                  S:X  a,  UR                  S:X  a  SUl        [        R                  S5        S U l        S U l        S U l        S U l        UR                  (       a1  [%        U5      U l        UR                  (       a  ['        U5      U l        UR(                  (       aX  U R                  b;  [+        UU R                  R,                  U R                  R.                  5      U l        O[+        U5      U l        UR0                  (       a_  [3        U5      nUR4                  Ul        UR8                  Ul        UR<                  Ul        UR@                  Ul!        [E        U5      U l        O#U R                   S:X  a  SS	K#J$n  U" U5      U l%        URL                  U l&        g )
Nr   text_image_orientation)
model_name	structureFTzAWhen args.layout is false, args.ocr is automatically set to falsekie)SerRePredictor)'moderecoveryimage_orientation_predictorimage_orientation
paddleclas
PaddleClasshow_logloggersetLevelloggingINFOlayoutocrwarninglayout_predictortext_systemtable_systemformula_systemr   r   tabler   text_detectortext_recognizerformular   formula_algorithmrec_algorithmformula_model_dirrec_model_dirformula_char_dict_pathrec_char_dict_pathformula_batch_numrec_batch_numr   (ppstructure.kie.predict_kie_token_ser_rer   kie_predictorreturn_word_box)selfargsr!   args_formular   s        d/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddleocr/ppstructure/predict_system.py__init__StructureSystem.__init__-   s   II	+/(!!/9/D/D3 0E 0D, 99#==-{{e#D(8 W %)D!#D $D"&D{{(7(=%88'1$'7D$zz##/(3((66((88)D% )4D(9D%||'~-1-C-C*-1-C-C*262M2M/-1-C-C*&4\&B#YY%O!/!5D#33    c           
      ~   SSSSSSSSSS.	n[         R                   " 5       nU R                  b  [         R                   " 5       nU R                  R                  US9n[        U5      nUS   S   S   n	[        R
                  [        R                  [        R                  S.n
X;   a  [        R                  " XU	   5      n[         R                   " 5       nX-
  US'   U R                  S:X  Ga  UR                  5       nU R                  b!  U R                  U5      u  pUS==   U-  ss'   OUR                  S S	 u  nn[        S S
SS9/nS nU R                  b4  U R                  U5      u  nnUS==   US   -  ss'   US==   US   -  ss'   / nU GHT  nSnUS   bH  US   u  nnnn[!        U5      [!        U5      [!        U5      [!        U5      4u  nnnnUUU2UU2S S 24   nOSSWW4u  nnnnUnUUUU/nUS   S
:X  ac  U R"                  bU  U R#                  UU5      u  nnUS
==   US
   -  ss'   US==   US   -  ss'   US==   US   -  ss'   US==   US   -  ss'   OUUS   S:X  a7  U R$                  b*  U R%                  U/5      u  nnUS==   U-  ss'   SUS   0nOUb  U R'                  UU5      nUR)                  US   R+                  5       UUUUUS   S.5        GMW     [         R                   " 5       nUU-
  US'   UU4$ U R                  S:X  a#  U R-                  U5      u  n nXS'   XS'   U S   U4$ g)Nr   )	r    r(   r/   table_matchr2   detrecr   all)
input_datalabel_names)90180270r    r   r(      r/   g        )bboxlabelscorerG   rH    rP   rQ   rF   matchequationr2   latexrR   )typerP   imgresimg_idxrR   rI   r   )NN)timer   predictnextcv2ROTATE_90_COUNTERCLOCKWISE
ROTATE_180ROTATE_90_CLOCKWISErotater   copyr+   shapedictr,   _predict_textintr-   r.   _filter_text_resappendlowerr<   )!r>   rX   return_ocr_result_in_tablerZ   	time_dictstarttic
cls_resultcls_resanglecv_rotate_codetocori_im
layout_reselapsehwtext_resocr_time_dictres_listregionrY   x1y1x2y2roi_imgrP   table_time_dict	latex_resformula_timeendre_ress!                                    rA   __call__StructureSystem.__call__b   s   !"

	 		++7))+C99AASAQJ:&GAJ}-a0E44~~..N
 &jjU&;<))+C-0YI)*99#XXZF$$0%)%:%:3%?"
(#v-#||BQ'1"G3GH
 H+*.*<*<S*A'-% M%$88 % M%$88 H$&>-%+F^NBB%(Wc"gs2wB%GNBB$RUBrE1_5G%&1aZNBB$GBB''?g-((4/3/@/@#%?0,_ "'*og.FF*!-0OG4LL0!%(OE,BB(!%(OE,BB(G_
2t7J7J7V.2.A.A7).L+I|i(L8("IaL1C  +"33HdC &w 5 5 7 $&"#*!'	? %T ))+C"U{IeY&&YY%!//4NFF%e%e!9i''rD   c           	         U R                  U5      u  p#n/ SQn/ n[        X#5       H  u  pxUS   US   pU H  nX;   d  M
  U	R                  US5      n	M     U R                  (       aA  [	        XUS   5      u  pUR                  U	[        U
5      UR                  5       UUS.5        M  UR                  U	[        U
5      UR                  5       S.5        M     Xd4$ )N)<strike>r   z<sup>z</sub>z<b>z</b>z<sub>z</sup>z
<overline>z</overline>z<underline>z</underline>z<i>z</i>r      rS   rO   )text
confidencetext_region	text_wordtext_word_region)r   r   r   )r,   zipreplacer=   r   ri   floattolist)r>   rX   filter_boxesfilter_rec_resrz   style_tokenrY   boxrec_resrec_strrec_conftokenword_box_content_listword_box_lists                 rA   rf   StructureSystem._predict_text   s    6:6F6Fs6K3m

  =LC '
GAJX$#%ooeR8G % ##7G'!*84% 

 '&+Ho'*zz|%:,9 

 '&+Ho'*zz|' >4 !!rD   c                     / nU HO  nUS   nUS   S   US   S   US   S   US   S   4nU R                  X&5      (       d  M>  UR                  U5        MQ     U$ )Nr   r   r   rO   )_has_intersectionri   )r>   ry   rP   rY   rr   rects          rA   rh    StructureSystem._filter_text_res   sl    AM"Cq6!9c!fQiQCF1I=D%%d11

1	 
 
rD   c                 D    Uu  p4pVUu  pxpX9:  d  XW:  a  gXJ:  d  Xh:  a  gg)NFT )r>   rect1rect2x_min1y_min1x_max1y_max1x_min2y_min2x_max2y_max2s              rA   r   !StructureSystem._has_intersection  s1    ).&).&?fo?forD   )	r.   r   r<   r+   r   r   r=   r-   r,   N)Fr   )
__name__
__module____qualname____firstlineno__rB   r   rf   rh   r   __static_attributes__r   rD   rA   r   r   ,   s    34jhT1"frD   r   c           	      |   [         R                  R                  X5      n[         R                  " USS9  [	        U 5      n[        [         R                  R                  USR                  U5      5      SSS9 nU GH$  nUR                  S5      nUR                  SR                  [        R                  " U5      5      5        US	   R                  5       S
:X  ab  [        US   5      S:  aP  SUS   ;   aG  [         R                  R                  USR                  US   U5      5      n	[        US   S   U	5        M  US	   R                  5       S:X  d  M  [         R                  R                  USR                  US   U5      5      n
[        R                  " X5        GM'     S S S 5        g ! , (       d  f       g = f)NTexist_okz
res_{}.txtrx   utf8encodingrX   z{}
rW   r/   rY   r   htmlz
{}_{}.xlsxrP   figurez	{}_{}.jpg)ospathjoinmakedirsr   openformatpopwritejsondumpsrj   lenr   r^   imwrite)rY   save_folderimg_namerZ   excel_save_folderres_cpfr|   r   
excel_pathimg_paths              rA   save_structure_resr     s`   [;KK!D1c]F	
&(;(;G(DE
 
Fjj'GGGFMM$**V"456 v$$&'1u&*fUm+WW\\%|':':6&>7'S
 v.
;%%'8377<<%{'9'9&.''R H.# 
 
 
s   8CF-AF--
F;c                 F
   [        U R                  5      nUnXR                  S U R                  2   nU R                  (       dT  [        U 5      n[        R                  R                  U R                  UR                  5      n[        R                  " USS9  [        U5      n[        U5       GH  u  pV[        R                  SR!                  XTU5      5        [#        U5      u  pxn	[        R                  R%                  U5      R'                  S5      S   n
U R(                  (       a  U R                  (       a  U	(       a  [+        S5        SSKJn  [        R                  " U R                  SS9  [        R                  R                  U R                  SR!                  U
5      5      nU" U5      nUR1                  U5        UR3                  5         [        R                  S	R!                  U5      5        GML  U(       d  U	(       d  [4        R6                  " U5      nU	(       d.  Uc'  [        R9                  S
R!                  U5      5        GM  U/nOUn/ n[        U5       GH  u  nnW" UUS9u  nn[        R                  R                  WU
SR!                  U5      5      n[        R                  " [        R                  R                  X:5      SS9  UR                  S:X  a+  U/ :w  a%  [;        UUU R<                  5      n[?        UX:U5        OUR                  S:X  a  UR@                  RB                  b  [E        UUU R<                  S9nO[G        UUU R<                  S9n[I        [        R                  R                  X:SR!                  U5      5      SSS9 nSR!                  U[J        RL                  " SU0SS95      nURO                  U5        S S S 5        U/ :w  a;  [4        RP                  " UW5        [        R                  SR!                  U5      5        U R(                  (       d  GM  U/ :w  d  GM  SSK)J*nJ+n  SSK,J-n  UR\                  u  nnnU" UU5      nUU-  nGM     U R(                  (       a+  U/ :w  a%   W" XWU
5        U R^                  (       a	  W" XU
5        [        R                  SR!                  WS   5      5        GM"     g ! , (       d  f       GN= f! [`         a1  n[        R9                  SR!                  UU5      5         S nAGMm  S nAff = f)NTr   z
[{}/{}] {}.r   pdf2docx)	Converterz{}_api.docxzdocx save to {}zerror in loading image:{})rZ   zshow_{}.jpgr   r   )	font_pathzres_{}_kie.txtrx   r   r   z{}	{}
ocr_infoF)ensure_asciizresult save to {})sorted_layout_boxesconvert_info_docx)convert_info_markdownz.error in layout recovery image:{}, err msg: {}zPredict time : {:.3f}srI   )1r   	image_dir
process_idtotal_process_numuse_pdf2docx_apir   r   r   r   outputr   r   r   	enumerater$   infor   r   basenamesplitr   r   pdf2docx.converterr   convertcloser^   imreaderrorr   vis_font_pathr   r<   	predictorr   r
   r   r   r   r   r   $ppstructure.recovery.recovery_to_docr   r   )ppstructure.recovery.recovery_to_markdownr   rd   recovery_to_markdown	Exception)r?   image_file_liststructure_sysr   img_numi
image_filerX   flag_gifflag_pdfr   r   	docx_filecvimgsall_resindexrY   rl   img_save_pathdraw_imgr   res_strr   r   r   rw   rx   _exs                                 rA   mainr  0  s   )$..9O%O%oo&O9O9O&OPO  '-ggll4;;0B0BC
K$//"G"?3L''J?@"0"<x77##J/55c:1===T22xz"4KKd3T[[-2F2Fx2PQI:&BJJy!HHJKK)00;<**Z(C{8??
KL5DD#D/JE3*3>NCGGLLX}';';E'BM KK[;dK!![0SBY0c4;M;MN"3uE##u, ..88D.sC4CUCUVH/SDDVDVWHGGLL8H8O8OPU8VW# (//"DJJ
C/@u$UG GGG$ byM84/66}EF}}} ))1a)#q13M *P ==W]
!#XF,,)'I 	,33Ie4DEFc 4X <  DKK"B
 s$   9S$S%
S"%
T /%TT __main__z-uz--process_id={}z--use_mp={}F)stdoutstderr)r   )?r   sys
subprocessr   dirnameabspath__file____dir__ri   insertr   environr^   r   numpynpr[   r&   rc   r   paddle.utilsr   ppocr.utils.utilityr   r   ppocr.utils.loggingr	   ppocr.utils.visualr
   r   tools.infer.predict_systemr   tools.infer.predict_recr   !ppstructure.layout.predict_layoutr   ppstructure.table.predict_tabler   r   ppstructure.utilityr   r   r   r$   objectr   r   r  r   r?   use_mpp_listr   ranger   
executableargvr   cmdPopenr  pwaitr   rD   rA   <module>r#     s   
 
 
''//"''//(3
4   277??277<<#?@ A)6

% & 
      # C * @ 1 2 = A S S	cf cL/<\G~ z<D{{ 22 12J&(($++J79M9Me9TUV 
   SZZ

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