

from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_sentencepiece_available,
    is_speech_available,
    is_torch_available,
)


lowerCAmelCase							:  str   	=						{
    """configuration_trocr""": ["""TROCR_PRETRAINED_CONFIG_ARCHIVE_MAP""", """TrOCRConfig"""],
    """processing_trocr""": ["""TrOCRProcessor"""],
}


try:
						if not is_torch_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						lowerCAmelCase							:  List[str]   	=						[
						    """TROCR_PRETRAINED_MODEL_ARCHIVE_LIST""",
						    """TrOCRForCausalLM""",
						    """TrOCRPreTrainedModel""",
						]


if TYPE_CHECKING:
						from .configuration_trocr import TROCR_PRETRAINED_CONFIG_ARCHIVE_MAP, TrOCRConfig
						from .processing_trocr import TrOCRProcessor

						try:
												if not is_torch_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_trocr import TROCR_PRETRAINED_MODEL_ARCHIVE_LIST, TrOCRForCausalLM, TrOCRPreTrainedModel

else:
						import sys

						lowerCAmelCase							:  Union[str, Any]   	=						_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)













import numpy as np

from transformers import Pipeline





def lowerCAmelCase__(__snake_case							)				->      Tuple:







	'''simple docstring'''







	lowerCamelCase__								=		np.max(__snake_case       ,axis=-1       ,keepdims=__snake_case							)
	lowerCamelCase__								=		np.exp(outputs - maxes							)
	return shifted_exp / shifted_exp.sum(axis=-1       ,keepdims=__snake_case							)






class 					__A    (    lowerCAmelCase ):

			'''simple docstring'''







			def 		__lowerCamelCase				(    self       ,  **__lowerCAmelCase							):



				'''simple docstring'''







				lowerCamelCase__								=		{}
				if "second_text" in kwargs:
					lowerCamelCase__								=		kwargs['''second_text''']
				return preprocess_kwargs, {}, {}





			def 		__lowerCamelCase				(    self       ,  __lowerCAmelCase       ,  __lowerCAmelCase=None							):



				'''simple docstring'''







				return self.tokenizer(__lowerCAmelCase       ,  text_pair=__lowerCAmelCase       ,  return_tensors=self.framework							)





			def 		__lowerCamelCase				(    self       ,  __lowerCAmelCase							):



				'''simple docstring'''







				return self.model(**__lowerCAmelCase							)





			def 		__lowerCamelCase				(    self       ,  __lowerCAmelCase							):



				'''simple docstring'''







				lowerCamelCase__								=		model_outputs.logits[0].numpy()
				lowerCamelCase__								=		softmax(__lowerCAmelCase							)

				lowerCamelCase__								=		np.argmax(__lowerCAmelCase							)
				lowerCamelCase__								=		self.model.config.idalabel[best_class]
				lowerCamelCase__								=		probabilities[best_class].item()
				lowerCamelCase__								=		logits.tolist()
				return {"label": label, "score": score, "logits": logits}



