code: 
  
  
  
  from typing import Dict, List, Optional, Union
  
  import numpy as np
  
  from ...image_processing_utils import BaseImageProcessor, BatchFeature, get_size_dict
  from ...image_transforms import normalize, rescale, resize, to_channel_dimension_format
  from ...image_utils import (
      IMAGENET_STANDARD_MEAN,
      IMAGENET_STANDARD_STD,
      ChannelDimension,
      ImageInput,
      PILImageResampling,
      make_list_of_images,
      to_numpy_array,
      valid_images,
  )
  from ...utils import TensorType, logging
  
  
  lowerCAmelCase__	:  int 		=logging.get_logger(__name__)
  
  class      UpperCAmelCase_						(     UpperCamelCase_ ):
  
  						'''simple docstring'''
  
  
  
  
  						UpperCamelCase__    :				Tuple       						=						['''pixel_values''']
  
  
  
  
  
  
  						def __init__(					self   ,							_A = True   ,							_A = None   ,							_A = PILImageResampling.BILINEAR   ,							_A = True   ,							_A = 1 / 255   ,							_A = True   ,							_A = None   ,							_A = None   ,							**_A   ,							):
  
  
  
  
  
  
  
  													'''simple docstring'''
  
  													super().__init__(**__UpperCamelCase	)
  													__SCREAMING_SNAKE_CASE								=      size if size is not None else {'''height''': 224, '''width''': 224}
  													__SCREAMING_SNAKE_CASE								=      get_size_dict(__UpperCamelCase	)
  													__SCREAMING_SNAKE_CASE								=      do_resize
  													__SCREAMING_SNAKE_CASE								=      do_rescale
  													__SCREAMING_SNAKE_CASE								=      do_normalize
  													__SCREAMING_SNAKE_CASE								=      size
  													__SCREAMING_SNAKE_CASE								=      resample
  													__SCREAMING_SNAKE_CASE								=      rescale_factor
  													__SCREAMING_SNAKE_CASE								=      image_mean if image_mean is not None else IMAGENET_STANDARD_MEAN
  													__SCREAMING_SNAKE_CASE								=      image_std if image_std is not None else IMAGENET_STANDARD_STD
  
  
  
  
  
  
  						def  _A			(					self   ,							_A   ,							_A   ,							_A = PILImageResampling.BILINEAR   ,							_A = None   ,							**_A   ,							):
  
  
  
  
  
  
  
  													'''simple docstring'''
  
  													__SCREAMING_SNAKE_CASE								=      get_size_dict(__UpperCamelCase	)
  													if "height" not in size or "width" not in size:
  																				raise ValueError(f"""The `size` dictionary must contain the keys `height` and `width`. Got {size.keys()}"""	)
  													return resize(
  													    __UpperCamelCase   ,							size=(size['height'], size['width'])   ,							resample=__UpperCamelCase   ,							data_format=__UpperCamelCase   ,							**__UpperCamelCase	)
  
  
  
  
  
  
  						def  _A			(					self   ,							_A   ,							_A   ,							_A = None   ,							**_A	):
  
  
  
  
  
  
  
  													'''simple docstring'''
  
  													return rescale(__UpperCamelCase   ,							scale=__UpperCamelCase   ,							data_format=__UpperCamelCase   ,							**__UpperCamelCase	)
  
  
  
  
  
  
  						def  _A			(					self   ,							_A   ,							_A   ,							_A   ,							_A = None   ,							**_A   ,							):
  
  
  
  
  
  
  
  													'''simple docstring'''
  
  													return normalize(__UpperCamelCase   ,							mean=__UpperCamelCase   ,							std=__UpperCamelCase   ,							data_format=__UpperCamelCase   ,							**__UpperCamelCase	)
  
  
  
  
  
  
  						def  _A			(					self   ,							_A   ,							_A = None   ,							_A = None   ,							_A = None   ,							_A = None   ,							_A = None   ,							_A = None   ,							_A = None   ,							_A = None   ,							_A = None   ,							_A = ChannelDimension.FIRST   ,							**_A   ,							):
  
  
  
  
  
  
  
  													'''simple docstring'''
  
  													__SCREAMING_SNAKE_CASE								=      do_resize if do_resize is not None else self.do_resize
  													__SCREAMING_SNAKE_CASE								=      do_rescale if do_rescale is not None else self.do_rescale
  													__SCREAMING_SNAKE_CASE								=      do_normalize if do_normalize is not None else self.do_normalize
  													__SCREAMING_SNAKE_CASE								=      resample if resample is not None else self.resample
  													__SCREAMING_SNAKE_CASE								=      rescale_factor if rescale_factor is not None else self.rescale_factor
  													__SCREAMING_SNAKE_CASE								=      image_mean if image_mean is not None else self.image_mean
  													__SCREAMING_SNAKE_CASE								=      image_std if image_std is not None else self.image_std
  
  													__SCREAMING_SNAKE_CASE								=      size if size is not None else self.size
  													__SCREAMING_SNAKE_CASE								=      get_size_dict(__UpperCamelCase	)
  
  													__SCREAMING_SNAKE_CASE								=      make_list_of_images(__UpperCamelCase	)
  
  													if not valid_images(__UpperCamelCase	):
  																				raise ValueError(
  																				    'Invalid image type. Must be of type PIL.Image.Image, numpy.ndarray, '
  																				    'torch.Tensor, tf.Tensor or jax.ndarray.'	)
  
  													if do_resize and size is None:
  																				raise ValueError('Size must be specified if do_resize is True.'	)
  
  													if do_rescale and rescale_factor is None:
  																				raise ValueError('Rescale factor must be specified if do_rescale is True.'	)
  
  													# All transformations expect numpy arrays.
  													__SCREAMING_SNAKE_CASE								=      [to_numpy_array(__UpperCamelCase	) for image in images]
  
  													if do_resize:
  																				__SCREAMING_SNAKE_CASE								=      [self.resize(image=__UpperCamelCase   ,							size=__UpperCamelCase   ,							resample=__UpperCamelCase	) for image in images]
  
  													if do_rescale:
  																				__SCREAMING_SNAKE_CASE								=      [self.rescale(image=__UpperCamelCase   ,							scale=__UpperCamelCase	) for image in images]
  
  													if do_normalize:
  																				__SCREAMING_SNAKE_CASE								=      [self.normalize(image=__UpperCamelCase   ,							mean=__UpperCamelCase   ,							std=__UpperCamelCase	) for image in images]
  
  													__SCREAMING_SNAKE_CASE								=      [to_channel_dimension_format(__UpperCamelCase   ,							__UpperCamelCase	) for image in images]
  
  													__SCREAMING_SNAKE_CASE								=      {'''pixel_values''': images}
  													return BatchFeature(data=__UpperCamelCase   ,							tensor_type=__UpperCamelCase	)
  
  
  
  
  
  
  
