
    j                     x    d dl Z d dlmZ d dlmZ d dlZd dlmZ ddl	m
Z
 ddlmZmZ dgZ G d de
          ZdS )	    N)Any)tqdm   )VisionDataset)convert_target_to_relativecrop_bboxes_from_imageSVTc                   Z     e Zd ZdZdZdZ	 	 	 	 ddededed	ed
eddf fdZde	fdZ
 xZS )r	   a  SVT dataset from `"The Street View Text Dataset - UCSD Computer Vision"
    <http://vision.ucsd.edu/~kai/svt/>`_.

    .. image:: https://doctr-static.mindee.com/models?id=v0.5.0/svt-grid.png&src=0
        :align: center

    >>> from doctr.datasets import SVT
    >>> train_set = SVT(train=True, download=True)
    >>> img, target = train_set[0]

    Args:
        train: whether the subset should be the training one
        use_polygons: whether polygons should be considered as rotated bounding box (instead of straight ones)
        recognition_task: whether the dataset should be used for recognition task
        detection_task: whether the dataset should be used for detection task
        **kwargs: keyword arguments from `VisionDataset`.
    z,http://www.iapr-tc11.org/dataset/SVT/svt.zip@63b3d55e6b6d1e036e2a844a20c034fe3af3c32e4d914d6e0c4a3cd43df3bebfTFtrainuse_polygonsrecognition_taskdetection_taskkwargsreturnNc                     t                      j        | j        d | j        dfd|st          nd i| |r|rt          d          || _        g | _        t          j	        }| j        r%t          j                            | j        d          n| j        }| j        r2t          j        t          j                            |d                    n1t          j        t          j                            |d                    }|                                }	t#          |	dt%          |	                    D ]}
|
\  }}}}}t          j                            t          j                            ||j                            s5t+          d	t          j                            ||j                             |rd
 |D             }nd |D             }t          j        ||          }d |D             }|rt/          t          j                            ||j                  |          }t1          ||          D ]Z\  }}|j        d         dk    rD|j        d         dk    r3t%          |          dk    r d|vr| j                            ||f           [b|r#| j                            |j        |f           | j                            |j        t7          ||          f           || _        d S )NTpre_transformsz`recognition_task` and `detection_task` cannot be set to True simultaneously. To get the whole dataset with boxes and labels leave both parameters to False.svt1z	train.xmlztest.xmlzPreparing and Loading SVT)iterabledesctotalzunable to locate c                    g | ]=}t          |j        d                    t          |j        d                   gt          |j        d                    t          |j        d                   z   t          |j        d                   gt          |j        d                    t          |j        d                   z   t          |j        d                   t          |j        d                   z   gt          |j        d                    t          |j        d                   t          |j        d                   z   gg?S xywidthheightfloatattrib.0rects     U/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/doctr/datasets/svt.py
<listcomp>z SVT.__init__.<locals>.<listcomp>U   s         t{3/00%C8H2I2IJt{3/005W9M3N3NNPUVZVabeVfPgPgh!$+c"233eDK<P6Q6QQ!$+c"233eDK<Q6R6RR t{3/00%C8H2I2IERVR]^fRgLhLh2hi      c           
      F   g | ]}t          |j        d                    t          |j        d                   t          |j        d                    t          |j        d                   z   t          |j        d                   t          |j        d                   z   gS r   r   r!   s     r$   r%   z SVT.__init__.<locals>.<listcomp>c   s         dk#.//dk#.//dk#.//%G8L2M2MMdk#.//%H8M2N2NN	  r&   )dtypec                 &    g | ]}|D ]	}|j         
S  )text)r"   r#   labs      r$   r%   z SVT.__init__.<locals>.<listcomp>o   s'    FFF4FF#chFFFFr&   )img_pathgeomsr   r    )boxeslabels)super__init__URLSHA256r   
ValueErrorr   datanpfloat32ospathjoinrootETparsegetrootr   lenexistsr+   FileNotFoundErrorasarrayr   zipshapeappenddict)selfr   r   r   r   r   np_dtypetmp_rootxml_treexml_rootimagename__resolution
rectangles_boxesr0   r1   cropscroplabel	__class__s                        r$   r3   zSVT.__init__)   s+    	HK		
 	

 >NW55SW	
 	
 	
 	
  	 	c  
 
VX	: 7;kP27<<	6222ty z>BHRW\\(K88999"',,x<<== 	
 ##%%82MUXYaUbUbccc -	P -	PE27/D!QZ 7>>"',,x"C"CDD a'(_BGLLSWS\<]<](_(_```   !+    !+   !#
6 B B BEFF:FFFF P.Xty8Y8Yafggg#&uf#5#5 8 8KD%z!}q((TZ]Q->->3u::PQ>>VYafVfVf	(($7778   P	  $)U!34444	  $)Tf-M-M-M!NOOOO			r&   c                     d| j          S )Nztrain=)r   )rI   s    r$   
extra_reprzSVT.extra_repr}   s    $
$$$r&   )TFFF)__name__
__module____qualname____doc__r4   r5   boolr   r3   strrY   __classcell__)rW   s   @r$   r	   r	      s         $ 9COF "!&$R RR R 	R
 R R 
R R R R R Rh%C % % % % % % % %r&   )r:   typingr   defusedxml.ElementTreeElementTreer>   numpyr8   r   datasetsr   utilsr   r   __all__r	   r*   r&   r$   <module>rh      s    
			       # # # # # #           # # # # # # E E E E E E E E'k% k% k% k% k%- k% k% k% k% k%r&   