§
    ‚Štjì  ã                   óô   — d Z ddlmZ ddlm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  ej        e¦  «        Z G d	„ d
e
d¬¦  «        Z G d„ ded¬¦  «        Ze G d„ de	¦  «        ¦   «         ZdgZdS )z
Processor class for UDOP.
é    )Úloggingé   )ÚBatchFeature)Ú
ImageInput)ÚProcessingKwargsÚProcessorMixinÚ
TextKwargsÚUnpack)ÚPreTokenizedInputÚ	TextInput)Úauto_docstringc                   óœ   — e Zd ZU ee         eee                  z  dz  ed<   eee                  eeee                           z  dz  ed<   dS )ÚUdopTextKwargsNÚword_labelsÚboxes)Ú__name__Ú
__module__Ú__qualname__ÚlistÚintÚ__annotations__© ó    úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/udop/processing_udop.pyr   r      s_   € € € € € € Ø�c”˜T $ s¤)œ_Ñ,¨tÑ3Ð3Ð3Ñ3Ø��S”	Œ?˜T $ t¨C¤y¤/Ô2Ñ2°TÑ9Ð9Ð9Ñ9Ð9Ð9r   r   F)Útotalc                   ó6   — e Zd ZU eed<   dddddddddddœ	iZdS )ÚUdopProcessorKwargsÚtext_kwargsTFr   )	Úadd_special_tokensÚpaddingÚ
truncationÚstrideÚreturn_overflowing_tokensÚreturn_special_tokens_maskÚreturn_offsets_mappingÚreturn_lengthÚverboseN)r   r   r   r   r   Ú	_defaultsr   r   r   r   r   #   sK   € € € € € € ØÐÐÑàØ"&ØØØØ).Ø*/Ø&+Ø"Øð

ð 

ð€I€I€Ir   r   c            
       ó¨   ‡ — e Zd ZdZˆ fd„Ze	 	 ddedz  deez  e	e         z  e	e         z  de
e         defd„¦   «         Zd	„ Zed
„ ¦   «         Zˆ xZS )ÚUdopProcessoras  
    Constructs a UDOP processor which combines a LayoutLMv3 image processor and a UDOP tokenizer into a single processor.

    [`UdopProcessor`] offers all the functionalities you need to prepare data for the model.

    It first uses [`LayoutLMv3ImageProcessor`] to resize, rescale and normalize document images, and optionally applies OCR
    to get words and normalized bounding boxes. These are then provided to [`UdopTokenizer`],
    which turns the words and bounding boxes into token-level `input_ids`, `attention_mask`, `token_type_ids`, `bbox`.
    Optionally, one can provide integer `word_labels`, which are turned into token-level `labels` for token
    classification tasks (such as FUNSD, CORD).

    Additionally, it also supports passing `text_target` and `text_pair_target` to the tokenizer, which can be used to
    prepare labels for language modeling tasks.
    c                 óL   •— t          ¦   «                              ||¦  «         d S )N)ÚsuperÚ__init__)ÚselfÚimage_processorÚ	tokenizerÚ	__class__s      €r   r-   zUdopProcessor.__init__E   s#   ø€ Ý‰Œ×Ò˜¨)Ñ4Ô4Ð4Ð4Ð4r   NÚimagesÚtextÚkwargsÚreturnc                 ó¨  —  | j         t          fd| j        j        i|¤Ž}|d                              dd ¦  «        }|d                              dd ¦  «        }|d                              dd ¦  «        }|d                              dd¦  «        }|d                              dd¦  «        }	|d                              d	d ¦  «        }
