o
    'j                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZ	d dl
Z
d dlZdddZdd Zdd Zdd	 Zd
d ZdddZdd Zdd ZdddZdd ZG dd dZdS )    Nc                 C   s   t |  D ]X\}}t|tr%|d|d t| t|||d  qt|trRt	|dkrRt|d trR|d|d t| |D ]
}t|||d  qFq|d|d || qdS )z`
    Recursively visualize a dict and
    indenting acrrording by the relationship of keys.
    z{}{} :        r   z	{}{} : {}N)
sorteditems
isinstancedictinfoformatstr
print_dictlistlen)dlogger	delimiterkvvalue r   ^/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddleocr/ppocr/utils/utility.pyr      s   
$r   c                 C   s6   g d}| dkr|ddg }|S | dkr|dg }|S )N)Zuse_gpuZmax_text_lengthimage_shaper   Zcharacter_typeZ	loss_typeZ
train_evalZtrain_batch_size_per_cardZtest_batch_size_per_cardtestr   )modeZcheck_paramsr   r   r   get_check_global_params,   s   
r   c                    s   h d}t  fdd|D S )N>	   pdfgifZtiffZpngrgbZjpegZtifZbmpZjpgc                    s   g | ]	}   |qS r   )lowerendswith).0epathr   r   
<listcomp>9       z%_check_image_file.<locals>.<listcomp>)any)r#   Zimg_endr   r"   r   _check_image_file7   s   r'   c                 C   s   g }| d u st j| std| t j| r#t| r#||  n$t j| rGt 	| D ]}t j
| |}t j|rFt|rF|| q.t|dkrTtd| t|}|S )Nznot found any img file in {}r   )osr#   exists	Exceptionr
   isfiler'   appendisdirlistdirjoinr   r   )Zimg_fileZ
imgs_listsZsingle_file	file_pathr   r   r   get_image_file_list<   s   
r1   c                 C   sX   t | jdkr*| jd dkr*t| tj}t|ddtjtj \}}t|tj} | S )N      r      )	r   shapecv2cvtColorZCOLOR_BGR2GRAY	thresholdZTHRESH_BINARYZTHRESH_OTSUZCOLOR_GRAY2BGR)imggray_r   r   r   binarize_imgM   s
   r<   r4   r4   r4   c                 C   s   t | jdkrS| jd dkrSt| \}}}}|d }|d d|  ||  tj}|d d|  ||  tj}|d d|  ||  tj}t|||f} | S )Nr2   r3   r   r4   r   r   )r   r5   r6   splitZastypenpZuint8merge)r9   Zalpha_colorBGRAalphar   r   r   alpha_to_colorU   s      rF   c                 C   s  t j| dd   dkrOt| }| \}}|s'td}|	d dS t
|jdks5|jd dkr<t|tj}|d d d d d d df }|d	d
fS t j| dd   dkrddlm} |d}ddlm} g }	|| W}
td|
jD ]C}|
| }|dd}|j|d
d}|jdks|jdkr|j|ddd
d}|d|j|jg|j}tt|tj}|	| q{|	d
d	fW  d    S 1 sw   Y  dS )Nr   Zppocrz/Cannot read {}. This gif image maybe corrupted.)NFr3   r   TFr   r   )
try_importfitz)Image)matrixrE   i  RGB)NFF)r(   r#   basenamer   r6   ZVideoCapturereadlogging	getLoggerr	   r   r5   r7   ZCOLOR_GRAY2RGBZpaddle.utilsrI   ZPILrK   openrangeZ
page_countZMatrixZ
get_pixmapwidthheight	frombytesZsamplesr?   arrayZCOLOR_RGB2BGRr,   )Zimg_pathr   retframer   ZimgvaluerI   rJ   rK   Zimgsr   ZpgpageZmatpmr9   r   r   r   check_and_reada   s:   



 r\   c                 C   s   t | ddd}| }W d    n1 sw   Y  dd |D }dg}|D ]}| dv r0q'|| q'dg}|dd  D ]}|d	|  |d
|  q?dd t|D }dd t|D }||fS )Nrzutf-8)encodingc                 S   s   g | ]}|  qS r   )strip)r    liner   r   r   r$      s    z+load_vqa_bio_label_maps.<locals>.<listcomp>O)OTHERZOTHERSZIGNOREr   zB-zI-c                 S   s   i | ]	\}}|  |qS r   upperr    idxlabelr   r   r   
<dictcomp>   r%   z+load_vqa_bio_label_maps.<locals>.<dictcomp>c                 S   s   i | ]	\}}||  qS r   rc   re   r   r   r   rh      r%   )rR   	readlinesrd   r,   	enumerate)Zlabel_map_pathZfinlinesZ	old_linesr`   labelsZlabel2id_mapZid2label_mapr   r   r   load_vqa_bio_label_maps   s    
rm      c                 C   s$   t |  tj |  t|  d S N)randomseedr?   paddle)rq   r   r   r   set_seed   s   
rs   c              
   C   s   t j| }|d u rNtd|  d td|  d| d tj}ztj|ddd|gtjd	 td
|  d W d S  tj	yM } zt
d|  dd }~ww t|  d d S )NzWarnning! The z module is NOT installedzTry install zK module automatically. You can also try to install manually by pip install .z-mpipinstall)stdoutzThe z module is now installedzInstall z  failed, please install manuallyz has been installed.)	importlibutil	find_specprintsys
executable
subprocess
check_callDEVNULLCalledProcessErrorr*   )module_nameZinstall_namespecpythonexcr   r   r   check_install   s(   
r   c                   @   s&   e Zd Zdd Zdd Zd	ddZdS )
AverageMeterc                 C   s   |    d S ro   )resetselfr   r   r   __init__   s   zAverageMeter.__init__c                 C   s   d| _ d| _d| _d| _dS )r   r   N)valavgsumcountr   r   r   r   r      s   
zAverageMeter.resetr   c                 C   s8   || _ |  j|| 7  _|  j|7  _| j| j | _dS )updateN)r   r   r   r   )r   r   nr   r   r   r      s   zAverageMeter.updateN)r   )__name__
__module____qualname__r   r   r   r   r   r   r   r      s    r   )r   )r=   )rn   )rP   r(   Zimghdrr6   rp   numpyr?   rr   importlib.utilrx   r|   r~   r   r   r'   r1   r<   rF   r\   rm   rs   r   r   r   r   r   r   <module>   s*   

#
