# MGP-STR

## Обзор

Модель MGP-STR была предложена в работе [Multi-Granularity Prediction for Scene Text Recognition](https://huggingface.co/papers/2209.03592) (Peng Wang, Cheng Da, Cong Yao). MGP-STR — это концептуально **простая**, но **мощная** модель распознавания текста в сценах (STR), построенная на основе [Vision Transformer (ViT)](vit). Для интеграции лингвистических знаний предложена стратегия Multi-Granularity Prediction (MGP), которая неявно вводит информацию из языковой модальности в модель.

Аннотация из статьи следующая:

*Распознавание текста в сценах (STR) на протяжении многих лет является активной областью исследований в области компьютерного зрения. Для решения этой сложной задачи последовательно предлагались многочисленные инновационные методы, а в последнее время встраивание лингвистических знаний в модели STR стало заметным трендом. В данной работе мы черпаем вдохновение из недавних достижений в области Vision Transformer (ViT), чтобы построить концептуально простую, но мощную визуальную модель STR, основанную на ViT. Эта модель превосходит предыдущие передовые модели распознавания текста в сценах, включая как чисто визуальные модели, так и методы с языковым дополнением. Для интеграции лингвистических знаний мы дополнительно предлагаем стратегию Multi-Granularity Prediction, которая неявно вводит информацию из языковой модальности в модель: в пространство вывода, помимо традиционного представления на уровне символов, вводятся представления субслов (BPE и WordPiece), широко используемые в NLP, при этом независимая языковая модель (LM) не используется. Полученный алгоритм (называемый MGP-STR) способен поднять уровень производительности STR на еще более высокий уровень. В частности, он достигает средней точности распознавания 93,35% на стандартных бенчмарках.*

<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/mgp_str_architecture.png"
alt="drawing" width="600"/>

 Архитектура MGP-STR. Взята из оригинальной статьи.

MGP-STR обучается на двух синтетических наборах данных [MJSynth](http://www.robots.ox.ac.uk/~vgg/data/text/) (MJ) и [SynthText](http://www.robots.ox.ac.uk/~vgg/data/scenetext/) (ST) без дообучения на других наборах. Модель демонстрирует наилучшие результаты на шести стандартных бенчмарках латинского сценического текста, включая три набора с обычным текстом (IC13, SVT, IIIT) и три с нерегулярным (IC15, SVTP, CUTE). Модель была предоставлена пользователем [yuekun](https://huggingface.co/yuekun). Исходный код доступен [здесь](https://github.com/AlibabaResearch/AdvancedLiterateMachinery/tree/main/OCR/MGP-STR).

## Пример инференса

[MgpstrModel](/docs/transformers/main/ru/model_doc/mgp-str#transformers.MgpstrModel) принимает на вход изображения и генерирует три типа предсказаний, представляющих текстовую информацию с различной степенью детализации. Эти три типа предсказаний объединяются для получения итогового результата.

Класс [ViTImageProcessor](/docs/transformers/main/ru/model_doc/vit#transformers.ViTImageProcessor) отвечает за предобработку входного изображения, а [MgpstrTokenizer](/docs/transformers/main/ru/model_doc/mgp-str#transformers.MgpstrTokenizer) декодирует сгенерированные токены символов в целевую строку. [MgpstrProcessor](/docs/transformers/main/ru/model_doc/mgp-str#transformers.MgpstrProcessor) объединяет [ViTImageProcessor](/docs/transformers/main/ru/model_doc/vit#transformers.ViTImageProcessor) и [MgpstrTokenizer](/docs/transformers/main/ru/model_doc/mgp-str#transformers.MgpstrTokenizer) в единый экземпляр, чтобы извлекать входные признаки и декодировать предсказанные идентификаторы токенов.

- Пошаговое распознавание символов (OCR)

```python
import requests
from PIL import Image

from transformers import MgpstrForSceneTextRecognition, MgpstrProcessor

processor = MgpstrProcessor.from_pretrained('alibaba-damo/mgp-str-base')
model = MgpstrForSceneTextRecognition.from_pretrained('alibaba-damo/mgp-str-base', device_map="auto")

# load a synthetic scene-text image
url = "https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/mgp_str_ticket.png"
image = Image.open(requests.get(url, stream=True).raw).convert("RGB")

pixel_values = processor(images=image, return_tensors="pt").to(model.device).pixel_values
outputs = model(pixel_values)

generated_text = processor.batch_decode(outputs.logits)['generated_text']
```

## MgpstrConfig[[transformers.MgpstrConfig]]

#### transformers.MgpstrConfig[[transformers.MgpstrConfig]]

```python
transformers.MgpstrConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, image_size: list[int] | tuple[int, ...] = (32, 128), patch_size: int | list[int] | tuple[int, int] = 4, num_channels: int = 3, max_token_length: int = 27, num_character_labels: int = 38, num_bpe_labels: int = 50257, num_wordpiece_labels: int = 30522, hidden_size: int = 768, num_hidden_layers: int = 12, num_attention_heads: int = 12, mlp_ratio: float | int = 4.0, qkv_bias: bool = True, distilled: bool = False, layer_norm_eps: float = 1e-05, drop_rate: float | int = 0.0, attn_drop_rate: float | int = 0.0, drop_path_rate: float | int = 0.0, output_a3_attentions: bool = False, initializer_range: float = 0.02)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mgp_str/configuration_mgp_str.py#L24)

**Параметры:**

image_size (`Union[list[int], tuple[int, ...]]`, *необязательный*, по умолчанию `(32, 128)`) : Размер (разрешение) каждого изображения.

patch_size (`Union[int, list[int], tuple[int, int]]`, *необязательный*, по умолчанию `4`) : Размер (разрешение) каждого патча.

num_channels (`int`, *необязательный*, по умолчанию `3`) : Количество входных каналов.

max_token_length (`int`, *необязательный*, по умолчанию 27) : Максимальное количество выходных токенов.

num_character_labels (`int`, *optional*, по умолчанию 38) : Количество классов для character head .

num_bpe_labels (`int`, *необязательный*, по умолчанию 50257) : Количество классов для bpe head .

num_wordpiece_labels (`int`, *optional*, по умолчанию 30522) : Количество классов для wordpiece head .

hidden_size (`int`, *optional*, по умолчанию `768`) : Размерность скрытых представлений.

num_hidden_layers (`int`, *необязательный*, по умолчанию `12`) : Количество скрытых слоев в декодере Transformer.

num_attention_heads (`int`, *необязательный*, по умолчанию `12`) : Количество головок внимания для каждого слоя внимания в декодере Transformer.

mlp_ratio (`Union[float, int]`, *необязательный*, по умолчанию `4.0`) : Соотношение скрытого размера MLP к размеру эмбеддинга.

qkv_bias (`bool`, *необязательный*, по умолчанию `True`) : Добавлять ли смещение (bias) к запросам, ключам и значениям.

distilled (`bool`, *необязательный*, по умолчанию `False`) : Модель содержит токен и головку дистилляции, как в моделях DeiT.

layer_norm_eps (`float`, *необязательный*, по умолчанию `1e-05`) : Значение epsilon, используемое слоями нормализации.

drop_rate (`float`, *optional*, по умолчанию 0.0) : Вероятность dropout для всех полносвязных слоев в эмбеддингах и энкодере.

attn_drop_rate (`float`, *необязательный*, по умолчанию 0.0) : Доля dropout для вероятностей внимания.

drop_path_rate (`Union[float, int]`, *необязательный*, по умолчанию `0.0`) : Коэффициент drop path для слияния патчей.

output_a3_attentions (`bool`, *необязательный*, по умолчанию `False`) : Указывает, должен ли модель возвращать внимания модулей A^3.

initializer_range (`float`, *необязательный*, по умолчанию `0.02`) : Стандартное отклонение truncated_normal_initializer для инициализации всех матриц весов.

Это класс конфигурации для хранения настроек модели Mgp StrModel. Он используется для создания модели Mgp Str в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации [alibaba-damo/mgp-str-base](https://huggingface.co/alibaba-damo/mgp-str-base)

Объекты конфигурации наследуются от [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig) и могут использоваться для управления выводами модели. Подробнее см. в документации [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig).

Пример:

```python
>>> from transformers import MgpstrConfig, MgpstrForSceneTextRecognition

>>> # Initializing a Mgpstr mgp-str-base style configuration
>>> configuration = MgpstrConfig()

>>> # Initializing a model (with random weights) from the mgp-str-base style configuration
>>> model = MgpstrForSceneTextRecognition(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```

## MgpstrTokenizer[[transformers.MgpstrTokenizer]]

#### transformers.MgpstrTokenizer[[transformers.MgpstrTokenizer]]

```python
transformers.MgpstrTokenizer(vocab_file, unk_token = '[GO]', bos_token = '[GO]', eos_token = '[s]', pad_token = '[GO]', **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mgp_str/tokenization_mgp_str.py#L28)

**Параметры:**

vocab_file (`str`) : Путь к файлу словаря.

unk_token (`str`, *необязательный*, по умолчанию `"[GO]"`) : Неизвестный токен. Токен, отсутствующий в словаре, не может быть преобразован в идентификатор и вместо этого заменяется этим токеном.

bos_token (`str`, *необязательный*, по умолчанию `"[GO]"`) : Токен начала последовательности.

eos_token (`str`, *необязательный*, по умолчанию `"[s]"`) : Токен конца последовательности.

pad_token (`str` или `tokenizers.AddedToken`, *необязательный*, по умолчанию `"[GO]"`) : Специальный токен, используемый для приведения массивов токенов к одинаковому размеру в целях батчинга. В дальнейшем он игнорируется механизмами внимания или вычислением функции потерь.

Создайте токенизатор символов MGP-STR.

Этот токенизатор наследуется от [PreTrainedTokenizer](/docs/transformers/main/ru/main_classes/tokenizer#transformers.PythonBackend), который содержит большинство основных методов. Для получения дополнительной информации об этих методах пользователям следует обратиться к этому суперклассу.

#### save_vocabulary[[transformers.MgpstrTokenizer.save_vocabulary]]

```python
save_vocabulary(save_directory: str, filename_prefix: str | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mgp_str/tokenization_mgp_str.py#L89)

## MgpstrProcessor[[transformers.MgpstrProcessor]]

#### transformers.MgpstrProcessor[[transformers.MgpstrProcessor]]

```python
transformers.MgpstrProcessor(image_processor = None, tokenizer = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mgp_str/processing_mgp_str.py#L40)

**Параметры:**

image_processor (`ViTImageProcessor`) : процессор изображений является обязательным входным параметром.

tokenizer (`MgpstrTokenizer`) : Токенизатор является обязательным входным параметром.

Создаёт MgpstrProcessor, который объединяет image processor и tokenizer в единый процессор.

[MgpstrProcessor](/docs/transformers/main/ru/model_doc/mgp-str#transformers.MgpstrProcessor) предоставляет все возможности [ViTImageProcessor](/docs/transformers/main/ru/model_doc/vit#transformers.ViTImageProcessor) и [MgpstrTokenizer](/docs/transformers/main/ru/model_doc/mgp-str#transformers.MgpstrTokenizer). Подробнее см. в [~ViTImageProcessor](/docs/transformers/main/ru/model_doc/vit#transformers.ViTImageProcessor) и [~MgpstrTokenizer](/docs/transformers/main/ru/model_doc/mgp-str#transformers.MgpstrTokenizer).

#### __call__[[transformers.MgpstrProcessor.__call__]]

```python
__call__(text = None, images = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mgp_str/processing_mgp_str.py#L48)

**Параметры:**

text (``) : The sequence or batch of sequences to be encoded. Each sequence can be a string or a list of strings (pretokenized string). If you pass a pretokenized input, set `is_split_into_words=True` to avoid ambiguity with batched inputs.

images (``) : Image to preprocess. Expects a single or batch of images with pixel values ranging from 0 to 255. If passing in images with pixel values between 0 and 1, set `do_rescale=False`.

return_tensors (`str` или [TensorType](/docs/transformers/main/ru/internal/file_utils#transformers.TensorType), *optional*) : Если задано, возвращает тензоры конкретного фреймворка. Допустимые значения:  - `'pt'`: возвращает объекты `torch.Tensor` PyTorch. - `'np'`: возвращает объекты `np.ndarray` NumPy.

#### batch_decode[[transformers.MgpstrProcessor.batch_decode]]

```python
batch_decode(sequences)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mgp_str/processing_mgp_str.py#L56)

**Параметры:**

sequences (`torch.Tensor`) : Список идентификаторов токенизированного входа.

**Возвращает:** `dict[str, any]`

Словарь всех выходов декодированных результатов. generated_text (`list[str]`): Итоговые результаты после слияния char, bpe и wp. scores (`list[float]`): Итоговые оценки после слияния char, bpe и wp. char_preds (`list[str]`): Список предложений, декодированных на уровне символов. bpe_preds (`list[str]`): Список предложений, декодированных с помощью bpe. wp_preds (`list[str]`): Список предложений, декодированных с помощью wp.

Преобразуйте список списков идентификаторов токенов в список строк, вызвав decode.

Этот метод передаёт все свои аргументы в [batch_decode()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.batch_decode) класса PreTrainedTokenizer. Подробности см. в docstring этого метода.

## MgpstrModel[[transformers.MgpstrModel]]

#### transformers.MgpstrModel[[transformers.MgpstrModel]]

```python
transformers.MgpstrModel(config: MgpstrConfig)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mgp_str/modeling_mgp_str.py#L292)

**Параметры:**

config ([MgpstrConfig](/docs/transformers/main/ru/model_doc/mgp-str#transformers.MgpstrConfig)) : Класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

Модель Mgp Str без дополнительных слоёв, выводящая необработанные скрытые состояния.

Эта модель наследуется от [PreTrainedModel](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel). Общие методы, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка головок и т. д.), описаны в документации родительского класса.

Эта модель также является подклассом [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

#### forward[[transformers.MgpstrModel.forward]]

```python
forward(pixel_values: Tensor, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mgp_str/modeling_mgp_str.py#L305)

**Параметры:**

pixel_values (`torch.Tensor` формы `(batch_size, num_channels, image_size, image_size)`) : Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью [ViTImageProcessor](/docs/transformers/main/ru/model_doc/vit#transformers.ViTImageProcessor). Подробности см. в [ViTImageProcessor.__call__()](/docs/transformers/main/ru/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) ([MgpstrProcessor](/docs/transformers/main/ru/model_doc/mgp-str#transformers.MgpstrProcessor) использует [ViTImageProcessor](/docs/transformers/main/ru/model_doc/vit#transformers.ViTImageProcessor) для обработки изображений).

output_attentions (`bool`, *необязательный*) : Нужно ли возвращать тензоры внимания всех слоев внимания. Подробнее см. `attentions` в разделе возвращаемых тензоров.

output_hidden_states (`bool`, *необязательный*) : Нужно ли возвращать скрытые состояния всех слоёв. Подробнее о `hidden_states` в разделе возвращаемых тензоров.

return_dict (`bool`, *необязательный*) : Нужно ли возвращать [ModelOutput](/docs/transformers/main/ru/main_classes/output#transformers.utils.ModelOutput) вместо обычного кортежа.

**Возвращает:** [BaseModelOutput](/docs/transformers/main/ru/main_classes/output#transformers.modeling_outputs.BaseModelOutput) или `tuple(torch.Tensor)`

[BaseModelOutput](/docs/transformers/main/ru/main_classes/output#transformers.modeling_outputs.BaseModelOutput) или кортеж `torch.Tensor` (если передано `return_dict=False` или если `config.return_dict=False`), содержащий различные элементы в зависимости от конфигурации ([MgpstrConfig](/docs/transformers/main/ru/model_doc/mgp-str#transformers.MgpstrConfig)) и входных данных.

Метод [MgpstrModel](/docs/transformers/main/ru/model_doc/mgp-str#transformers.MgpstrModel) forward переопределяет специальный метод `__call__`.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр `Module`, а не эту функцию, поскольку первый выполняет шаги предварительной и постобработки, тогда как второй молча их игнорирует.

- **last_hidden_state** (`torch.Tensor` формы `(batch_size, sequence_length, hidden_size)`) -- Последовательность скрытых состояний на выходе последнего слоя модели.
- **hidden_states** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_hidden_states=True` или когда `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы `(batch_size, sequence_length, hidden_size)`.

  Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
- **attentions** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_attentions=True` или при `config.output_attentions=True`) -- Кортеж `torch.Tensor` (по одному на каждый слой) формы `(batch_size, num_heads, sequence_length, sequence_length)`.

  Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

## MgpstrForSceneTextRecognition[[transformers.MgpstrForSceneTextRecognition]]

#### transformers.MgpstrForSceneTextRecognition[[transformers.MgpstrForSceneTextRecognition]]

```python
transformers.MgpstrForSceneTextRecognition(config: MgpstrConfig)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mgp_str/modeling_mgp_str.py#L347)

**Параметры:**

config ([MgpstrConfig](/docs/transformers/main/ru/model_doc/mgp-str#transformers.MgpstrConfig)) : Класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

Модель-трансформер MGP-STR с тремя классификационными головками наверху (три модуля A^3 и три линейных слоя на выходе кодировщика трансформера) для распознавания текста в сцене (STR).

Эта модель наследуется от [PreTrainedModel](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel). Общие методы, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка головок и т. д.), описаны в документации родительского класса.

Эта модель также является подклассом [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

#### forward[[transformers.MgpstrForSceneTextRecognition.forward]]

```python
forward(pixel_values: Tensor, output_attentions: bool | None = None, output_a3_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mgp_str/modeling_mgp_str.py#L368)

**Параметры:**

pixel_values (`torch.Tensor` формы `(batch_size, num_channels, image_size, image_size)`) : Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью [ViTImageProcessor](/docs/transformers/main/ru/model_doc/vit#transformers.ViTImageProcessor). Подробности см. в [ViTImageProcessor.__call__()](/docs/transformers/main/ru/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) ([MgpstrProcessor](/docs/transformers/main/ru/model_doc/mgp-str#transformers.MgpstrProcessor) использует [ViTImageProcessor](/docs/transformers/main/ru/model_doc/vit#transformers.ViTImageProcessor) для обработки изображений).

output_attentions (`bool`, *необязательный*) : Нужно ли возвращать тензоры внимания всех слоев внимания. Подробнее см. `attentions` в разделе возвращаемых тензоров.

output_a3_attentions (`bool`, *необязательный*) : Возвращать ли тензоры внимания модулей a3. Подробнее о `a3_attentions` см. в разделе возвращаемых тензоров.

output_hidden_states (`bool`, *необязательный*) : Нужно ли возвращать скрытые состояния всех слоёв. Подробнее о `hidden_states` в разделе возвращаемых тензоров.

return_dict (`bool`, *необязательный*) : Нужно ли возвращать [ModelOutput](/docs/transformers/main/ru/main_classes/output#transformers.utils.ModelOutput) вместо обычного кортежа.

**Возвращает:** `MgpstrModelOutput` или `tuple(torch.Tensor)`

Объект `MgpstrModelOutput` или кортеж из `torch.Tensor` (если передано `return_dict=False` или если `config.return_dict=False`), содержащий различные элементы в зависимости от конфигурации ([MgpstrConfig](/docs/transformers/main/ru/model_doc/mgp-str#transformers.MgpstrConfig)) и входных данных.

Метод forward класса [MgpstrForSceneTextRecognition](/docs/transformers/main/ru/model_doc/mgp-str#transformers.MgpstrForSceneTextRecognition) переопределяет специальный метод `__call__`.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр `Module`, а не эту функцию, поскольку первый выполняет шаги предварительной и постобработки, тогда как второй молча их игнорирует.

- **logits** (`tuple(torch.Tensor)` формы `(batch_size, config.num_character_labels)`) — Кортеж `torch.Tensor` (один для вывода символов формы `(batch_size, config.max_token_length, config.num_character_labels)`, + один для вывода bpe формы `(batch_size, config.max_token_length, config.num_bpe_labels)`, + один для вывода wordpiece формы `(batch_size, config.max_token_length, config.num_wordpiece_labels)`).

  Оценки классификации (до SoftMax) для character, bpe и wordpiece.
- **hidden_states** (`tuple[torch.Tensor]`, *необязательный*, возвращается, если передано `output_hidden_states=True` или если `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы `(batch_size, sequence_length, hidden_size)`.

  Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
- **attentions** (`tuple[torch.Tensor]`, *необязательный*, возвращается при передаче `output_attentions=True` или когда `config.output_attentions=True`) -- Кортеж `torch.Tensor` (по одному на каждый слой) формы `(batch_size, num_heads, sequence_length, sequence_length)`.

  Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
- **a3_attentions** (`tuple(torch.Tensor)`, *optional*, returned when `output_a3_attentions=True` is passed or when `config.output_a3_attentions=True`) -- Tuple of `torch.Tensor` (one for the attention of character, + one for the attention of bpe`, + one for the attention of wordpiece) of shape `(batch_size, config.max_token_length, sequence_length)`.

  Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Пример:

```python
>>> from transformers import (
...     MgpstrProcessor,
...     MgpstrForSceneTextRecognition,
... )
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from PIL import Image

>>> # load a synthetic scene-text image
>>> url = "https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/mgp_str_ticket.png"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read())).convert("RGB")

>>> processor = MgpstrProcessor.from_pretrained("alibaba-damo/mgp-str-base")
>>> pixel_values = processor(images=image, return_tensors="pt").pixel_values

>>> model = MgpstrForSceneTextRecognition.from_pretrained("alibaba-damo/mgp-str-base")

>>> # inference
>>> outputs = model(pixel_values)
>>> out_strs = processor.batch_decode(outputs.logits)
>>> out_strs["generated_text"]
'["ticket"]'
```