| j        j        r|�t          d
¦  «        ‚| j        j        r|�t          d¦  «        ‚|r|	st          d¦  «        ‚|
� | j        di |d         ¤ŽS  | j        dd|i|d         ¤Ž}|                     dd ¦  «        }|                     dd ¦  «        }|d                              d	d ¦  «         |d                              dd ¦  «         ||d         d<   |�|n||d         d<   ||d         d<   |�1| j        j        r%|€#t          |t          ¦  «        r|g}||d         d<    | j        dd|�|n|i|d         ¤Ž}|du r%|                      |d         |d         ¦  «        |d<   |                     |¦  «         |S )NÚtokenizer_init_kwargsr   r   r   Ú	text_pairr#   Fr%   Útext_targetzdYou cannot provide bounding boxes if you initialized the image processor with apply_ocr set to True.zaYou cannot provide word labels if you initialized the image processor with apply_ocr set to True.zKYou cannot return overflowing tokens without returning the offsets mapping.r2   Úimages_kwargsÚwordsÚtext_pair_targetr3   TÚpixel_valuesÚoverflow_to_sample_mappingr   )Ú_merge_kwargsr   r0   Úinit_kwargsÚpopÚgetr/   Ú	apply_ocrÚ
ValueErrorÚ
isinstanceÚstrÚget_overflowing_imagesÚupdate)r.   r2   r3   r4   Úoutput_kwargsr   r   r8   r#   r%   r9   ÚfeaturesÚfeatures_wordsÚfeatures_boxesÚencoded_inputss                  r   Ú__call__zUdopProcessor.__call__H   sü  € ð +˜Ô*Ýð
ð 
à"&¤.Ô"<ð
ð ð
ð 
ˆð ˜mÔ,×0Ò0°¸$Ñ?Ô?ˆØ# MÔ2×6Ò6°}ÀdÑKÔKˆØ! -Ô0×4Ò4°[À$ÑGÔGˆ	Ø$1°-Ô$@×$DÒ$DÐE`ÐbgÑ$hÔ$hÐ!Ø!.¨}Ô!=×!AÒ!AÐBZÐ\aÑ!bÔ!bÐØ# MÔ2×6Ò6°}ÀdÑKÔKˆàÔÔ)ð 	¨uÐ/@ÝØvñô ð ð ÔÔ)ð 	¨{Ð/FÝØsñô ð ð %ð 	lÐ-Cð 	lÝÐjÑkÔkÐkàÐ"à!�4”>ð ð Ø Ô.ðð ð ð ,�tÔ+Ð\Ð\°6Ð\¸]È?Ô=[Ð\Ð\ˆHØ%Ÿ\š\¨'°4Ñ8Ô8ˆNØ%Ÿ\š\¨'°4Ñ8Ô8ˆNà˜-Ô(×,Ò,¨]¸DÑAÔAÐAØ˜-Ô(×,Ò,Ð-?ÀÑFÔFÐFØ8AˆM˜-Ô(¨Ñ5Ø=BÐ=N°E°EÐTbˆM˜-Ô(¨Ñ1Ø:EˆM˜-Ô(¨Ñ7ð Ð DÔ$8Ô$BÐÀyÐGXÝ˜d¥CÑ(Ô(ð "Ø ˜6�DØ<J�˜mÔ,¨[Ñ9à+˜Tœ^ð ð Ø!Ð-�T�T°>ðà Ô.ðð ˆNð )¨DÐ0Ð0Ø+/×+FÒ+FØ˜^Ô,¨nÐ=YÔ.Zñ,ô ,�˜Ñ(ð �OŠO˜NÑ+Ô+Ð+àˆOr   c                 óè   — g }|D ]}|                      ||         ¦  «         Œt          |¦  «        t          |¦  «        k    r/t          dt          |¦  «        › dt          |¦  «        › �¦  «        ‚|S )Nz`Expected length of images to be the same as the length of `overflow_to_sample_mapping`, but got z and )ÚappendÚlenrD   )r.   r2   r>   Úimages_with_overflowÚ
sample_idxs        r   rG   z$UdopProcessor.get_overflowing_images’   s    € à!ÐØ4ð 	<ð 	<ˆJØ ×'Ò'¨¨zÔ(:Ñ;Ô;Ð;Ð;åÐ#Ñ$Ô$­Ð,FÑ(GÔ(GÒGÐGÝðVÝÐ,Ñ-Ô-ðVð VÝ47Ð8RÑ4SÔ4SðVð Vñô ð ð
 $Ð#r   c                 ó^   — | j         j        }| j        j        }t          ||z   dgz   ¦  «        S )NÚbbox)r0   Úmodel_input_namesr/   r   )r.   Útokenizer_input_namesÚimage_processor_input_namess      r   rV   zUdopProcessor.model_input_names    s5   € à $¤Ô @ÐØ&*Ô&:Ô&LÐ#åÐ)Ð,GÑGÈ6È(ÑRÑSÔSÐSr   )NN)r   r   r   Ú__doc__r-   r   r   r   r   r   r
   r   r   rN   rG   ÚpropertyrV   Ú__classcell__)r1   s   @r   r*   r*   4   sõ   ø€ € € € € ðð ð5ð 5ð 5ð 5ð 5ð ð %)ØZ^ðFð Fà˜TÑ!ðFð Ð+Ñ+¨d°9¬oÑ=ÀÐEVÔ@WÑWðFð Ð,Ô-ð	Fð
 
ðFð Fð Fñ „^ðFðR$ð $ð $ð ðTð Tñ „XðTð Tð Tð Tð Tr   r*   N)rY   Útransformersr   Úimage_processing_utilsr   Úimage_utilsr   Úprocessing_utilsr   r   r	   r
   Útokenization_utils_baser   r   Úutilsr   Ú
get_loggerr   Úloggerr   r   r*   Ú__all__r   r   r   ú<module>re      sa  ððð ð !Ð  Ð  Ð  Ð  Ð  à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø %Ð %Ð %Ð %Ð %Ð %Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ #Ð #Ð #Ð #Ð #Ð #ð 
ˆÔ	˜HÑ	%Ô	%€ð:ð :ð :ð :ð :�Z uð :ñ :ô :ð :ð
ð ð ð ð Ð*°%ð ñ ô ð ð" ðpTð pTð pTð pTð pT�Nñ pTô pTñ „ðpTðf Ð
€€€r   