o
    1j=                     @   sT  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m	Z	m
Z
 ddlmZmZ edr0d dlZedr>d dlZddlmZ ed	rFd dlZg d
ZG dd de jZG dd deZG dd deZG dd deZG dd deZdd ZG dd deZG dd deZG dd deZG dd deZG dd  d eZ G d!d" d"e Z!edG d#d$ d$e!Z"G d%d& d&e!Z#eddG d'd( d(e Z$G d)d* d*e Z%G d+d, d,e Z&edG d-d. d.e&Z'G d/d0 d0e&Z(G d1d2 d2eZ)G d3d4 d4e Z*G d5d6 d6e*Z+G d7d8 d8e Z,G d9d: d:eZ-G d;d< d<e Z.ed	G d=d> d>e.Z/dS )?    N)ImageImageOps   )class_requires_depsis_dep_availablezopencv-contrib-python	pypdfium2   )pdfium_lock	soundfile)
ReaderTypeImageReaderVideoReader	CSVReader	PDFReader
YAMLReaderAudioReaderc                   @   s4   e Zd Zd ZdZdZdZdZdZdZ	dZ
dZd	Zd
S )r      r      r            	   
   N)__name__
__module____qualname____doc__IMAGE
GENERATIVEZPOINT_CLOUDJSONTSPDFYAMLMARKDOWNTXT r%   r%   c/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddlex/inference/utils/io/readers.pyr   .   s    r   c                       sR   e Zd Zd Z fddZdd ZdddZdd	 Zd
d Zdd Z	dd Z
  ZS )_BaseReaderc                    s8   t    t|dkr|  }|| _|| _|  | _d S )Nr   )super__init__lenget_default_backend_argsbk_typebk_argsget_backend_backendselfbackendr-   	__class__r%   r&   r)   ?   s   
z_BaseReader.__init__c                 C      t zread file from pathNotImplementedErrorr1   in_pathr%   r%   r&   readG      z_BaseReader.readNc                 C   s   |du r| j }| | j|S )zget the backendN)r-   _init_backendr,   r1   r-   r%   r%   r&   r.   K   s   z_BaseReader.get_backendc                 K   s   || _ || _|  | _d S N)r,   r-   r.   r/   r0   r%   r%   r&   set_backendQ   s   z_BaseReader.set_backendc                 C   r5   )init backendr7   r1   r,   r-   r%   r%   r&   r=   V   r<   z_BaseReader._init_backendc                 C   r5   zget typer7   r1   r%   r%   r&   get_typeZ   r<   z_BaseReader.get_typec                 C   s   i S )zget default backend argumentsr%   rD   r%   r%   r&   r+   ^   r<   z$_BaseReader.get_default_backend_argsr?   )r   r   r   r   r)   r;   r.   r@   r=   rE   r+   __classcell__r%   r%   r3   r&   r'   <   s    
r'   c                       sB   e Zd Zd Zd fdd	Zdd Zdd Zdd	 Zd
d Z  Z	S )r   r   c                       t  j|fi | d S r?   r(   r)   r0   r3   r%   r&   r)   f      zPDFReader.__init__c                 c   s    | j |E d H  d S r?   )r/   	read_filer9   r%   r%   r&   r;   i   s   zPDFReader.readc                 C      | j t|S r?   )r/   	load_filestrr9   r%   r%   r&   loadl      zPDFReader.loadc                 C   s   t di |S )Nr%   )PDFReaderBackendrB   r%   r%   r&   r=   o      zPDFReader._init_backendc                 C      t jS r?   )r   r!   rD   r%   r%   r&   rE   r      zPDFReader.get_type)r   )
r   r   r   r   r)   r;   rN   r=   rE   rF   r%   r%   r3   r&   r   c   s    r   c                       :   e Zd Zd Zd
 fdd	Zdd Zdd Zdd	 Z  ZS )r   opencvc                       t  jdd|i| d S Nr2   r%   rH   r0   r3   r%   r&   r)   y      zImageReader.__init__c                 C      | j t|}|S zread the image file from pathr/   rJ   rM   r1   r:   Zarrr%   r%   r&   r;   |      zImageReader.readc                 C   s<   |dkrt di |S |dks|dkrtdi |S td)rA   rU   ZpilZpillowUnsupported backend typeNr%   )OpenCVImageReaderBackendPILImageReaderBackend
ValueErrorrB   r%   r%   r&   r=      s
   zImageReader._init_backendc                 C   rR   rC   )r   r   rD   r%   r%   r&   rE         zImageReader.get_type)rU   	r   r   r   r   r)   r;   r=   rE   rF   r%   r%   r3   r&   r   v   s    	r   c                   @      e Zd Zd Zdd ZdS )_GenerativeReaderc                 C   rR   rC   )r   r   rD   r%   r%   r&   rE      rb   z_GenerativeReader.get_typeN)r   r   r   r   rE   r%   r%   r%   r&   re          re   c                 C   s
   t | tS )is_generative_reader)