style_context: 
  
  
  
  import unittest
  
  from cer import CER
  
  
  lowerCAmelCase__	:  Dict 		=CER()
  
  class      UpperCAmelCase_						(     unittest.TestCase ):
  
  						'''simple docstring'''
  
  
  
  
  						def  _A			(					self	):
  
  
  
  
  
  
  
  													'''simple docstring'''
  
  													__SCREAMING_SNAKE_CASE								=      ['White House']
  													__SCREAMING_SNAKE_CASE								=      ['white house']
  													# S = 2, D = 0, I = 0, N = 11, CER = 2 / 11
  													__SCREAMING_SNAKE_CASE								=      cer.compute(predictions=_A   ,							references=_A	)
  													self.assertTrue(abs(char_error_rate - 0.1_8_1_8_1_8_1_8_1_8	) < 1e-6	)
  
  
  
  
  
  
  						def  _A			(					self	):
  
  
  
  
  
  
  
  													'''simple docstring'''
  
  													__SCREAMING_SNAKE_CASE								=      ['were wolf']
  													__SCREAMING_SNAKE_CASE								=      ['werewolf']
  													# S = 0, D = 0, I = 1, N = 9, CER = 1 / 9
  													__SCREAMING_SNAKE_CASE								=      cer.compute(predictions=_A   ,							references=_A	)
  													self.assertTrue(abs(char_error_rate - 0.1_1_1_1_1_1_1	) < 1e-6	)
  
  													__SCREAMING_SNAKE_CASE								=      ['werewolf']
  													__SCREAMING_SNAKE_CASE								=      ['weae     wolf']
  													# S = 1, D = 1, I = 0, N = 8, CER = 0.25
  													__SCREAMING_SNAKE_CASE								=      cer.compute(predictions=_A   ,							references=_A	)
  													self.assertTrue(abs(char_error_rate - 0.2_5	) < 1e-6	)
  
  													# consecutive whitespaces case 1
  													__SCREAMING_SNAKE_CASE								=      ['were wolf']
  													__SCREAMING_SNAKE_CASE								=      ['were               wolf']
  													# S = 0, D = 0, I = 0, N = 9, CER = 0
  													__SCREAMING_SNAKE_CASE								=      cer.compute(predictions=_A   ,							references=_A	)
  													self.assertTrue(abs(char_error_rate - 0.0	) < 1e-6	)
  
  													# consecutive whitespaces case 2
  													__SCREAMING_SNAKE_CASE								=      ['were   wolf']
  													__SCREAMING_SNAKE_CASE								=      ['were               wolf']
  													# S = 0, D = 0, I = 0, N = 9, CER = 0
  													__SCREAMING_SNAKE_CASE								=      cer.compute(predictions=_A   ,							references=_A	)
  													self.assertTrue(abs(char_error_rate - 0.0	) < 1e-6	)
  
  
  
  
  
  
  						def  _A			(					self	):
  
  
  
  
  
  
  
  													'''simple docstring'''
  
  													__SCREAMING_SNAKE_CASE								=      ['werewolf']
  													__SCREAMING_SNAKE_CASE								=      ['weaewolf']
  													# S = 1, D = 0, I = 0, N = 8, CER = 0.125
  													__SCREAMING_SNAKE_CASE								=      cer.compute(predictions=_A   ,							references=_A	)
  													self.assertTrue(abs(char_error_rate - 0.1_2_5	) < 1e-6	)
  
  
  
  
  
  
  						def  _A			(					self	):
  
  
  
  
  
  
  
  													'''simple docstring'''
  
  													__SCREAMING_SNAKE_CASE								=      ['werewolf']
  													__SCREAMING_SNAKE_CASE								=      ['wereawolf']
  													# S = 0, D = 1, I = 0, N = 8, CER = 0.125
  													__SCREAMING_SNAKE_CASE								=      cer.compute(predictions=_A   ,							references=_A	)
  													self.assertTrue(abs(char_error_rate - 0.1_2_5	) < 1e-6	)
  
  
  
  
  
  
  						def  _A			(					self	):
  
  
  
  
  
  
  
  													'''simple docstring'''
  
  													__SCREAMING_SNAKE_CASE								=      ['werewolf']
  													__SCREAMING_SNAKE_CASE								=      ['wereolf']
  													# S = 0, D = 0, I = 1, N = 8, CER = 0.125
  													__SCREAMING_SNAKE_CASE								=      cer.compute(predictions=_A   ,							references=_A	)
  													self.assertTrue(abs(char_error_rate - 0.1_2_5	) < 1e-6	)
  
  
  
  
  
  
  						def  _A			(					self	):
  
  
  
  
  
  
  
  													'''simple docstring'''
  
  													__SCREAMING_SNAKE_CASE								=      ['werewolf']
  													__SCREAMING_SNAKE_CASE								=      cer.compute(predictions=_A   ,							references=_A	)
  													self.assertEqual(_A   ,							0.0	)
  
  
  
  
  
  
  						def  _A			(					self	):
  
  
  
  
  
  
  
  													'''simple docstring'''
  
  													__SCREAMING_SNAKE_CASE								=      ['werewolf', 'I am your father']
  													__SCREAMING_SNAKE_CASE								=      cer.compute(predictions=_A   ,							references=_A	)
  													self.assertEqual(_A   ,							0.0	)
  
  													__SCREAMING_SNAKE_CASE								=      ['werewolf', 'I am your father', 'doge']
  													__SCREAMING_SNAKE_CASE								=      ['werxwolf', 'I       am your father', 'doge']
  													# S = 1, D = 0, I = 0, N = 28, CER = 1 / 28
  													__SCREAMING_SNAKE_CASE								=      cer.compute(predictions=_A   ,							references=_A	)
  													self.assertTrue(abs(char_error_rate - 0.0_3_5_7_1_4_2_8	) < 1e-6	)
  
  
  
  
  
  
  						def  _A			(					self	):
  
  
  
  
  
  
  
  													'''simple docstring'''
  
  													__SCREAMING_SNAKE_CASE								=      ['My hovercraft', 'is full of eels']
  													__SCREAMING_SNAKE_CASE								=      ['My hovercraft is full', ' of eels']
  													# S = 0, D = 0, I = 2, N = 28, CER = 2 / 28
  													# whitespace at the front of " of eels" will be strip during preporcessing
  													# so need to insert 2 whitespaces
  													__SCREAMING_SNAKE_CASE								=      cer.compute(predictions=_A   ,							references=_A   ,							concatenate_texts=_A	)
  													self.assertTrue(abs(char_error_rate - 0.0_7_1_4_2_8	) < 1e-6	)
  
  
  
  
  
  
  						def  _A			(					self	):
  
  
  
  
  
  
  
  													'''simple docstring'''
  
  													__SCREAMING_SNAKE_CASE								=      ['我能吞下玻璃而不伤身体']
  													__SCREAMING_SNAKE_CASE								=      [' 能吞虾玻璃而 不霜身体啦']
  													# S = 3, D = 2, I = 0, N = 11, CER = 5 / 11
  													__SCREAMING_SNAKE_CASE								=      cer.compute(predictions=_A   ,							references=_A	)
  													self.assertTrue(abs(char_error_rate - 0.4_5_4_5_4_5_4_5_4_5	) < 1e-6	)
  
  													__SCREAMING_SNAKE_CASE								=      ['我能吞下玻璃', '而不伤身体']
  													__SCREAMING_SNAKE_CASE								=      ['我    能 吞 下 玻 璃', '而不伤身体']
  													# S = 0, D = 5, I = 0, N = 11, CER = 5 / 11
  													__SCREAMING_SNAKE_CASE								=      cer.compute(predictions=_A   ,							references=_A	)
  													self.assertTrue(abs(char_error_rate - 0.4_5_4_5_4_5_4_5_4_5_4_5	) < 1e-6	)
  
  													__SCREAMING_SNAKE_CASE								=      ['我能吞下玻璃而不伤身体']
  													__SCREAMING_SNAKE_CASE								=      cer.compute(predictions=_A   ,							references=_A	)
  													self.assertFalse(_A   ,							0.0	)
  
  
  
  
  
  
  						def  _A			(					self	):
  
  
  
  
  
  
  
  													'''simple docstring'''
  
  													__SCREAMING_SNAKE_CASE								=      ['']
  													__SCREAMING_SNAKE_CASE								=      ['Hypothesis']
  													with self.assertRaises(_A	):
  																				cer.compute(predictions=_A   ,							references=_A	)
  
  
  if __name__ == "__main__":
  			unittest.main()
  
  
  
  
  
  
  