o
    'Õj  ã                   @   sŽ   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d d	lmZ d d
lmZ eƒ Zdd„ Zdd„ ZdS )é    N)Údeepcopy)ÚDocument)Úshared)ÚWD_ALIGN_PARAGRAPH)Ú
WD_SECTION)Úqn)ÚWD_TABLE_ALIGNMENT)Ú
HtmlToDocx)Ú
get_loggerc                 C   sj  t ƒ }d|jd j_|jd jjj tdƒd¡ t	 
d¡|jd j_d}t|ƒD ]ó\}}t|d ƒdkr5q(|d	 }|d
krZ|d dkrZ| tj¡}	|	j d¡d  tdƒd¡ d}n |dkrz|d dkrz| tj¡}	|	j d¡d  tdƒd¡ d
}|d  ¡ dkrÁtj ||¡}
tj |
d |d |¡¡}| ¡ }tj|_| d¡}|dkr²|j|t	 d¡d q(|d
krÀ|j|t	 d
¡d q(|d  ¡ dkrÕ| |d d d ¡ q(|d  ¡ dkrît ƒ }d|_!| "|d d |¡ q(| ¡ }|j#}t|d ƒD ]\}}|dkr
t	 d¡|_$| |d d ¡}t	 
d ¡|j_qûq(tj |d! |¡¡}| %|¡ t& 'd" |¡¡ d S )#NzTimes New RomanZNormalz
w:eastAsiau   å®‹ä½“g      @é   Úresr   Úimg_idxé   ÚlayoutÚsinglez./w:colszw:numÚ1ÚdoubleÚ2ÚtypeZfigurez	{}_{}.jpgÚbboxÚ é   )ÚwidthÚtitleÚtextÚtableZ	TableGridÚhtmlg      Ð?ú é
   z{}_ocr.docxzdocx save to {})(r   ÚstylesZfontÚnameZ_elementZrPrZrFontsÚsetr   r   ZPtÚsizeÚ	enumerateÚlenÚadd_sectionr   Z
CONTINUOUSZ_sectPrZxpathÚlowerÚosÚpathÚjoinÚformatZadd_paragraphr   ZCENTERÚ	alignmentZadd_runZadd_pictureZInchesZadd_headingr	   Útable_styleZhandle_tableÚparagraph_formatZfirst_line_indentÚsaveÚloggerÚinfo)Zimgr   Zsave_folderZimg_nameÚdocÚflagÚiÚregionr   ÚsectionZexcel_save_folderZimg_pathZparagraph_picÚrunÚparserZ	paragraphr-   ÚlineZtext_runZ	docx_path© r9   úo/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddleocr/ppstructure/recovery/recovery_to_doc.pyÚconvert_info_docx   s^   ÿ
€
ü
r;   c           	      C   s~  t | ƒ}|dkrd| d d< | S t| dd„ d}t|ƒ}g }g }g }d}	 ||kr+n||d kr¹|| d	 d ||d  d	 d
 krq|| d	 d |d k rq|| d	 d |d krq||7 }||7 }d|| d< | || ¡ nC|| d	 d |d kr“d|| d< | || ¡ ||7 }||7 }n!|| d	 d |d k r´d|| d< | || ¡ ||7 }||7 }g }g }nv|| d	 d |d k rå|| d	 d d
| d k råd|| d< | || ¡ |d7 }nI|| d	 d |d kr|| d	 d |d krd|| d< | || ¡ |d7 }n||7 }||7 }d|| d< | || ¡ g }g }|d7 }q%|r6||7 }|r=||7 }|S )z
    Sort text boxes in order from top to bottom, left to right
    args:
        res(list):ppstructure results
    return:
        sorted results(list)
    r   r   r   r   c                 S   s   | d d | d d fS )Nr   r   r   r9   )Úxr9   r9   r:   Ú<lambda>`   s    z%sorted_layout_boxes.<locals>.<lambda>)ÚkeyTr   é   r   r   é   )r$   ÚsortedÚlistÚappend)	r   ÚwZ	num_boxesZsorted_boxesZ_boxesZnew_resZres_leftZ	res_rightr3   r9   r9   r:   Úsorted_layout_boxesS   sx   *ÿÿÿ
4
4
Ù(rE   )r'   Úcopyr   Zdocxr   r   Zdocx.enum.textr   Zdocx.enum.sectionr   Zdocx.oxml.nsr   Zdocx.enum.tabler   Z"ppstructure.recovery.table_processr	   Zppocr.utils.loggingr
   r/   r;   rE   r9   r9   r9   r:   Ú<module>   s   4