o
    HŠ!im!  ã                   @   s0  U 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m	Z	 d dl
mZmZmZmZmZmZmZmZ d dlmZmZ d dlZd dlZd dlZd dlmZ d dlmZmZm Z m!Z! ddl"m#Z#m$Z$ d	d
l%m&Z&m'Z'm(Z( e$dƒr{d dl)Z)e$dƒrƒd dl*Z*e$dƒr‹d dl+Z+e$dƒr“d dl,Z-e$dƒr›d dl.Z.g d¢Z/ed Z0e e1d< edƒZ2edƒZ3de4fdd„Z5de4de6fdd„Z7de4dee0 fdd„Z8e#dƒde4dee4 fdd „ƒZ9e#dƒd!e:dej;fd"d#„ƒZ<d!e:dejfd$d%„Z=dVd'ejd(e4de:fd)d*„Z>e#dƒdWd'ej;d,e4de:fd-d.„ƒZ?d!e:dej@fd/d0„ZAd1ej@de:fd2d3„ZBd!e:de4fd4d5„ZCe D¡ ZEe#ddƒ	dXd6e:d7eeF deeej; e'f fd8d9„ƒZGed:d;œd<e:d=ed> d7eeF deeej; e&f fd?d@„ƒZHed:d;œd<e:d=edA d7eeF deeej; e'f fdBd@„ƒZHed:d;œd<e:d=edC d7eeF deeeej; e&f eeej; e'f f fdDd@„ƒZHdd;œd<e:d=edC d7eeF deeeej; e&f eeej; e'f f fdEd@„ZHd'ej;de&fdFdG„ZId<e:dHe4de4fdIdJ„ZJde4de:fdKdL„ZKe#ddƒde4dMdNde:fdOdP„ƒZLdQee2e3f dRe2jMdSe2jNdee3 fdTdU„ZOdS )Yé    N)Úpartial)Ú	AwaitableÚCallableÚListÚOptionalÚTupleÚTypeVarÚUnionÚoverload)Úparse_qsÚurlparse)ÚImage)ÚLiteralÚ	ParamSpecÚ	TypeAliasÚassert_neveré   )Úfunction_requires_depsÚis_dep_availableé   )Ú	ImageInfoÚPDFInfoÚPDFPageInfoÚaiohttpzopencv-contrib-pythonÚfiletypeÚ	pypdfium2Úyarl)ÚFileTypeÚgenerate_log_idÚis_urlÚinfer_file_typeÚinfer_file_extÚimage_bytes_to_arrayÚimage_bytes_to_imageÚimage_to_bytesÚimage_array_to_bytesÚcsv_bytes_to_data_frameÚdata_frame_to_bytesÚbase64_encodeÚread_pdfÚfile_to_imagesÚget_image_infoÚwrite_to_temp_fileÚget_raw_bytesÚget_raw_bytes_asyncÚ
call_async)ÚIMAGEÚPDFÚVIDEOÚAUDIOr   ÚPÚRÚreturnc                   C   s   t t ¡ ƒS ©N)ÚstrÚuuidÚuuid4© r;   r;   úq/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/paddlex/inference/serving/infra/utils.pyr   K   s   r   Úsc                 C   s:   |   d¡s|   d¡sdS t| ƒ}t|j|jgƒo|jdv S )Nzhttp://zhttps://F)ÚhttpÚhttps)Ú
startswithr   ÚallÚschemeÚnetloc)r=   Úresultr;   r;   r<   r   V   s   r   Úurlc                 C   sÞ   t | ƒ}|j d¡d }t |¡d }|d u rRt d|j¡d u}|rL|jrLt	|jƒ}d|v rLt
|d ƒdkrLt d|d d ¡}|rLt | d¡¡d }|d u rRd S | d¡rYd	S |d
kr_dS | d¡rfdS | d¡rmdS d S )Nú/éÿÿÿÿr   z\w+\.bcebos\.comZresponseContentDispositionr   zattachment;filename=(.*)zimage/r0   zapplication/pdfr1   zvideo/r2   zaudio/r3   )r   ÚpathÚsplitÚ	mimetypesÚ
guess_typeÚreÚ	fullmatchrC   Úqueryr   ÚlenÚmatchÚgroupr@   )rE   Ú	url_partsÚfilenameÚ	file_typeZ
is_bos_urlÚparamsZmatch_r;   r;   r<   r    ^   s2   

ÿ


r    Úfilec                 C   s\   t | ƒr"t| ƒ}|j d¡d }t |¡d }|d u rd S t |¡S t | ¡}dt	 |¡ S )NrF   rG   r   Ú.)
r   r   rH   rI   rJ   rK   Úguess_extensionÚbase64Ú	b64decoder   )rV   rR   rS   Z	mime_typeÚbytes_r;   r;   r<   r!   ‚   s   

