
    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IC03c                   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	   aH  IC03 dataset from `"ICDAR 2003 Robust Reading Competitions: Entries, Results and Future Directions"
    <http://www.iapr-tc11.org/mediawiki/index.php?title=ICDAR_2003_Robust_Reading_Competitions>`_.

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

    >>> from doctr.datasets import IC03
    >>> train_set = IC03(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`.
    )zMhttp://www.iapr-tc11.org/dataset/ICDAR2003_RobustReading/TrialTrain/scene.zip@9d86df514eb09dd693fb0b8c671ef54a0cfe02e803b1bbef9fc676061502eb94zic03_train.zip)zLhttp://www.iapr-tc11.org/dataset/ICDAR2003_RobustReading/TrialTest/scene.zip@dbc4b5fd5d04616b8464a1b42ea22db351ee22c2546dd15ac35611857ea111f8zic03_test.zipTFtrainuse_polygonsrecognition_taskdetection_taskkwargsreturnNc                    |r| j         n| j        \  }}} t                      j        |||dfd|st          nd i| |r|rt          d          || _        g | _        t          j	        }	|r.t          j                            | j        | j        rdnd          n| j        }
t          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%          |          dk    r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           [t|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.SceneTrialTrainSceneTrialTestz	words.xmlzPreparing and Loading IC03)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     V/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/doctr/datasets/ic03.py
<listcomp>z!IC03.__init__.<locals>.<listcomp>\   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!IC03.__init__.<locals>.<listcomp>j   s         dk#.//dk#.//dk#.//%G8L2M2MMdk#.//%H8M2N2NN	  r(   r   )dtypec                 4    g | ]}|D ]}|j         	|j         S  )text)r$   r%   labs      r&   r'   z!IC03.__init__.<locals>.<listcomp>x   s.    VVVtTVVcSXV#(VVVVr(   )img_pathgeomsr    )boxeslabels)TRAINTESTsuper__init__r   
ValueErrorr   datanpfloat32ospathjoinrootETparsegetrootr   lenexistsr-   FileNotFoundErrorasarrayr   zipshapeappenddict)selfr   r   r   r   r   urlsha256	file_namenp_dtypetmp_rootxml_treexml_rootimagename_resolution
rectangles_boxesr2   r3   cropscroplabel	__class__s                          r&   r7   zIC03.__init__1   s0    05!C$)VY		
 	

 >NW55SW	
 	
 	
 	
  	 	c  
 
VX	: _esBGLL$Y$5$5IYZZZjnjs 	 8BGLL;??@@##%%82NVYZbVcVcddd /	T /	TE,1)D+z 7>>"',,x"C"CDD a'(_BGLLSWS\<]<](_(_```   !+    !+   6{{Q$&JvX$F$F$FVVzVVV# T2BGLLSWS\<]<]ejkkkE'*5&'9'9 < <e:a=1,,A1B1Bs5zzTU~~Z]ejZjZj I,,dE];;;< $ TI$$di%78888I$$diE&1Q1Q1Q%RSSS			r(   c                     d| j          S )Nztrain=)r   )rK   s    r&   
extra_reprzIC03.extra_repr   s    $
$$$r(   )TFFF)__name__
__module____qualname____doc__r4   r5   boolr   r7   strr]   __classcell__)r[   s   @r&   r	   r	      s         $E
D "!&$S SS S 	S
 S S 
S S S S S Sj%C % % % % % % % %r(   )r<   typingr   defusedxml.ElementTreeElementTreer@   numpyr:   r   datasetsr   utilsr   r   __all__r	   r,   r(   r&   <module>rl      s    
			       # # # # # #           # # # # # # E E E E E E E E(t% t% t% t% t%= t% t% t% t% t%r(   