
    Mi                         S SK r S SKJrJr  S SKJr  SS\4S jjrS\\   S\\   4S jr\ R                  " S	\ R                  5      rS
\4S jrS\\   S\\\4   S\\   4S jrg)    N)ListDict)TextChartextc                    [        U 5      SU-  :  a  U $ S n[        U[        [        U 5      S-  5      5       HT  nSn[        SU5       H4  nU [        U 5      U-
  U-
  S-
     U [        U 5      U-
  S-
     :w  d  M2  Sn  O   U(       d  MR  UnMV     Uc  U $ X* S  nU nUR                  U5      (       a  US U*  nUR                  U5      (       a  M  U S [        U5       $ )N   Tr      F)lenrangeintendswith)r   min_lenmax_rep_lenrep_lensameilcstext_to_truncates           z/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/surya/recognition/postprocessing.pytruncate_repetitionsr      s   
4y1w; K#c$i!m"45q'"ACI'!+a/0DTQ9J4KK #
 4!K 6 
|}
C 

#
#C
(
(+Mk\: 
#
#C
(
( '#&'((    proposed_tagsreturnc                     / nU  H^  n[         R                  " [        U5      nU(       d  M'  UR                  S5      S:X  d  M>  UR	                  UR                  S5      5        M`     U$ )Nr	   /r   )rematchtag_patterngroupappend)r   tagstag	tag_matchs       r   extract_tagsr$   &   sW    DHH[#.	q!S(IOOA&'  Kr   z<(/?)([a-z]+)([^>]*)>?linec                    [         R                  " SU [         R                  5      nU nU H  nUR                  S5      nUR                  S5      nUR                  S5      n[         R                  " SSU5      n[         R
                  " SU5      (       d  UR                  XW5      nM}  UR                  XT U S35      nM     U$ )	Nz(<math[^>]*>)(.*?)</math>r	   r   r   z<[^>]+> z[\\\_]z</math>)r   finditerDOTALLr   subsearchreplace)r%   matchesresultr   opening_tag
full_matchblock_contentclean_blocks           r   cleanup_mathr3   7   s    kk6biiHGFkk!n[[^
AffZ];yyK00^^J<F^^J-}G0TUF  Mr   
text_charsspecial_tokensc                    S/n/ n[        US   5      [        US   5      -   nU  GH  n[        UR                  5      S::  a  M  [        R                  " [
        UR                  5      nU(       d  MM  UR                  S5      S:H  nUR                  S5      R                  5       nX;  a  M  X;   a  M  UR                  S5      (       a5  UR                  S5      R                  5       R                  S5      (       a  M  U(       a)  U(       a  US   U:X  a  UR                  5         GM  GM  GM	  UR                  U5        GM     U H.  n	U R                  [        S	U	 S
3SSS/SS/SS/SS//SS95        M0     U $ )Nbr
formattingmath_externalr	   r   r      z</>r   F)r   
confidencepolygon
bbox_valid)r$   r
   r   r   r   r   r   lowerstripr   popr    r   )
r4   r5   self_closing_tags	open_tagsformat_tagscharr#   
is_closingtag_namer"   s
             r   fix_unbalanced_tagsrI   J   sh    I~l;<|'@ K tyy>QHH[$))4	__Q'3.
??1%++-&( ??1)//!"4":":"<"E"Ec"J"JYr]h6 7y X&3 6 #a[Q!Q!Q!Q8 		
  r   )   )r   typingr   r   surya.recognition.schemar   strr   r$   compile
IGNORECASEr   r3   listrI    r   r   <module>rR      s    	  -)s )>S	 d3i  jj2BMMBs &/X/04S$Y/	(^/r   