
    9i<                     \   S SK r S SKrS SKrS SKrS SKrS SKrS SKJ	r	J
r
  SSKJrJr  \" S5      (       a  S SKr\" S5      (       a  S SKr\" S5      (       a  S SKr/ SQr " S	 S
\ R&                  5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rS r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r \" S5       " S  S!\ 5      5       r! " S" S#\ 5      r"\" SS5       " S$ S%\5      5       r# " S& S'\5      r$ " S( S)\5      r%\" S5       " S* S+\%5      5       r& " S, S-\%5      r' " S. S/\5      r( " S0 S1\5      r) " S2 S3\)5      r* " S4 S5\5      r+ " S6 S7\5      r, " S8 S9\5      r-\" S5       " S: S;\-5      5       r.g)<    N)ImageImageOps   )class_requires_depsis_dep_availablezopencv-contrib-python	pypdfium2	soundfile)
ReaderTypeImageReaderVideoReader	CSVReader	PDFReader
YAMLReaderAudioReaderc                   <    \ rS rSrS rSrSrSrSrSr	Sr
SrS	rS
rSrg)r
   -            r            	   
    N)__name__
__module____qualname____firstlineno____doc__IMAGE
GENERATIVEPOINT_CLOUDJSONTSPDFYAMLMARKDOWNTXT__static_attributes__r       b/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/paddlex/inference/utils/io/readers.pyr
   r
   -   s2    EJKD	
B
CDH
Cr+   r
   c                   T   ^  \ rS rSrS rU 4S jrS rS
S jrS rS r	S r
S rS	rU =r$ )_BaseReader;   c                    > [         TU ]  5         [        U5      S:X  a  U R                  5       nXl        X l        U R                  5       U l        g )Nr   )super__init__lenget_default_backend_argsbk_typebk_argsget_backend_backendselfbackendr6   	__class__s      r,   r2   _BaseReader.__init__>   sB    w<1335G((*r+   c                     [         ezread file from pathNotImplementedErrorr:   in_paths     r,   read_BaseReader.readF       !!r+   c                 X    Uc  U R                   nU R                  U R                  U5      $ )zget the backend)r6   _init_backendr5   )r:   r6   s     r,   r7   _BaseReader.get_backendJ   s'    ?llG!!$,,88r+   c                 F    Xl         X l        U R                  5       U l        g N)r5   r6   r7   r8   )r:   r;   r6   s      r,   set_backend_BaseReader.set_backendP   s    ((*r+   c                     [         e)init backendr@   r:   r5   r6   s      r,   rH   _BaseReader._init_backendU   rF   r+   c                     [         ezget typer@   r:   s    r,   get_type_BaseReader.get_typeY   rF   r+   c                     0 $ )zget default backend argumentsr   rT   s    r,   r4   $_BaseReader.get_default_backend_args]   s    	r+   )r8   r6   r5   rK   )r   r   r   r   r    r2   rD   r7   rL   rH   rU   r4   r*   __classcell__r<   s   @r,   r.   r.   ;   s.    +"9+
"" r+   r.   c                   H   ^  \ rS rSrS rSU 4S jjrS rS rS rS r	Sr
U =r$ )	r   b   c                 (   > [         TU ]  " U40 UD6  g rK   r1   r2   r9   s      r,   r2   PDFReader.__init__e       ,G,r+   c              #   V   #    U R                   R                  U5       S h  vN   g  N7frK   )r8   	read_filerB   s     r,   rD   PDFReader.readh   s     ==**7333s   )')c                 J    U R                   R                  [        U5      5      $ rK   )r8   	load_filestrrB   s     r,   loadPDFReader.loadk       }}&&s7|44r+   c                     [        S0 UD6$ )Nr   )PDFReaderBackendrP   s      r,   rH   PDFReader._init_backendn   s    *'**r+   c                 "    [         R                  $ rK   )r
   r&   rT   s    r,   rU   PDFReader.get_typeq       ~~r+   r   )r   )r   r   r   r   r    r2   rD   rg   rH   rU   r*   rY   rZ   s   @r,   r   r   b   s$    -45+ r+   r   c                   B   ^  \ rS rSrS rSU 4S jjrS rS rS rSr	U =r
