U
    ~c                     @   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 ]\}}t|trJ|d|d t| t|||d  qt|trt	|dkrt|d tr|d|d t| |D ]}t|||d  qq|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   W   /Users/zhoujun20/Desktop/工作相关/一致性/训练/PaddleOCR/ppocr/utils/utility.pyr      s    
$r   c                 C   s<   ddddddg}| dkr&|ddg }n| d	kr8|dg }|S )
Nuse_gpumax_text_lengthimage_shapeZ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,   ddddddddd	h	}t  fd
d|D S )Njpgbmppngjpegrgbtiftiffgifpdfc                    s   g | ]}   |qS r   )lowerendswith).0epathr   r   
<listcomp>9   s     z%_check_image_file.<locals>.<listcomp>)any)r+   img_endr   r*   r   _check_image_file7   s    r/   c              	   C   s   g }| d kst j| s&td| dddddddd	d
h	}t j| r\t| r\||  nHt j| rt 	| D ]0}t j
| |}t j|rrt|rr|| qrt|dkrt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    r9   c              
   C   s  t j| dd  dkrt| }| \}}|sJtd}|d dS t	|j
dksf|j
d dkrtt|tj}|d d d d d d df }|d	d
fS t j| dd  dkrdd l}ddlm} g }|| }	td|	jD ]}
|	|
 }|dd}|j|d
d}|jdks"|jdkr8|j|ddd
d}|d|j|jg|j}tt|tj}|| q|d
d	fW  5 Q R  S Q R X dS )N)r$   ZGIFppocrz/Cannot read {}. This gif image maybe corrupted.)NF   r   TF)r%   r   )Image)matrixalphai  RGB)NFF)r0   r+   basenamecv2VideoCapturereadlogging	getLoggerr	   r   shapecvtColorCOLOR_GRAY2RGBfitzPILr>   openrangeZ	pageCountZMatrixZ	getPixmapwidthheight	frombytessamplesnparrayCOLOR_RGB2BGRr4   )img_pathr$   retframer   ZimgvaluerK   r>   imgsr%   pgpagematpmimgr   r   r   check_and_readO   s6    



r_   c              	   C   s   t | ddd}| }W 5 Q R X dd |D }dg}|D ]}| dkrLq:|| q:dg}|dd  D ] }|d	|  |d
|  qjd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OTHERSIGNOREr   zB-zI-c                 S   s   i | ]\}}|  |qS r   upperr(   idxlabelr   r   r   
<dictcomp>~   s      z+load_vqa_bio_label_maps.<locals>.<dictcomp>c                 S   s   i | ]\}}||  qS r   rg   ri   r   r   r   rl      s      )rM   	readlinesrh   r4   	enumerate)Zlabel_map_pathfinlinesZ	old_linesrc   labelsZlabel2id_mapZid2label_mapr   r   r   load_vqa_bio_label_mapsp   s    rr      c                 C   s$   t |  tj |  t|  d S N)randomseedrS   paddle)rv   r   r   r   set_seed   s    
rx   c              
   C   s   t j| }|d krtd|  d td|  d| d tj}z.tj|ddd|gtjd	 td
|  d W q tj	k
r } zt
d|  dW 5 d }~X Y qX n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-mZ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CalledProcessErrorr2   )module_name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 rt   )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   )rs   )rF   r0   ZimghdrrC   ru   numpyrS   rw   importlib.utilr|   r   r   r   r   r/   r9   r_   rr   rx   r   r   r   r   r   r   <module>   s$   
!
