o
    'j2                  	   @   s  d dl Z d dlZd dlZe je jeZeje ej	d e je j
ed de jd< d dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ d dl m!Z!m"Z" d dl#m$Z$m%Z% e Z&G dd de'Z(dddZ)dd Z*e+dkre$ Z,e,j-rg Z.e,j/Z/e0e/D ]#Z1ej2dgej3 d4e1d4dg Z5ej6e5ej7ej7dZ8e.e8 qe.D ]Z8e89  qdS e*e, dS dS )    Nz../Zauto_growthZFLAGS_allocator_strategy)deepcopy)get_image_file_listcheck_and_read)
get_logger)draw_ser_resultsdraw_re_results)
TextSystem)LayoutPredictor)TableSystemto_excel)
parse_argsdraw_structure_resultc                   @   s   e Zd Zdd ZdddZdS )	StructureSystemc                 C   s  |j | _ |j| _d | _|jrdd l}|jdd| _| j dkrs|js'tt	j
 |jdkr9|jdkr9d|_td d|_d | _d | _d | _|jrUt|| _|jrUt|| _|jrq| jd urjt|| jj| jj| _d S t|| _d S d S | j dkrdd	lm} ||| _d S d S )
Nr   Ztext_image_orientation)Z
model_name	structureFTzAWhen args.layout is false, args.ocr is automatically set to falsekie)SerRePredictor)moderecoveryimage_orientation_predictorimage_orientation
paddleclasZ
PaddleClasZshow_logloggersetLevelloggingINFOlayoutZocrwarningZ
drop_scorelayout_predictortext_systemtable_systemr	   r   tabler
   Ztext_detectorZtext_recognizerZ(ppstructure.kie.predict_kie_token_ser_rer   kie_predictor)selfargsr   r    r$   e/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddleocr/ppstructure/predict_system.py__init__+   sH   





zStructureSystem.__init__Fr   c           &   	   C   sr  ddddddddd}t   }| jd urJt   }| jj|d}t|}|d d d }	tjtjtjd}
|	|
v r@t||
|	 }t   }|| |d< | j	dkr|
 }| jd uri| |\}}|d  |7  < n|jd d	 \}}td d
dg}g }|D ]}d}|d d ur|d \}}}}t|t|t|t|f\}}}}|||||d d f }ndd||f\}}}}|}|d d
kr| jd ur| ||\}}|d
  |d
 7  < |d  |d 7  < |d  |d 7  < |d  |d 7  < n| jd urz| jr!tj|j|jd}||||||d d f< | |\}}}n| |\}}}|d  |d 7  < |d  |d 7  < g d}g }t||D ]1\}} | \}!}"|D ]}#|#|!v r_|!|#d}!qR| jsk|||g7 }||!t|"| d qH||d  ||||g|||d q}t   }$|$| |d< ||fS | j	dkr| |\}%}||d< ||d< |%d |fS dS )Nr   )r   r   r    table_matchdetrecr   all)Z
input_dataZlabel_names)Z90Z180Z270r   r   r      r    )bboxlabel r,   r-   r'   matchr(   r)   )dtype)<strike>r1   z<sup>z</sub>z<b>z</b>z<sub>z</sup>z
<overline>z</overline>z<underline>z</underline>z<i>z</i>)textZ
confidenceZtext_region)typer,   imgresimg_idxr*   r   )NN)timer   Zpredictnextcv2ZROTATE_90_COUNTERCLOCKWISEZ
ROTATE_180ZROTATE_90_CLOCKWISErotater   copyr   shapedictintr   r   r   npZonesr0   zipreplaceappendfloattolistlowerr!   )&r"   r4   Zreturn_ocr_result_in_tabler6   	time_dictstartZticZ
cls_resultZcls_resZangleZcv_rotate_codeZtocZori_imZ
layout_resZelapsehwZres_listregionr5   x1y1Zx2y2roi_imgZtable_time_dictZwht_imZfilter_boxesZfilter_rec_resZocr_time_dictZstyle_tokenboxZrec_resZrec_strZrec_conftokenendZre_resr$   r$   r%   __call__R   s   



