U
    9%eX                     @   s8   d Z ddlZddlmZ ddlmZ G dd deZdS )z
Processor class for TrOCR.
    N)contextmanager   )ProcessorMixinc                       sn   e Zd ZdZddgZdZdZd fdd	Zd	d
 Zdd Z	dd Z
edd Zedd Zedd Z  ZS )TrOCRProcessora  
    Constructs a TrOCR processor which wraps a vision image processor and a TrOCR tokenizer into a single processor.

    [`TrOCRProcessor`] offers all the functionalities of [`ViTImageProcessor`/`DeiTImageProcessor`] and
    [`RobertaTokenizer`/`XLMRobertaTokenizer`]. See the [`~TrOCRProcessor.__call__`] and [`~TrOCRProcessor.decode`] for
    more information.

    Args:
        image_processor ([`ViTImageProcessor`/`DeiTImageProcessor`]):
            An instance of [`ViTImageProcessor`/`DeiTImageProcessor`]. The image processor is a required input.
        tokenizer ([`RobertaTokenizer`/`XLMRobertaTokenizer`]):
            An instance of [`RobertaTokenizer`/`XLMRobertaTokenizer`]. The tokenizer is a required input.
    image_processor	tokenizerZAutoImageProcessorZAutoTokenizerNc                    sr   d }d|kr"t dt |d}|d k	r.|n|}|d krBtd|d krRtdt || | j| _d| _	d S )Nfeature_extractorzhThe `feature_extractor` argument is deprecated and will be removed in v5, use `image_processor` instead.z)You need to specify an `image_processor`.z"You need to specify a `tokenizer`.F)
warningswarnFutureWarningpop
ValueErrorsuper__init__r   current_processor_in_target_context_manager)selfr   r   kwargsr   	__class__ i/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/transformers/models/trocr/processing_trocr.pyr   *   s    
zTrOCRProcessor.__init__c                 O   s   | j r| j||S |dd}|dd}t|dkrJ|d }|dd }|dkrb|dkrbtd|dk	r|| j|f||}|dk	r| j|f|}|dkr|S |dkr|S |d |d< |S dS )	a  
        When used in normal mode, this method forwards all its arguments to AutoImageProcessor's
        [`~AutoImageProcessor.__call__`] and returns its output. If used in the context
        [`~TrOCRProcessor.as_target_processor`] this method forwards all its arguments to TrOCRTokenizer's
        [`~TrOCRTokenizer.__call__`]. Please refer to the doctsring of the above two methods for more information.
        imagesNtextr      zBYou need to specify either an `images` or `text` input to process.Z	input_idslabels)r   r   r   lenr   r   r   )r   argsr   r   r   inputs	encodingsr   r   r   __call__>   s&    zTrOCRProcessor.__call__c                 O   s   | j j||S )z
        This method forwards all its arguments to TrOCRTokenizer's [`~PreTrainedTokenizer.batch_decode`]. Please refer
        to the docstring of this method for more information.
        )r   batch_decoder   r   r   r   r   r   r!   _   s    zTrOCRProcessor.batch_decodec                 O   s   | j j||S )z
        This method forwards all its arguments to TrOCRTokenizer's [`~PreTrainedTokenizer.decode`]. Please refer to the
        docstring of this method for more information.
        )r   decoder"   r   r   r   r#   f   s    zTrOCRProcessor.decodec                 c   s0   t d d| _| j| _dV  | j| _d| _dS )z
        Temporarily sets the tokenizer for processing the input. Useful for encoding the labels when fine-tuning TrOCR.
        z`as_target_processor` is deprecated and will be removed in v5 of Transformers. You can process your labels by using the argument `text` of the regular `__call__` method (either in the same call as your images inputs, or in a separate call.TNF)r	   r
   r   r   r   r   r   r   r   r   as_target_processorm   s    z"TrOCRProcessor.as_target_processorc                 C   s   t dt | jS )Nzg`feature_extractor_class` is deprecated and will be removed in v5. Use `image_processor_class` instead.)r	   r
   r   image_processor_classr$   r   r   r   feature_extractor_class}   s
    z&TrOCRProcessor.feature_extractor_classc                 C   s   t dt | jS )Nz[`feature_extractor` is deprecated and will be removed in v5. Use `image_processor` instead.)r	   r
   r   r   r$   r   r   r   r      s
    z TrOCRProcessor.feature_extractor)NN)__name__
__module____qualname____doc__
attributesr&   Ztokenizer_classr   r    r!   r#   r   r%   propertyr'   r   __classcell__r   r   r   r   r      s   !

r   )r+   r	   
contextlibr   Zprocessing_utilsr   r   r   r   r   r   <module>   s   