$ )r   u   c                 *   > [         TU ]  " SSU0UD6  g Nr;   r   r^   r9   s      r,   r2   ImageReader.__init__x       44G4r+   c                 N    U R                   R                  [        U5      5      nU$ zread the image file from pathr8   rb   rf   r:   rC   arrs      r,   rD   ImageReader.read{       mm%%c'l3
r+   c                 h    US:X  a  [        S0 UD6$ US:X  d  US:X  a  [        S0 UD6$ [        S5      e)rO   opencvpilpillowUnsupported backend typer   )OpenCVImageReaderBackendPILImageReaderBackend
ValueErrorrP   s      r,   rH   ImageReader._init_backend   sA    h+6g66H!4(3733788r+   c                 "    [         R                  $ rS   )r
   r!   rT   s    r,   rU   ImageReader.get_type   s    r+   r   )r~   r   r   r   r   r    r2   rD   rH   rU   r*   rY   rZ   s   @r,   r   r   u   s    5
9   r+   r   c                       \ rS rSrS rS rSrg)_GenerativeReader   c                 "    [         R                  $ rS   )r
   r"   rT   s    r,   rU   _GenerativeReader.get_type   s    $$$r+   r   N)r   r   r   r   r    rU   r*   r   r+   r,   r   r      s
    %r+   r   c                 "    [        U [        5      $ )is_generative_reader)
