
    j                         d dl Z 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)Path)Any)tqdm   )AbstractDataset)convert_target_to_relativecrop_bboxes_from_imageIC13c                   H     e Zd ZdZ	 	 	 ddedededededed	d
f fdZ xZS )r
   a  IC13 dataset from `"ICDAR 2013 Robust Reading Competition" <https://rrc.cvc.uab.es/>`_.

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

    >>> # NOTE: You need to download both image and label parts from Focused Scene Text challenge Task2.1 2013-2015.
    >>> from doctr.datasets import IC13
    >>> train_set = IC13(img_folder="/path/to/Challenge2_Training_Task12_Images",
    >>>                  label_folder="/path/to/Challenge2_Training_Task1_GT")
    >>> img, target = train_set[0]
    >>> test_set = IC13(img_folder="/path/to/Challenge2_Test_Task12_Images",
    >>>                 label_folder="/path/to/Challenge2_Test_Task1_GT")
    >>> img, target = test_set[0]

    Args:
        img_folder: folder with all the images of the dataset
        label_folder: folder with all annotation files for the images
        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 `AbstractDataset`.
    F
img_folderlabel_folderuse_polygonsrecognition_taskdetection_taskkwargsreturnNc                     t                      j        |fd|st          nd i| |r|rt          d          t          j                            |          rt          j                            |          s3t          dt          j                            |          s|n|           g | _        t          j
        }t	          j        |          }t          |dt          |                    D ]i}	t          ||	          }
t          |dt          |	          j        z   dz             }t!          |d	          5 }d
 t#          j        |dd          D             }d d d            n# 1 swxY w Y   d |D             }t          j        d |D             |          }|r t          j        d |D             |          }|rIt)          |
|          }t+          ||          D ]%\  }}d|vr| j                            ||f           &|r| j                            |
|f           >| j                            |
t/          ||          f           kd S )N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.zunable to locate zPreparing and Loading IC13)iterabledesctotalgt_z.txt
)newlinec                 &    g | ]}d  |D             S )c                 P    g | ]#}|                     d           r
|dd         n|$S ),N)endswith).0vals     V/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/doctr/datasets/ic13.py
<listcomp>z,IC13.__init__.<locals>.<listcomp>.<listcomp>O   s5    KKKc!2!2;S"XXKKK     )r    rows     r"   r#   z!IC13.__init__.<locals>.<listcomp>N   s7        LKsKKK  r$    ')	delimiter	quotecharc                 F    g | ]}|d                               dd          S )r   " )replacer    lines     r"   r#   z!IC13.__init__.<locals>.<listcomp>R   s,    CCCDd2h&&sB//CCCr$   c           
      b    g | ],}t          t          t          |d d                             -S )N   )listmapintr/   s     r"   r#   z!IC13.__init__.<locals>.<listcomp>T   s2    /\/\/\TSd2A2h5G5G0H0H/\/\/\r$   )dtypec                     g | ]@}|d          |d         g|d         |d         g|d         |d         g|d          |d         ggAS )r   r         r%   )r    coordss     r"   r#   z!IC13.__init__.<locals>.<listcomp>X   sl        # $AYq	2#AYq	2#AYq	2#AYq	2	  r$   )img_pathgeoms)boxeslabels)super__init__r   
ValueErrorospathexistsFileNotFoundErrordatanpfloat32listdirr   lenr   stemopencsvreaderarrayr	   zipappenddict)selfr   r   r   r   r   r   np_dtype	img_namesimg_namer;   
label_pathf_linesr>   box_targetscropscroplabel	__class__s                      r"   r@   zIC13.__init__,   s"    		
 	
IY'c'A'A_c	
gm	
 	
 	
  	 	c   w~~l++ 	27>>*3M3M 	#f|8T8T$dLLZdff   XZ	:Jz**	i6RZ]^gZhZhiii #	U #	UHJ11HlEDNN4G,G&,PQQJj$/// 1 "z!scJJJ                
 DCFCCCF&(h/\/\U[/\/\/\dl&m&m&mK  h  '2   #     U.TTT#&uf#5#5 8 8KD%%''	(($7778   U	  (K!89999	  (D{6,R,R,R!STTTTG#	U #	Us   ="E++E/	2E/	)FFF)	__name__
__module____qualname____doc__strboolr   r@   __classcell__)r^   s   @r"   r
   r
      s         6 #!&$@U @U@U @U 	@U
 @U @U @U 
@U @U @U @U @U @U @U @U @U @Ur$   )rM   rB   pathlibr   typingr   numpyrG   r   datasetsr   utilsr   r	   __all__r
   r%   r$   r"   <module>rl      s    


 				                       % % % % % % E E E E E E E E(XU XU XU XU XU? XU XU XU XU XUr$   