o
    e                     @   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 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   MD:\Projects\ConvertPro\env\Lib\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>	   pngjpeggiftiffpdfbmptifrgbjpgc                    s   g | ]	}   |qS r   )lowerendswith).0epathr   r   
<listcomp>9       z%_check_image_file.<locals>.<listcomp>)any)r)   img_endr   r(   r   _check_image_file7   s   r.   c                 C   s   g }| d u st j| std| h d}t j| r't| r'||  n$t j| rKt 	| D ]}t j
| |}t j|rJt|rJ|| q2t|dkrXtd| t|}|S )Nznot found any img file in {}>	   r   r   r   r   r   r    r!   r"   r#   r   )osr)   exists	Exceptionr
   isfiler.   appendisdirlistdirjoinr   r   )Zimg_fileZ
imgs_listsr-   Zsingle_file	file_pathr   r   r   get_image_file_list<   s    
r8   c                 C   s  t j| dd  dv rMt| }| \}}|s%td}|d dS t	|j
dks3|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v rdd l}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}|| qq|d
d	fW  d    S 1 sw   Y  dS )N)r   ZGIFZppocrz/Cannot read {}. This gif image maybe corrupted.)NF   r   TF)r   r   )Image)matrixalphai  RGB)NFF)r/   r)   basenamecv2ZVideoCapturereadlogging	getLoggerr	   r   shapeZcvtColorZCOLOR_GRAY2RGBfitzZPILr<   openrangeZ	pageCountZMatrixZ	getPixmapwidthheight	frombytesZsamplesnparrayZCOLOR_RGB2BGRr3   )Zimg_pathr   retframer   ZimgvaluerF   r<   Zimgsr   ZpgpagematpmZimgr   r   r   check_and_readO   s8   



 rS   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   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   rZ   r\   r   r   r   r_      r+   )rG   	readlinesr[   r3   	enumerate)Zlabel_map_pathZfinlinesZ	old_linesrW   labelsZlabel2id_mapZid2label_mapr   r   r   load_vqa_bio_label_mapsp   s    
rd      c                 C   s$   t |  tj |  t|  d S N)randomseedrL   paddle)rh   r   r   r   set_seed   s   
rj   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CalledProcessErrorr1   )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 rf   )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   )re   )rC   r/   ZimghdrrA   rg   numpyrL   ri   importlib.utilro   rs   ru   r   r   r.   r8   rS   rd   rj   r}   r~   r   r   r   r   <module>   s&   
!