isinstancere   )readerr%   r%   r&   rg         
rg   c                       sB   e Zd Zd Z				d fdd	Zdd Zd	d
 Zdd Z  ZS )r   rU   r   NTc                    s2   t  jdd|i| || _|| _|| _d| _d S )Nr2   r   r%   )r(   r)   st_frame_idmax_num_frames
auto_close_fps)r1   r2   rk   rl   rm   r-   r3   r%   r&   r)      s
   
zVideoReader.__init__c                 c   sZ    | j | j | j t|}| jdurt|| j}|E dH  | j	r+| j 
  dS dS )zread vide file from pathN)r/   set_posrk   rJ   rM   rl   	itertoolsisliceZ
num_framesrm   close)r1   r:   genr%   r%   r&   r;      s   

zVideoReader.readc                 C   
   | j  S )zget fps)r/   get_fpsrD   r%   r%   r&   ru      rj   zVideoReader.get_fpsc                 C   s4   |dkrt di |S |dkrtdi |S td)rA   rU   decordr^   Nr%   )OpenCVVideoReaderBackendDecordVideoReaderBackendra   rB   r%   r%   r&   r=      s
   zVideoReader._init_backend)rU   r   NT)	r   r   r   r   r)   r;   ru   r=   rF   r%   r%   r3   r&   r      s    
r   c                       6   e Zd Zd
 fdd	Zdd Zdd Zdd	 Z  ZS )r   PyYAMLc                    rG   r?   rH   r0   r3   r%   r&   r)      rI   zYAMLReader.__init__c                 C   rK   r?   r[   r9   r%   r%   r&   r;      rO   zYAMLReader.readc                 C      |dkrt di |S td)Nrz   r^   r%   )YAMLReaderBackendra   rB   r%   r%   r&   r=         zYAMLReader._init_backendc                 C   rR   r?   )r   r"   rD   r%   r%   r&   rE      rS   zYAMLReader.get_type)rz   r   r   r   r)   r;   r=   rE   rF   r%   r%   r3   r&   r      
    r   c                       ry   )MarkDownReaderMarkdownc                    rG   r?   rH   r0   r3   r%   r&   r)      rI   zMarkDownReader.__init__c                 C   rK   r?   r[   r9   r%   r%   r&   r;      rO   zMarkDownReader.readc                 C   r{   )Nr   r^   r%   )TXTReaderBackendra   rB   r%   r%   r&   r=      r}   zMarkDownReader._init_backendc                 C   rR   r?   )r   r#   rD   r%   r%   r&   rE      rS   zMarkDownReader.get_type)r   r~   r%   r%   r3   r&   r      r   r   c                       rT   )	TXTReadertxtc                    rG   r?   rH   r0   r3   r%   r&   r)      rI   zTXTReader.__init__c                 C   rK   r?   r[   r9   r%   r%   r&   r;      rO   zTXTReader.readc                 C   s   |dkrt di |S d S )Nr   r%   )r   rB   r%   r%   r&   r=      s   zTXTReader._init_backendc                 C   rR   r?   )r   r$   rD   r%   r%   r&   rE      rS   zTXTReader.get_type)r   rc   r%   r%   r3   r&   r      s    r   c                   @   rd   )_BaseReaderBackendc                 C   r5   r6   r7   r9   r%   r%   r&   rJ      r<   z_BaseReaderBackend.read_fileNr   r   r   r   rJ   r%   r%   r%   r&   r      rf   r   c                   @      e Zd Zd ZdS )_ImageReaderBackendNr   r   r   r   r%   r%   r%   r&   r         r   c                       s*   e Zd Zd Zd fdd	Zdd Z  ZS )r_   Nc                    s"   t    |d u rtj}|| _d S r?   )r(   r)   cv2ZIMREAD_COLORflags)r1   r   r3   r%   r&   r)   
  s   

z!OpenCVImageReaderBackend.__init__c                 C   sL   t |d}t| tj}W d   n1 sw   Y  tj|| jdS )#read image file from path by OpenCVrbN)r   )opennpZ
frombufferr;   Zuint8r   Zimdecoder   )r1   r:   fZ	img_arrayr%   r%   r&   rJ     s   z"OpenCVImageReaderBackend.read_filer?   r   r   r   r   r)   rJ   rF   r%   r%   r3   r&   r_     s    r_   c                       (   e Zd Zd Z fddZdd Z  ZS )r`   c                       t    d S r?   rH   rD   r3   r%   r&   r)     rQ   zPILImageReaderBackend.__init__c                 C   s   t t|S )z read image file from path by PIL)r   Zexif_transposer   r   r9   r%   r%   r&   rJ     s   zPILImageReaderBackend.read_filer   r%   r%   r3   r&   r`         r`   c                       s.   e Zd Zd	 fdd	Zdd Zdd Z  ZS )
rP   r          @c                    s   t    || _|| _d S r?   )r(   r)   	_rotation_scale)r1   rotateZzoomr3   r%   r&   r)   %  s   

