§
    ‚Štj§  ã                   óÄ   — d Z ddlZddlmZ ddlmZmZmZ ddlm	Z	m
Z
 ddlmZmZ  G d„ d	ed
¬¦  «        Z ej        e¦  «        Ze G d„ de¦  «        ¦   «         ZdgZdS )z
Processor class for Donut.
é    Né   )Ú
ImageInput)ÚProcessingKwargsÚProcessorMixinÚUnpack)ÚPreTokenizedInputÚ	TextInput)Úauto_docstringÚloggingc                   ó   — e Zd Zi ZdS )ÚDonutProcessorKwargsN)Ú__name__Ú
__module__Ú__qualname__Ú	_defaults© ó    úh/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/donut/processing_donut.pyr   r      s   € € € € € Ø€I€I€Ir   r   F)Útotalc            	       óž   ‡ — e Zd Zd
ˆ fd„	Ze	 	 d
dedz  deee         z  ez  e	z  dz  de
e         fd„¦   «         Zed„ ¦   «         Zdd	„Zˆ xZS )ÚDonutProcessorNc                 óL   •— t          ¦   «                              ||¦  «         d S )N)ÚsuperÚ__init__)ÚselfÚimage_processorÚ	tokenizerÚkwargsÚ	__class__s       €r   r   zDonutProcessor.__init__#   s#   ø€ Ý‰Œ×Ò˜¨)Ñ4Ô4Ð4Ð4Ð4r   ÚimagesÚtextr   c                 ó:  — |€|€t          d¦  «        ‚ | j        t          fd| j        j        i|¤Ž}|� | j        |fi |d         ¤Ž}|�2|�|d                              dd¦  «          | j        |fi |d         ¤Ž}|€|S |€|S |d         |d<   |d         |d<   |S )	NzBYou need to specify either an `images` or `text` input to process.Útokenizer_init_kwargsÚimages_kwargsÚtext_kwargsÚadd_special_tokensFÚ	input_idsÚlabels)Ú
ValueErrorÚ_merge_kwargsr   r   Úinit_kwargsr   Ú
setdefault)r   r    r!   r   Úoutput_kwargsÚinputsÚ	encodingss          r   Ú__call__zDonutProcessor.__call__&   sô   € ð ˆ>˜d˜lÝÐaÑbÔbÐbà*˜Ô*Ý ð
ð 
à"&¤.Ô"<ð
ð ð
ð 
ˆð ÐØ)�TÔ)¨&ÐSÐS°MÀ/Ô4RÐSÐSˆFØÐØÐ!Ø˜mÔ,×7Ò7Ð8LÈeÑTÔTÐTØ&˜œ tÐLÐL¨}¸]Ô/KÐLÐLˆIàˆ<ØˆMØˆ^ØÐà(¨Ô5ˆF�8ÑØ"+¨KÔ"8ˆF�;ÑØˆMr   c                 óB   — | j         j        }t          |ddgz   ¦  «        S )Nr'   r(   )r   Úmodel_input_namesÚlist)r   Úimage_processor_input_namess     r   r2   z DonutProcessor.model_input_namesF   s'   € à&*Ô&:Ô&LÐ#åÐ/°;ÀÐ2IÑIÑJÔJÐJr   Fc                 óø  — |€| j                              ¦   «         }i }|�rÊt          j        d|t          j        ¦  «        }|€�n¦||                     ¦   «         d…         }d|vr�n„|d|                     d¦  «        dz   …         }|t          d¦  «        t          d¦  «         …         }t          j        |¦  «        }t          j        d|› d�|t          j        ¦  «        }	|	€| 	                    |d¦  «        }�nê|	 
                    ¦   «         }	t          j        |¦  «        }
t          j        |	¦  «        }t          j        |
› d|› �|t          j        t          j        z  ¦  «        }|��| 
                    d¦  «                             ¦   «         }d|v r?d|v r;|                      |d|¬	¦  «        }|r t          |¦  «        dk    r|d
         }|||<   nžg ||<   |                     d¦  «        D ]Y}|                     ¦   «         }||v r$|d
         dk    r|dd…         dk    r
