
    9i                         S SK r S SKrS SKJ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 rS r0 r0 r " S S\R$                  5      rS	 rS
 rS rS rS rS rS rS rS rS rS rg)    N)BytesIO)TASK_OUTPUTS
OutputKeys)TASK_INPUTS	InputTypec                     [         R                  " U 5      n[        UR                  S5      5      UR                  S5      S.nU$ )Nimagetextr	   r
   )jsonloadsdecode_base64_to_imageget)data	data_jsoninputss      ^/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/utils/service_utils.pyExampleDecoderr      s?     

4 I
 (	g(>?f%F M    c                 d    U S   nU S   n[        U5      US.n [        R                  " U [        S9$ )Nr	   r
   r   cls)encode_array_to_img_base64r   dumpsNumpyEncoder)r   r	   r
   s      r   ExampleEncoderr      s6    
 ME<D/6ED::d--r   c                       \ rS rSrS rSrg)r   3   c                 F   [        U[        R                  5      (       a  UR                  5       $ [        U[        R                  5      (       a  [        U5      $ [        U[        R                  5      (       a  [        U5      $ [        R                  R                  X5      $ N)
isinstancenpndarraytolistfloatingfloatintegerintr   JSONEncoderdefault)selfobjs     r   r*   NumpyEncoder.default5   sk    c2::&&::<c2;;'':c2::&&s8O''22r    N)__name__
__module____qualname____firstlineno__r*   __static_attributes__r.   r   r   r   r   3   s    
3r   r   c                     U R                  SS5      n [        R                  " U 5      S   nUS:X  a  g[        R                  " U5      nUb  UR	                  S5      (       a  USS  nU$ )Nz	audio/wavzaudio/x-wavr   z
audio/flacflac.   )replace	mimetypes
guess_typeguess_extension
startswith)encodingtp	extensions      r   get_extensionr@   B   sk    ];H			h	'	*B	\))"-I!5!5c!:!:abM	r   c                     [         R                  " U 5      S   nUb"  UR                  SS5      R                  SS5      nU$ )Nr   zx-wavwavzx-flacr5   )r9   r:   r8   )filenamemimetypes     r   get_mimetyperE   M   sA    ##H-a0H##GU3;;HfMOr   c                 p    [        U 5      nU R                  S5      S   n[        R                  " U5      U4$ )N,r7   )r@   splitbase64	b64decode)r=   r?   r   s      r   decode_base64_to_binaryrK   T   s5    h'I>>#q!DD!9,,r   c                     SSK Jn  U R                  S5      S   nUR                  S5      S   nUR                  [	        [
        R                  " U5      5      5      $ )Nr   Image;r7   rG   )PILrN   rH   openr   rI   rJ   )r=   rN   contentimage_encodeds       r   r   r   Z   sJ    nnS!!$GMM#&q)M::gf..}=>??r   c                 @   SSK Jn  [        5        nUR                  U R	                  [
        R                  5      5      nUR                  US5        UR                  5       nS S S 5        [        [        R                  " W5      S5      nSU-   $ ! , (       d  f       N3= f)Nr   rM   PNGutf-8zdata:image/png;base64,)rP   rN   r   	fromarrayastyper"   uint8savegetvaluestrrI   	b64encode)image_arrayrN   output_bytes	pil_image
bytes_data
base64_strs         r   r   r   a   sv    	lOOK$6$6rxx$@A	|U+!**,
 
 V%%j17;J#j00 
s   AB
Bc                     SSK Jn  [        5        nU" USU 5        [        [        R
                  " UR                  5       5      S5      nS S S 5        SU-   $ ! , (       d  f       SW-   $ = f)Nr   )writei>  rV   zdata:audio/pcm;base64,)scipy.io.wavfilerd   r   r\   rI   r]   r[   )ra   rd   out_mem_filerb   s       r   encode_pcm_to_base64rg   k   s_    &	llE:.)),*?*?*ABGL
 
 $j00 
 $j00s   9A
A)c                     [         R                  " [        R                  " U 5      R                  5      n[        US5      n[        U 5      nSUb  UOS-   S-   U-   $ )NrV   data: ;base64,)rI   r]   requestsr   rR   r\   rE   )urlencoded_stringrb   rD   s       r   encode_url_to_base64ro   s   sX    %%hll3&7&?&?@N^W-JC H8#7xR@:M r   c                     [        U S5       n[        R                  " UR                  5       5      n[	        US5      n[        U 5      nSUb  UOS-   S-   U-   sS S S 5        $ ! , (       d  f       g = f)NrbrV   ri   rj   rk   )rQ   rI   r]   readr\   rE   )ffilern   rb   rD   s        r   encode_file_to_base64ru   {   sa    	a$))$))+61
?x';8D)*	 
s   AA""
A0c                      [         R                  " U 5        [        U 5      $ ! [         R                  R                  [         R                  R
                  4 a    [        U 5      s $ f = fr    )rl   r   ro   
exceptionsMissingSchemaInvalidSchemaru   )paths    r   encode_url_or_file_to_base64r{      sX    +T#D))----/ +$T**+s    # AA)(A)c                    [         R                  U 5      b  [         U    " U5      $ UR                  S5      n[        U    n[	        U[
        5      (       a  US   nU[        R                  :X  a  [        U5      $ U[        R                  :X  a  [        U5      S   $ U[        R                  :X  a  U$ [	        U[        5      (       a  0 n[        R                  " U5      nUR                  5        Hp  u  pEU[        R                  :X  a  [        X   5      X$'   M*  U[        R                  :X  a  [        X   5      S   X$'   MR  U[        R                  :X  a  X   X$'   Mn  Us  $    U$ )NrV   r   )CustomDecoderr   decoder   r!   listr   IMAGEr   AUDIOrK   TEXTdictr   r   items)taskr   
input_data
input_typekeyvals         r   service_data_decoderr      s&   *T"4((W%JT"J*d##]
Y__$%j11	y	&&z2155	y~~	%	J	%	%
zz$"((*HCioo%"8"C
	'"9$)"DQ"G
	&"&)
 + r   c                    [         R                  U 5      b  [         U    " U5      $ [        U    nUnU H  nU[        R                  :X  a7  [        U[        R                     SS S S24   5      U[        R                  '   MN  U[        R                  :X  d  Md  [        U[        R                     5      U[        R                  '   M     [        [        R                  " U[        S9SS9nU$ )N.r   utf8)r=   )CustomEncoderr   r   r   
OUTPUT_IMGr   
OUTPUT_PCMrg   bytesr   r   r   )r   r   output_keysresult
output_keys        r   service_data_encoderr      s    *T"4((t$KF!
...,FZ**+C2I6-8F:(():000,@Z**+--F:(() " 4::f,7&IFMr   )rI   r9   ior   r   numpyr"   rl   modelscope.outputsr   r   modelscope.pipeline_inputsr   r   r   r   r   r}   r)   r   r@   rE   rK   r   r   rg   ro   ru   r{   r   r   r.   r   r   <module>r      s          7 =
 .
34## 3-@11++:r   