o
    Fg                     @   s   d dl Z d dlmZ d dlmZmZmZmZ d dlm	Z	 ddddd	d
d
dZ
dZddiZdedefddZd#dedefddZdedefddZdedefddZdedefddZd$dedefddZd%d e	defd!d"ZdS )&    N)List)LINE_BREAKSSPACESTABSWHITESPACE_CHARS)Pageffffifflfiflst)u   ﬀu   ﬃu   ﬄu   ﬁu   ﬂu   ﬆu   ﬅz

textreturnc                 C   s:   t  D ]
\}}| ||} qt| } t| } t| } | S N)REPLACEMENTSitemsreplacereplace_special_charsreplace_control_charsreplace_ligatures)r   oldnew r   p/var/www/eduai.edurigo.com/doc_train/edurigo_ai/Puru/venv/lib/python3.10/site-packages/pdftext/postprocessing.pypostprocess_text   s   r   Fc                 C   s   |r
|  td} | S t| dkr	 | S d}d}tt| d D ]0}| | tkr*d}q|rI| | tv r3q| | tv rB| d }d}q|| | 7 }q|| | 7 }q|} | S )Nz-
r    F   Tr   )r   HYPHEN_CHARlenranger   r   rstrip)r   keep_hyphensnew_textfound_hyphenir   r   r   handle_hyphens   s*   r(   c                 C   sF   t D ]}| |d} qtD ]}| |d} qtD ]}| |d} q| S )N r   	)r   r   r   r   )r   itemr   r   r   r   8   s   r   c                 C   s   d dd | D S )Nr   c                 s   s6    | ]}t |d  dks|tks|tv r|V  qdS )r   CN)unicodedatacategoryr    r   ).0charr   r   r   	<genexpr>C   s   4 z(replace_control_chars.<locals>.<genexpr>)join)r   r   r   r   r   B   s   r   c                 C   s"   t  D ]
\}}| ||} q| S r   )	LIGATURESr   r   )r   ligaturereplacementr   r   r   r   F   s   r         ?blocksc           	      C   s|   i }| D ]}t |d d | | }||vrg ||< || | qg }t| D ]\}}t|dd d}|| q*|S )Nbboxr   c                 S   s   | d d S )Nr8   r   r   )xr   r   r   <lambda>Y   s    zsort_blocks.<locals>.<lambda>)key)roundappendsortedr   extend)	r7   	tolerancevertical_groupsblock	group_keysorted_page_blocks_groupsorted_groupr   r   r   sort_blocksL   s   rH   pagec           	      C   s   d}|rt | d | d< | d D ]2}d}|d D ]}d}|d D ]}||d 7 }q t|}| d }||7 }q| d }||7 }qt||d}|S )	Nr   r7   linesspansr   r   z

)r$   )rH   r   r#   r(   )	rI   sorthyphensr   rB   
block_textline	line_textspanr   r   r   
merge_text_   s    

rR   )F)r6   )FF)r-   typingr   pdftext.pdf.utilsr   r   r   r   pdftext.schemar   r3   r    r   strr   r(   r   r   r   rH   rR   r   r   r   r   <module>   s,    		