zPDFReaderBackend.__init__c                 C   s>   t  t|}|  |W  d   S 1 sw   Y  dS )zload pdf fileN)r	   pdfiumPdfDocumentZ
init_forms)r1   r:   docr%   r%   r&   rL   *  s
   
$zPDFReaderBackend.load_filec              	   c   s    t < t|tjr|}n| t|}z|D ]}|j| j| jd	 }|
  |V  qW |
  n|
  w W d    d S 1 sBw   Y  d S )N)scaleZrotation)r	   rh   r   r   rL   rM   renderr   r   Zto_numpyrr   )r1   r:   r   pageimager%   r%   r&   rJ   1  s   "zPDFReaderBackend.read_file)r   r   )r   r   r   r)   rL   rJ   rF   r%   r%   r3   r&   rP   "  s    rP   c                   @   rd   )r   c                 C   s8   t |d}| }W d    |S 1 sw   Y  |S )Nr)r   r;   )r1   r:   r   datar%   r%   r&   rJ   C  s   

zTXTReaderBackend.read_fileNr   r%   r%   r%   r&   r   @  rf   r   c                   @   s    e Zd Zd Zdd Zdd ZdS )_VideoReaderBackendc                 C   r5   )zset posr7   r1   posr%   r%   r&   ro   L  r<   z_VideoReaderBackend.set_posc                 C   r5   )zclose ior7   rD   r%   r%   r&   rr   P  r<   z_VideoReaderBackend.closeN)r   r   r   r   ro   rr   r%   r%   r%   r&   r   I  s    r   c                       s`   e Zd Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Z  ZS )rw   c                    s4   t    || _|dd | _d | _d| _d | _d S )Nnum_segr   )r(   r)   cap_init_argsgetr   _cap_pos_max_num_framesr>   r3   r%   r&   r)   Y  s   

z!OpenCVVideoReaderBackend.__init__c                 C   s   | j tjS r?   )r   r   r   ZCAP_PROP_FPSrD   r%   r%   r&   ru   a  rQ   z OpenCVVideoReaderBackend.get_fpsc                 C   s<   | j dur	|   | || _ | jdur|   | | j S )read video file from pathN)r   _cap_release	_cap_openr   _cap_set_pos_read_framesr9   r%   r%   r&   rJ   d  s   

z"OpenCVVideoReaderBackend.read_filec                 c   s    | j r6g }	 | \}}|sn%g }t|dkr%t| j D ]}|| q|| |d | V  qn	 | \}}|s@n|V  q7|   dS )zread framesTr   N)r   r;   r*   rangeappendpopcopyr   )r1   capqueueretframeir%   r%   r&   r   m  s.   


z%OpenCVVideoReaderBackend._read_framesc                 C   s^   | j dd  | j dd  | j dd  tj|fi | j | _| j s,td| | jS )Nr   seg_lensample_typezFailed to open )r   r   r   ZVideoCapturer   ZisOpenedRuntimeError)r1   Z
video_pathr%   r%   r&   r     s   
z"OpenCVVideoReaderBackend._cap_openc                 C   s   | j   d S r?   )r   releaserD   r%   r%   r&   r     rQ   z%OpenCVVideoReaderBackend._cap_releasec                 C   s   | j tj| j d S r?   )r   setr   ZCAP_PROP_POS_FRAMESr   rD   r%   r%   r&   r     s   z%OpenCVVideoReaderBackend._cap_set_posc                 C   
   || _ d S r?   r   r   r%   r%   r&   ro        
z OpenCVVideoReaderBackend.set_posc                 C   s    | j d ur|   d | _ d S d S r?   )r   r   rD   r%   r%   r&   rr     s   

zOpenCVVideoReaderBackend.close)r   r   r   r   r)   ru   rJ   r   r   r   r   ro   rr   rF   r%   r%   r3   r&   rw   U  s    		rw   c                       sH   e Zd Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Z	  Z
S )rx   c                    s   t    || _d | _d| _d | _|dd| _|dd| _|dd| _	d| _
d| _z
dd l}|| _W d S  t yB   tdw )	Nr   r   r   r   r   r   TzPlease install `decord` manually, otherwise, the related model cannot work. It can be automatically installed only on `x86_64`. Refers: `https://github.com/dmlc/decord`.)r(   r)   r   r   r   r   r   r   r   r   
valid_modern   rv   decord_moduleModuleNotFoundError	Exception)r1   r-   rv   r3   r%   r&   r)     s$   
z!DecordVideoReaderBackend.__init__c                 C   r   r?   r   r   r%   r%   r&   ro     r   z DecordVideoReaderBackend.set_posc                 C   s  g }t || j }t| jD ]]}d}| js8|| jkr*td|| j }||| 7 }n-|dkr5||| 7 }n"|}n|| jkrJ|d d }||| 7 }n|dkrU||| 7 }n|}t||| j D ]}|t ||  q_q||}|	 }	g }
t|	j
d D ]}|	| }|
| q~|
S )Nr   r   r   )intr   r   r   r   randomrandintr   Z	get_batchZasnumpyshape)r1   Z
frames_lenZvideo_objectZ
frames_idxZaverage_durr   idxZjjZframes_selectZ	np_framesZimgsZimgbufr%   r%   r&   sample  s6   


