Ë
    ÛÓ^j§  ã                   ó´   — 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y)z
Processor class for Donut.
é    Né   )Ú
ImageInput)ÚProcessingKwargsÚProcessorMixinÚUnpack)ÚPreTokenizedInputÚ	TextInput)Úauto_docstringÚloggingc                   ó   — e Zd Zi Zy)ÚDonutProcessorKwargsN)Ú__name__Ú
__module__Ú__qualname__Ú	_defaults© ó    úu/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/donut/processing_donut.pyr   r      s   „ Ø�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                 ó&   •— t         ‰| �  ||«       y )N)ÚsuperÚ__init__)ÚselfÚimage_processorÚ	tokenizerÚkwargsÚ	__class__s       €r   r   zDonutProcessor.__init__#   s   ø€ Ü‰Ñ˜¨)Õ4r   ÚimagesÚtextr   c                 ó<  — |€|€t        d«      ‚ | j                  t        fd| j                  j                  i|¤Ž}|� | j
                  |fi |d   ¤Ž}|�-|�|d   j                  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à*˜×*Ñ*Ü ñ
à"&§.¡.×"<Ñ"<ð
ð ñ
ˆð ÐØ)�T×)Ñ)¨&ÑS°MÀ/Ñ4RÑSˆFØÐØÐ!Ø˜mÑ,×7Ñ7Ð8LÈeÔTØ&˜Ÿ™ tÑL¨}¸]Ñ/KÑLˆIàˆ<ØˆMØˆ^ØÐà(¨Ñ5ˆF�8ÑØ"+¨KÑ"8ˆF�;ÑØˆMr   c                 óN   — | 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Ñ&LÐ#äÐ/°;ÀÐ2IÑIÓJÐJr   c                 ó  — |€| j                   j                  «       }i }|�r[t        j                  d|t        j                  «      }|€�n2||j                  «       d }d|vr�n|d|j                  d«      dz    }|t        d«      t        d«        }t        j                  |«      }t        j                  d|› d�|t        j                  «      }	|	€|j                  |d«      }�n’|	j                  «       }	t        j                  |«      }
t        j                  |	«      }t        j                  |
› d|› �|t        j                  t        j                  z  «      }|�Ê|j                  d«      j                  «       }d|v r3d|v r/| j                  |d|¬	«      }|r�t        |«      dk(  r|d
   }|||<   ntg ||<   |j                  d«      D ]?  }|j                  «       }||v r|d
   dk(  r|dd dk(  r|dd }||   j                  |«       ŒA t        ||   «      dk(  r||   d
   ||<   ||j!                  |	«      t        |	«      z   d j                  «       }|dd dk(  r|g| j                  |dd d|¬	«      z   S |r�Œ[|r|r|gS |S |rg S 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   s­  € ð ÐØŸ.™.×8Ñ8Ó:ˆKàˆâä Ÿi™i¨°¼¿¹ÓFˆOØÐ&ÙØ  ×!6Ñ!6Ó!8Ð!:Ð;ˆKØ˜+Ñ%ÙØ%Ð&B¨×(9Ñ(9¸#Ó(>ÀÑ(BÐCˆKØœc %›j¬C°«H¨9Ð5ˆCÜŸ)™) C›.ˆKäŸ	™	 T¨+¨°aÐ"8¸&Ä"Ç-Á-ÓPˆIØÐ ØŸ™¨°RÓ8’à%ŸO™OÓ-�	Ü&(§i¡i°Ó&<Ð#Ü$&§I¡I¨iÓ$8Ð!ÜŸ)™)Ø*Ð+¨5Ð1BÐ0CÐDÀfÌbÏmÉmÔ^`×^gÑ^gÑNgó�ð Ð&Ø%Ÿm™m¨AÓ.×4Ñ4Ó6�GØ Ñ(¨W¸Ñ-?Ø $§¡°ÈÐZe Ó f˜Ù Ü" 5›z¨QšØ(-¨a© Ø*/˜F 3šKà&(˜˜s™Ø$+§M¡M°)Ó$<ò 5˜DØ#'§:¡:£<˜DØ# {Ñ2°t¸A±wÀ#²~È$ÈrÈsÈ)ÐW[ÒJ[Ø'+¨A¨b z Ø" 3™K×.Ñ.¨tÕ4ð	5ô
 ˜v c™{Ó+¨qÒ0Ø*0°©+°a©.˜F 3™Kà §¡¨IÓ 6¼¸Y»Ñ GÐ IÐJ×PÑPÓR�Ø˜"˜1�: Ò*Ø"˜8 d§o¡o°f¸Q¸R°jÐQUÐcn oÓ&oÑoÐoóU ñX Ù-�F�8Ð9°6Ð9á'�2ÐF¨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ð ð %)ØGKñà˜TÑ!ðð �D˜‘I‰o 	Ñ)Ð,=Ñ=ÀÑDðð Ð-Ñ.ò	ó ðð> ñKó ðK÷
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      sm   ðñó 
å %ß HÑ Hß Cß ,ôÐ+°5õ ð 
ˆ×	Ñ	˜HÓ	%€ð ôbG�^ó bGó ðbGðJ Ð
�r   