r!   Údatac                 C   s   t  t | tj¡t j¡S r7   )Úcv2ZimdecodeÚnpZ
frombufferZuint8ZIMREAD_COLOR©r\   r;   r;   r<   r"      s   r"   c                 C   s   t  t | ¡¡S r7   )r   ÚopenÚioÚBytesIOr_   r;   r;   r<   r#   •   ó   r#   ÚJPEGÚimageÚformatc                 C   sD   t  ¡ }| j||d | ¡ }W d   ƒ |S 1 sw   Y  |S )N)rf   )ra   rb   ÚsaveÚgetvalue)re   rf   ÚfZ	img_bytesr;   r;   r<   r$   ™   s   


þýr$   ú.jpgÚextc                 C   s   t  || ¡d } |  ¡ S )Nr   )r]   ZimencodeÚtobytes)re   rk   r;   r;   r<   r%       s   r%   c                 C   s@   t  |  d¡¡}t |¡}W d   ƒ |S 1 sw   Y  |S ©Nzutf-8)ra   ÚStringIOÚdecodeÚpdZread_csv)r\   ri   Údfr;   r;   r<   r&   ¦   s   
ÿþr&   rq   c                 C   s   |   ¡  d¡S rm   )Zto_csvÚencode)rq   r;   r;   r<   r'   ¬   s   r'   c                 C   s   t  | ¡ d¡S )NÚascii)rY   Ú	b64encodero   r_   r;   r;   r<   r(   °   rc   r(   r[   Úmax_num_imgsc              	   C   sÎ   g }g }t M t | ¡}z:|D ]1}|d urt|ƒ|kr n$d}d}|j||d ¡ }| |¡ t|jd |jd d}	| |	¡ qW | 	¡  n| 	¡  w W d   ƒ n1 sVw   Y  t
t|ƒ|d}
||
fS )Ng       @r   )ÚscaleZrotationr   ©ÚwidthÚheight)ZnumPagesZpages)Ú_lockÚpdfiumZPdfDocumentrO   ÚrenderZto_numpyÚappendr   ÚshapeÚcloser   )r[   ru   ÚimagesZpage_info_listÚdocÚpageZzoomÚdegre   Z	page_infoZpdf_infor;   r;   r<   r)   ·   s2   

þ€ïþr)   .©ru   Ú
file_bytesrT   r0   c                C   ó   d S r7   r;   ©r…   rT   ru   r;   r;   r<   r*   Ö   ó   r*   r1   c                C   r†   r7   r;   r‡   r;   r;   r<   r*   ß   rˆ   )r0   r1   c                C   r†   r7   r;   r‡   r;   r;   r<   r*   è   rˆ   c                C   sV   |dkrt | ƒg}t|d ƒ}||fS |dkr#t| |d\}}||fS t|ƒ ||fS )Nr0   r   r1   r„   )r"   r+   r)   r   )r…   rT   ru   r€   Ú	data_infor;   r;   r<   r*   ñ   s   
üÿc                 C   s   t | jd | jd dS )Nr   r   rw   )r   r~   )re   r;   r;   r<   r+     s   r+   Úsuffixc                 C   sD   t jd|dd}| | ¡ |jW  d   ƒ S 1 sw   Y  d S )NÚwbF)rŠ   Údelete)ÚtempfileÚNamedTemporaryFileÚwriteÚname)r…   rŠ   ri   r;   r;   r<   r,     s   
$þr,   c                 C   s.   t | ƒrtj| dd}| ¡  |jS t | ¡S )Né   )Útimeout)r   ÚrequestsÚgetÚraise_for_statusÚcontentrY   rZ   )rV   Úrespr;   r;   r<   r-     s
   
r-   Úsessionzaiohttp.ClientSessionc              	   Ã   sn   t | ƒr2| tj| dd¡4 I d H š}| ¡ I d H W  d   ƒI d H  S 1 I d H s+w   Y  d S t | ¡S )NT)Úencoded)r   r”   r   ÚURLÚreadrY   rZ   )rV   r˜   r—   r;   r;   r<   r.     s   €0ÿ
r.   ÚfuncÚargsÚkwargsc                O   s"   t  ¡  d t| g|¢R i |¤Ž¡S r7   )ÚasyncioÚget_running_loopÚrun_in_executorr   )rœ   r   rž   r;   r;   r<   r/     s   ÿr/   )rd   )rj   r7   )PrŸ   rY   ra   rJ   rL   r   Ú	threadingr9   Ú	functoolsr   Útypingr   r   r   r   r   r   r	   r
   Úurllib.parser   r   Únumpyr^   Zpandasrp   r“   ZPILr   Ztyping_extensionsr   r   r   r   Z
utils.depsr   r   Úmodelsr   r   r   r   r]   r   r   r{   r   Ú__all__r   Ú__annotations__r4   r5   r8   r   Úboolr   r    r!   ÚbytesZndarrayr"   r#   r$   r%   Z	DataFramer&   r'   r(   ÚLockrz   Úintr)   r*   r+   r,   r-   r.   r   rž   r/   r;   r;   r;   r<   Ú<module>   sâ   
($ÿÿÿþüÿþüûüÿþüûüÿþü&ûüÿþü&
û	
ÿÿÿþ