|dd…         }||                              |¦  «         ŒZt          ||         ¦  «        dk    r||         d
         ||<   ||                     |	¦  «        t          |	¦  «        z   d…                              ¦   «         }|dd…         dk    r$|g|                      |dd…         d|¬	¦  «        z   S |�°Ê|r|r|gn|S |rg nd|iS )zS
        Convert a (generated) token sequence into an ordered JSON format.
        Nz<s_ú>é   z</s_Ú z(.*?)T)Úis_inner_valueÚadded_vocabr   z<sep/>ú<éþÿÿÿz/>é   Útext_sequence)r   Úget_added_vocabÚreÚsearchÚ
IGNORECASEÚstartÚindexÚlenÚescapeÚreplaceÚgroupÚDOTALLÚstripÚ
token2jsonÚsplitÚappendÚfind)r   Útokensr9   r:   ÚoutputÚpotential_startÚstart_tokenÚkeyÚkey_escapedÚ	end_tokenÚstart_token_escapedÚend_token_escapedÚcontentÚvalueÚleafs                  r   rK   zDonutProcessor.token2jsonL   s0  € ð ÐØœ.×8Ò8Ñ:Ô:ˆKàˆàñ *	på œi¨°½¼ÑFÔFˆOØÐ&ÙØ  ×!6Ò!6Ñ!8Ô!8Ð!:Ð!:Ô;ˆKØ˜+Ð%Ð%ÙØ%Ð&B¨×(9Ò(9¸#Ñ(>Ô(>ÀÑ(BÐ&BÔCˆKØ�c %™jœj­C°©H¬H¨9Ð4Ô5ˆCÝœ) C™.œ.ˆKåœ	Ð"8¨+Ð"8Ð"8Ð"8¸&Å"Ä-ÑPÔPˆIØÐ ØŸš¨°RÑ8Ô8�‘à%ŸOšOÑ-Ô-�	Ý&(¤i°Ñ&<Ô&<Ð#Ý$&¤I¨iÑ$8Ô$8Ð!Ýœ)Ø*ÐDÐDÐ1BÐDÐDÀfÍbÌmÕ^`Ô^gÑNgñô �ð Ñ&Ø%Ÿmšm¨AÑ.Ô.×4Ò4Ñ6Ô6�GØ Ð(Ð(¨W¸Ð-?Ð-?Ø $§¢°ÈÐZe Ñ fÔ f˜Ø ð 0Ý" 5™zœz¨Qš˜Ø(-¨a¬ Ø*/˜F 3™Køà&(˜˜s™Ø$+§M¢M°)Ñ$<Ô$<ð 5ð 5˜DØ#'§:¢:¡<¤<˜DØ# {Ð2Ð2°t¸A´wÀ#²~°~È$ÈrÈsÈsÌ)ÐW[ÒJ[ÐJ[Ø'+¨A¨b¨D¤z Ø" 3œK×.Ò.¨tÑ4Ô4Ð4Ð4Ý˜v cœ{Ñ+Ô+¨qÒ0Ð0Ø*0°¬+°a¬.˜F 3™Kà §¢¨IÑ 6Ô 6½¸Y¹¼Ñ GÐ IÐ IÔJ×PÒPÑRÔR�Ø˜"˜1˜"”: Ò*Ð*Ø"˜8 d§o¢o°f¸Q¸R¸R´jÐQUÐcn oÑ&oÔ&oÑoÐoðU ñ *	pðX ð 	GØ-Ð9�F�8�8°6Ð9à'ÐF�2�2¨o¸vÐ-FÐFr   )NN)FN)r   r   r   r   r
   r   Ústrr3   r	   r   r   r   r0   Úpropertyr2   rK   Ú__classcell__)r   s   @r   r   r   !   sã   ø€ € € € € ð5ð 5ð 5ð 5ð 5ð 5ð ð %)ØGKðð à˜TÑ!ðð �D˜”I‰o 	Ñ)Ð,=Ñ=ÀÑDðð Ð-Ô.ð	ð ð ñ „^ðð> ðKð Kñ „XðKð
8Gð 8Gð 8Gð 8Gð 8Gð 8Gð 8Gð 8Gr   r   )Ú__doc__r@   Úimage_utilsr   Úprocessing_utilsr   r   r   Útokenization_utils_baser   r	   Úutilsr
   r   r   Ú
get_loggerr   Úloggerr   Ú__all__r   r   r   ú<module>rf      s  ððð ð 
€	€	€	à %Ð %Ð %Ð %Ð %Ð %Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð Ð+°5ð ñ ô ð ð 
ˆÔ	˜HÑ	%Ô	%€ð ðbGð bGð bGð bGð bG�^ñ bGô bGñ „ðbGðJ Ð
€€€r   