$





zStructureSystem.__call__N)Fr   )__name__
__module____qualname__r&   rR   r$   r$   r$   r%   r   *   s    'r   c              	   C   s"  t j||}t j|dd t| }tt j|d|dddf}|D ]Z}|d}|dt	
| |d	  d
krct|d dkrcd|d v rct j|d|d |}	t|d d |	 q$|d	  dkr~t j|d|d |}
t|
| q$W d    d S 1 sw   Y  d S )NTexist_okz
res_{}.txtrI   utf8encodingr4   z{}
r3   r    r5   r   htmlz
{}_{}.xlsxr,   Zfigurez	{}_{}.jpg)ospathjoinmakedirsr   openformatpopwritejsondumpsrE   lenr   r9   imwrite)r5   save_folderimg_namer6   Zexcel_save_folderZres_cpfrJ   rN   Z
excel_pathZimg_pathr$   r$   r%   save_structure_res   s@   
"rk   c                 C   sL  t | j}|}|| jd | j }| js't| }tj| j	|j
}tj|dd t|}t|D ]s\}}td||| t|\}}}	tj|dd }
| jr| jr|	rddlm} tj| j	dd tj| j	d|
}||}|| |  td| q/|s|	st|}|	s|d u rtd	| q/|g}n|}g }t|D ]\}}|||d
\}}tj||
d|}tjtj||
dd |j
dkr|g krt||| j}t|||
| nP|j
dkr6|jj d urt!||| jd}nt"||| jd}t#tj||
d|ddd}d|t$j%d|idd}|&| W d    n	1 s1w   Y  |g krIt'|| td| | jri|g kriddl(m)}m*} |j+\}}}|||}||7 }q| jr|g krz	|||||
 W n t,y } ztd|| W Y d }~q/d }~ww td|d  q/d S )NTrV   z
[{}/{}] {}.r   )	Converterz{}_api.docxzdocx save to {}zerror in loading image:{})r6   zshow_{}.jpgr   r   )Z	font_pathzres_{}_kie.txtrI   rX   rY   z{}	{}
Zocr_infoF)ensure_asciizresult save to {})sorted_layout_boxesconvert_info_docxz.error in layout recovery image:{}, err msg: {}zPredict time : {:.3f}sr*   )-r   Z	image_dir
process_idtotal_process_numZuse_pdf2docx_apir   r\   r]   r^   outputr   r_   rf   	enumerater   infora   r   basenamesplitr   Zpdf2docx.converterrm   convertcloser9   Zimreaderrorr   Zvis_font_pathrk   r!   Z	predictorr   r   r`   rd   re   rc   rg   Z$ppstructure.recovery.recovery_to_docro   rp   r<   	Exception)r#   Zimage_file_listZstructure_sysrh   Zimg_numiZ
image_filer4   Zflag_gifZflag_pdfri   rm   Z	docx_fileZcvZimgsZall_resindexr5   rF   Zimg_save_pathZdraw_imgrj   res_strro   rp   rH   rI   _exr$   r$   r%   main   s   







r   __main__z-uz--process_id={}z--use_mp={}F)stdoutstderr)r   ):r\   sys
subprocessr]   dirnameabspath__file____dir__rB   insertr^   environr9   rd   numpyr?   r7   r   r;   r   Zppocr.utils.utilityr   r   Zppocr.utils.loggingr   Zppocr.utils.visualr   r   Ztools.infer.predict_systemr   Z!ppstructure.layout.predict_layoutr	   Zppstructure.table.predict_tabler
   r   Zppstructure.utilityr   r   r   objectr   rk   r   rS   r#   Zuse_mpZp_listrr   rangerq   
executableargvra   cmdPopenr   pwaitr$   r$   r$   r%   <module>   sT    
 
V