zDecordVideoReaderBackend.samplec                 C   rt   r?   )r   Zget_avg_fpsrD   r%   r%   r&   ru     r   z DecordVideoReaderBackend.get_fpsc                 C   s:   | j || _t| j}| jdkr| || j}|S | jS )r   uniform)r   r   r   r*   r   r   )r1   r:   Z	frame_lenZsample_videor%   r%   r&   rJ     s   

z"DecordVideoReaderBackend.read_filec                 C   s   d S r?   r%   rD   r%   r%   r&   rr     s   zDecordVideoReaderBackend.close)r   r   r   r   r)   ro   r   ru   rJ   rr   rF   r%   r%   r3   r&   rx     s     
rx   c                       rT   )r   pandasc                    rV   rW   rH   r0   r3   r%   r&   r)     rX   zCSVReader.__init__c                 C   rY   rZ   r[   r\   r%   r%   r&   r;     r]   zCSVReader.readc                 C      |dkrt di |S td)rA   r   r^   Nr%   )PandasCSVReaderBackendra   rB   r%   r%   r&   r=        zCSVReader._init_backendc                 C   rR   rC   )r   r    rD   r%   r%   r&   rE     rb   zCSVReader.get_type)r   rc   r%   r%   r3   r&   r     s    r   c                   @   r   )_CSVReaderBackendNr   r%   r%   r%   r&   r     r   r   c                       r   )r   c                    r   r?   rH   rD   r3   r%   r&   r)   	  rQ   zPandasCSVReaderBackend.__init__c                 C   s
   t |S )r   )pdZread_csvr9   r%   r%   r&   rJ     rj   z PandasCSVReaderBackend.read_filer   r%   r%   r3   r&   r     r   r   c                   @   s   e Zd Zdd ZdS )r|   c                 K   sL   t |dfddi|}tj|tjd}W d    |S 1 sw   Y  |S )Nr   encodingzutf-8)Loader)r   yamlrN   Z
FullLoader)r1   r:   kwargsZ	yaml_filer   r%   r%   r&   rJ     s   
zYAMLReaderBackend.read_fileN)r   r   r   rJ   r%   r%   r%   r&   r|     s    r|   c                       s.   e Zd Zd fdd	Zdd Zdd Z  ZS )	r   wavc                    s   t  jdddi| d S )Nr2   r   r%   rH   r0   r3   r%   r&   r)     rX   zAudioReader.__init__c                 C   r   )rA   r   r^   Nr%   )WAVReaderBackendra   rB   r%   r%   r&   r=     r   zAudioReader._init_backendc                 C   s   | j t|\}}||fS r?   r[   r1   r:   ZaudioZaudio_sample_rater%   r%   r&   r;   $  s   zAudioReader.read)r   )r   r   r   r)   r=   r;   rF   r%   r%   r3   r&   r     s    r   c                   @   r   )_AudioReaderBackendNr   r%   r%   r%   r&   r   )  r   r   c                       s(   e Zd ZdZ fddZdd Z  ZS )r   r   c                    r   r?   rH   rD   r3   r%   r&   r)   1  rQ   zWAVReaderBackend.__init__c                 C   s   t j|ddd\}}||fS )zread wav file from pathZfloat32T)ZdtypeZ	always_2d)r
   r;   r   r%   r%   r&   rJ   4  s   
zWAVReaderBackend.read_filer   r%   r%   r3   r&   r   -  s    r   )0enumrp   r   numpyr   r   r   r   ZPILr   r   Z
utils.depsr   r   r   r   r   r	   r
   __all__Enumr   objectr'   r   r   re   rg   r   r   r   r   r   r   r_   r`   rP   r   r   rw   rx   r   r   r   r|   r   r   r   r%   r%   r%   r&   <module>   s\   ')	HM