isinstancer   )readers    r,   r   r      s    f/00r+   c                   J   ^  \ rS rSrS r    SU 4S jjrS rS rS rSr	U =r
$ )r      c                 \   > [         TU ]  " SSU0UD6  X l        X0l        X@l        SU l        g )Nr;   r   r   )r1   r2   st_frame_idmax_num_frames
auto_close_fps)r:   r;   r   r   r   r6   r<   s         r,   r2   VideoReader.__init__   s2     	44G4&,$	r+   c              #   h  #    U R                   R                  U R                  5        U R                   R                  [	        U5      5      nU R
                  b   [        R                  " X R                  5      nU Sh  vN   U R                  (       a  U R                   R                  5         gg N17f)zread vide file from pathN)r8   set_posr   rb   rf   r   	itertoolsislice
num_framesr   close)r:   rC   gens      r,   rD   VideoReader.read   s}     d../mm%%c'l3*""38C??MM!  	s   A<B2>B0?2B2c                 6    U R                   R                  5       $ )zget fps)r8   get_fpsrT   s    r,   r   VideoReader.get_fps   s    }}$$&&r+   c                 \    US:X  a  [        S0 UD6$ US:X  a  [        S0 UD6$ [        S5      e)rO   r~   decordr   r   )OpenCVVideoReaderBackendDecordVideoReaderBackendr   rP   s      r,   rH   VideoReader._init_backend   s:    h+6g66 +6g66788r+   )r   r   r   r   )r~   r   NT)r   r   r   r   r    r2   rD   r   rH   r*   rY   rZ   s   @r,   r   r      s-     "'9 9r+   r   c                   >   ^  \ rS rSrSU 4S jjrS rS rS rSrU =r	$ )r      c                 (   > [         TU ]  " U40 UD6  g rK   r^   r9   s      r,   r2   YAMLReader.__init__   r`   r+   c                 J    U R                   R                  [        U5      5      $ rK   rx   rB   s     r,   rD   YAMLReader.read   ri   r+   c                 :    US:X  a  [        S0 UD6$ [        S5      e)NPyYAMLr   r   )YAMLReaderBackendr   rP   s      r,   rH   YAMLReader._init_backend   s$    h$/w//788r+   c                 "    [         R                  $ rK   )r
   r'   rT   s    r,   rU   YAMLReader.get_type   s    r+   r   )r   
r   r   r   r   r2   rD   rH   rU   r*   rY   rZ   s   @r,   r   r      s    -59 r+   r   c                   >   ^  \ rS rSrSU 4S jjrS rS rS rSrU =r	$ )MarkDownReader   c                 (   > [         TU ]  " U40 UD6  g rK   r^   r9   s      r,   r2   MarkDownReader.__init__   r`   r+   c                 J    U R                   R                  [        U5      5      $ rK   rx   rB   s     r,   rD   MarkDownReader.read   ri   r+   c                 :    US:X  a  [        S0 UD6$ [        S5      e)NMarkdownr   r   )TXTReaderBackendr   rP   s      r,   rH   MarkDownReader._init_backend   s$    j #.g..788r+   c                 "    [         R                  $ rK   )r
   r(   rT   s    r,   rU   MarkDownReader.get_type   s    """r+   r   )r   r   rZ   s   @r,   r   r      s    -59# #r+   r   c                   B   ^  \ rS rSrS rSU 4S jjrS rS rS rSr	U =r
$ )	TXTReader   c                 (   > [         TU ]  " U40 UD6  g rK   r^   r9   s      r,   r2   TXTReader.__init__   r`   r+   c                 J    U R                   R                  [        U5      5      $ rK   rx   rB   s     r,   rD   TXTReader.read   ri   r+   c                 &    US:X  a  [        S0 UD6$ g )Ntxtr   )r   rP   s      r,   rH   TXTReader._init_backend   s    e#.g.. r+   c                 "    [         R                  $ rK   )r
   r)   rT   s    r,   rU   TXTReader.get_type   ro   r+   r   )r   r   rZ   s   @r,   r   r      s    -5/ r+   r   c                       \ rS rSrS rS rSrg)_BaseReaderBackend   c                     [         er?   r@   rB   s     r,   rb   _BaseReaderBackend.read_file   rF   r+   r   Nr   r   r   r   r    rb   r*   r   r+   r,   r   r      s
    "r+   r   c                       \ rS rSrS rSrg)_ImageReaderBackendi  r   Nr   r   r   r   r    r*   r   r+   r,   r   r         r+   r   c                   6   ^  \ rS rSrS rSU 4S jjrS rSrU =r$ )r   i  c                 T   > [         TU ]  5         Uc  [        R                  nXl        g rK   )r1   r2   cv2IMREAD_COLORflags)r:   r   r<   s     r,   r2   !OpenCVImageReaderBackend.__init__	  s#    =$$E
r+   c                     [        US5       n[        R                  " UR                  5       [        R                  5      nSSS5        [
        R                  " WU R                  S9$ ! , (       d  f       N-= f)#read image file from path by OpenCVrbNr   )opennp
frombufferrD   uint8r   imdecoder   )r:   rC   f	img_arrays       r,   rb   "OpenCVImageReaderBackend.read_file  sK    '4 Aaffh9I !||ITZZ88 ! s   4A((
A6r   rK   	r   r   r   r   r    r2   rb   r*   rY   rZ   s   @r,   r   r     s    "9 9r+   r   c                   2   ^  \ rS rSrS rU 4S jrS rSrU =r$ )r   i  c                 "   > [         TU ]  5         g rK   r^   r:   r<   s    r,   r2   PILImageReaderBackend.__init__      r+   c                 V    [         R                  " [        R                  " U5      5      $ )z read image file from path by PIL)r   exif_transposer   r   rB   s     r,   rb   PILImageReaderBackend.read_file  s    &&uzz'':;;r+   r   r   rZ   s   @r,   r   r     s    < <r+   r   c                   8   ^  \ rS rSrSU 4S jjrS rS rSrU =r$ )rk   i!  c                 :   > [         TU ]  5         Xl        X l        g rK   )r1   r2   	_rotation_scale)r:   rotatezoomr<   s      r,   r2   PDFReaderBackend.__init__$  s    r+   c                 2    [         R                  " U5      nU$ )zload pdf file)pdfiumPdfDocument)r:   rC   docs      r,   re   PDFReaderBackend.load_file)  s      )
r+   c              #   J  #    [        U[        R                  5      (       a  UnOU R                  [	        U5      5      n U H7  nUR                  U R                  U R                  S9R                  5       v   M9     UR                  5         g ! UR                  5         f = f7f)N)scalerotation)
r   r   r   re   rf   renderr   r   to_numpyr   )r:   rC   r   pages       r,   rb   PDFReaderBackend.read_file.  sv     gv1122C..W.C	kkdnnkMVVXX  IIKCIIKs   =B# =B =B#B  B#)r   r   )r   g       @)	r   r   r   r   r2   re   rb   r*   rY   rZ   s   @r,   rk   rk   !  s    

	 	r+   rk   c                       \ rS rSrS rS rSrg)r   i:  c                 t    [        US5       nUR                  5       nS S S 5        U$ ! , (       d  f       W$ = f)Nr)r   rD   )r:   rC   r   datas       r,   rb   TXTReaderBackend.read_file=  s1    '31668D    s   (
7r   Nr   r   r+   r,   r   r   :  s
    r+   r   c                   $    \ rS rSrS rS rS rSrg)_VideoReaderBackendiC  c                     [         e)zset posr@   r:   poss     r,   r   _VideoReaderBackend.set_posF  rF   r+   c                     [         e)zclose ior@   rT   s    r,   r   _VideoReaderBackend.closeJ  rF   r+   r   N)r   r   r   r   r    r   r   r*   r   r+   r,   r  r  C  s    ""r+   r  c                   \   ^  \ rS rSrS rU 4S jrS rS rS rS r	S r
S rS	 rS
 rSrU =r$ )r   iO  c                    > [         TU ]  5         Xl        UR                  SS 5      U l        S U l        SU l        S U l        g )Nnum_segr   )r1   r2   cap_init_argsgetr  _cap_pos_max_num_frames)r:   r6   r<   s     r,   r2   !OpenCVVideoReaderBackend.__init__S  s<    ${{9d3		#r+   c                 T    U R                   R                  [        R                  5      $ rK   )r  r  r   CAP_PROP_FPSrT   s    r,   r    OpenCVVideoReaderBackend.get_fps[  s    yy}}S--..r+   c                     U R                   b  U R                  5         U R                  U5      U l         U R                  b  U R	                  5         U R                  U R                   5      $ )read video file from path)r  _cap_release	_cap_openr  _cap_set_pos_read_framesrB   s     r,   rb   "OpenCVVideoReaderBackend.read_file^  sS    99 NN7+	99   ++r+   c              #     #    U R                   (       a  / n UR                  5       u  p4U(       d  O/ n[        U5      S::  a-  [        U R                   5       H  nUR	                  U5        M     UR	                  U5        UR                  S5        UR                  5       v   M   UR                  5       u  p4U(       d  OUv   M   U R                  5         g7f)zread framesr   N)r  rD   r3   rangeappendpopcopyr#  )r:   capqueueretframeis         r,   r&  %OpenCVVideoReaderBackend._read_framesg  s     <<E XXZ
J!O"4<<0U+ 1U#		!jjl"   XXZ
	 
 	s   CCc                 h   U R                   R                  SS 5        U R                   R                  SS 5        U R                   R                  SS 5        [        R                  " U40 U R                   D6U l        U R                  R                  5       (       d  [        SU 35      eU R                  $ )Nr  seg_lensample_typezFailed to open )r  r+  r   VideoCapturer  isOpenedRuntimeError)r:   
video_paths     r,   r$  "OpenCVVideoReaderBackend._cap_open  s    y$/y$/}d3$$ZF43E3EF	yy!!##=>>yyr+   c                 8    U R                   R                  5         g rK   )r  releaserT   s    r,   r#  %OpenCVVideoReaderBackend._cap_release  s    		r+   c                 l    U R                   R                  [        R                  U R                  5        g rK   )r  setr   CAP_PROP_POS_FRAMESr  rT   s    r,   r%  %OpenCVVideoReaderBackend._cap_set_pos  s    		c--tyy9r+   c                     Xl         g rK   r  r  s     r,   r    OpenCVVideoReaderBackend.set_pos      	r+   c                 N    U R                   b  U R                  5         S U l         g g rK   )r  r#  rT   s    r,   r   OpenCVVideoReaderBackend.close  s$    99 DI !r+   )r  r  r  r  r  )r   r   r   r   r    r2   r   rb   r&  r$  r#  r%  r   r   r*   rY   rZ   s   @r,   r   r   O  s8    "$/,2: r+   r   c                   J   ^  \ rS rSrS rU 4S jrS rS rS rS r	S r
SrU =r$ )	r   i  c                 N  > [         TU ]  5         Xl        S U l        SU l        S U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l	        SU l
        SU l         SS KnX l        g ! [        5        a    [        S5      ef = f)	Nr   r  r   r4  r   r5  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`.)r1   r2   r  r  r  r  r  r  r4  r5  
valid_moder   r   decord_moduleModuleNotFoundError	Exception)r:   r6   r   r<   s      r,   r2   !DecordVideoReaderBackend.__init__  s    $		#{{9a0{{9a0";;}a8		!'"$ 	 | 	s   ?
B
 
B$c                     Xl         g rK   rC  r  s     r,   r    DecordVideoReaderBackend.set_pos  rE  r+   c                    / n[        XR                  -  5      n[        U R                  5       H  nSnU R                  (       dK  X@R                  :  a+  [
        R                  " SX@R                  -
  5      nXeU-  -  nO@US:  a  XeU-  -  nO2UnO/X@R                  :  a  US-
  S-  nXeU-  -  nOUS:  a  XeU-  -  nOUn[        XfU R                  -   5       H  nUR                  [        Xq-  5      5        M!     M     UR                  U5      nUR                  5       n	/ n
[        U	R                  S   5       H  nX   nU
R                  U5        M     U
$ )Nr   r   r   )intr  r)  rJ  r4  randomrandintr*  	get_batchasnumpyshape)r:   
frames_lenvideo_object
frames_idxaverage_durr1  idxjjframes_select	np_framesimgsimgbufs               r,   sampleDecordVideoReaderBackend.sample  s>   
*||34t||$AC??,,. ..K,,,FGC{?*C A%{?*CC,,.&?q0C{?*C A%{?*CCCt||!34!!#bo"67 5% %( %..z:!))+	yq)*A\FKK + r+   c                 6    U R                   R                  5       $ rK   )r  get_avg_fpsrT   s    r,   r    DecordVideoReaderBackend.get_fps  s    yy$$&&r+   c                     U R                   R                  U5      U l        [        U R                  5      nU R                  S:X  a  U R                  X R                  5      nU$ U R                  $ )r"  uniform)rK  r   r  r3   r5  rb  )r:   rC   	frame_lensample_videos       r,   rb   "DecordVideoReaderBackend.read_file  sW    &&227;			N	y(;;y))<L99r+   c                     g rK   r   rT   s    r,   r   DecordVideoReaderBackend.close  s    r+   )
r  r   r  r  r  rK  r  r5  r4  rJ  )r   r   r   r   r    r2   r   rb  r   rb   r   r*   rY   rZ   s   @r,   r   r     s*    ",@' r+   r   c                   B   ^  \ rS rSrS rSU 4S jjrS rS rS rSr	U =r
$ )r   i  c                 *   > [         TU ]  " SSU0UD6  g rs   r^   r9   s      r,   r2   CSVReader.__init__  ru   r+   c                 N    U R                   R                  [        U5      5      nU$ rw   rx   ry   s      r,   rD   CSVReader.read  r|   r+   c                 :    US:X  a  [        S0 UD6$ [        S5      e)rO   pandasr   r   )PandasCSVReaderBackendr   rP   s      r,   rH   CSVReader._init_backend  s$    h)4G44788r+   c                 "    [         R                  $ rS   )r
   r%   rT   s    r,   rU   CSVReader.get_type  s    }}r+   r   )rt  r   rZ   s   @r,   r   r     s    5
9 r+   r   c                       \ rS rSrS rSrg)_CSVReaderBackendi  r   Nr   r   r+   r,   rz  rz    s    r+   rz  c                   2   ^  \ rS rSrS rU 4S jrS rSrU =r$ )ru  i   c                 "   > [         TU ]  5         g rK   r^   r   s    r,   r2   PandasCSVReaderBackend.__init__  r   r+   c                 .    [         R                  " U5      $ )r   )pdread_csvrB   s     r,   rb    PandasCSVReaderBackend.read_file  s    {{7##r+   r   r   rZ   s   @r,   ru  ru     s     $ $r+   ru  c                       \ rS rSrS rSrg)r   i  c                     [        US4SS0UD6 n[        R                  " U[        R                  S9nS S S 5        U$ ! , (       d  f       W$ = f)Nr
  encodingzutf-8)Loader)r   yamlrg   
FullLoader)r:   rC   kwargs	yaml_filer  s        r,   rb   YAMLReaderBackend.read_file  sD    '3;;F;y99Yt?D < <;s	   $>
Ar   N)r   r   r   r   rb   r*   r   r+   r,   r   r     s    r+   r   c                   8   ^  \ rS rSrSU 4S jjrS rS rSrU =r$ )r   i  c                 *   > [         TU ]  " SSS0UD6  g )Nr;   wavr   r^   r9   s      r,   r2   AudioReader.__init__  s    22'2r+   c                 :    US:X  a  [        S0 UD6$ [        S5      e)rO   r  r   r   )WAVReaderBackendr   rP   s      r,   rH   AudioReader._init_backend  s$    e#.g..788r+   c                 T    U R                   R                  [        U5      5      u  p#X#4$ rK   rx   r:   rC   audioaudio_sample_rates       r,   rD   AudioReader.read  s&    #'==#:#:3w<#H ''r+   r   )r  )	r   r   r   r   r2   rH   rD   r*   rY   rZ   s   @r,   r   r     s    39( (r+   r   c                       \ rS rSrS rSrg)_AudioReaderBackendi#  r   Nr   r   r+   r,   r  r  #  r   r+   r  c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )r  i'  ru  c                 "   > [         TU ]  5         g rK   r^   r   s    r,   r2   WAVReaderBackend.__init__+  r   r+   c                 8    [         R                  " USSS9u  p#X#4$ )zread wav file from pathfloat32T)dtype	always_2d)r	   rD   r  s       r,   rb   WAVReaderBackend.read_file.  s%    #,>>9$
  ''r+   r   r   rZ   s   @r,   r  r  '  s     ( (r+   r  )/enumr   rS  numpyr   rt  r  r  PILr   r   
utils.depsr   r   r   r   r   r	   __all__Enumr
   objectr.   r   r   r   r   r   r   r   r   r   r   r   r   rk   r   r  r   r   r   rz  ru  r   r   r  r  r   r+   r,   <module>r     s           @+,,K  K   $& $N & +  2% %1
&9# &9R $#[ #$ "" ",  ,-92 9 .9 </ < ["9:)  ;0) 	", 	" ,-E2 E .EPJ2 JZ .* $. $* (+ ( ,  [!(* ( "(r+   