# MGP-STR

## 概要

MGP-STRモデルは、Peng Wang、Cheng Da、Cong Yao による [Multi-Granularity Prediction for Scene Text Recognition](https://huggingface.co/papers/2209.03592) で提案されました。MGP-STRは、[Vision Transformer (ViT)](vit) を基盤とする、概念的には**シンプル**でありながら**強力な**ビジョンシーンテキスト認識（STR）モデルです。言語知識を統合するために、Multi-Granularity Prediction (MGP) 戦略が提案され、言語モダリティからの情報をモデルに暗黙的に注入します。

論文の抄録は以下の通りです。

*シーンテキスト認識（STR）は、コンピュータビジョン分野において長年にわたり活発な研究テーマとなってきました。この困難な課題に取り組むため、数多くの革新的な手法が次々と提案されており、STRモデルに言語知識を組み込むことが最近の顕著なトレンドとなっています。本研究では、まずVision Transformer（ViT）の最近の進歩から着想を得て、概念的にはシンプルでありながら強力なビジョンSTRモデルを構築しました。このモデルはViTを基盤としており、シーンテキスト認識における従来の最先端モデル、すなわち純粋なビジョンモデルと言語拡張手法の両方を上回る性能を発揮します。言語知識を統合するために、さらにMulti-Granularity Prediction戦略を提案し、NLPで広く使用されているサブワード表現（BPEおよびWordPiece）を従来の文字レベル表現に加えて出力空間に導入することで、言語モダリティの情報をモデルに暗黙的に注入します。この際、独立した言語モデル（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は、他のデータセットでのファインチューニングを行わず、2つの合成データセットである[MJSynth](http://www.robots.ox.ac.uk/~vgg/data/text/)（MJ）と[SynthText](http://www.robots.ox.ac.uk/~vgg/data/scenetext/)（ST）で学習されています。このモデルは、3つの正規テキストデータセット（IC13、SVT、IIIT）と3つの不規則データセット（IC15、SVTP、CUTE）を含む、6つの標準的なラテン文字シーンテキストベンチマークにおいて、最先端の結果を達成しています。このモデルは[yuekun](https://huggingface.co/yuekun)によって提供されました。元のコードは[こちら](https://github.com/AlibabaResearch/AdvancedLiterateMachinery/tree/main/OCR/MGP-STR)で確認できます。

## 推論の例

[MgpstrModel](/docs/transformers/main/ja/model_doc/mgp-str#transformers.MgpstrModel)は画像を入力として受け取り、異なる粒度のテキスト情報を表す3種類の予測を生成します。これらの3種類の予測が融合され、最終的な予測結果が得られます。

[ViTImageProcessor](/docs/transformers/main/ja/model_doc/vit#transformers.ViTImageProcessor) クラスは入力画像の前処理を担当し、[MgpstrTokenizer](/docs/transformers/main/ja/model_doc/mgp-str#transformers.MgpstrTokenizer) は生成された文字トークンをターゲット文字列にデコードします。[MgpstrProcessor](/docs/transformers/main/ja/model_doc/mgp-str#transformers.MgpstrProcessor) は [ViTImageProcessor](/docs/transformers/main/ja/model_doc/vit#transformers.ViTImageProcessor) と [MgpstrTokenizer](/docs/transformers/main/ja/model_doc/mgp-str#transformers.MgpstrTokenizer) を単一のインスタンスにラップし、入力特徴量の抽出と予測トークンIDのデコードの両方を行います。

- ステップバイステップの光学文字認識(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`、*optional*、デフォルトは 27) : 出力トークンの最大数。

num_character_labels (`int`, *optional*, デフォルトは 38) : キャラクターヘッドのクラス数。

num_bpe_labels (`int`、*任意*、デフォルトは 50257) : bpe head のクラス数。

num_wordpiece_labels (`int`, *optional*, デフォルトは 30522) : wordpiece head のクラス数です。

hidden_size (`int`、*任意*、デフォルトは`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`) : クエリ、キー、バリューにバイアスを追加するかどうか。

distilled (`bool`、*任意*、デフォルトは`False`) : DeiTモデルと同様に、蒸留トークンとヘッドをモデルに含めるかどうか。

layer_norm_eps (`float`、*任意*、デフォルトは`1e-05`) : Layer Normalization 層で使用する epsilon。

drop_rate (`float`、*optional*、デフォルトは 0.0) : embeddings および encoder 内のすべての全結合層における dropout 確率。

attn_drop_rate (`float`、*任意*、デフォルトは 0.0) : 注意確率の dropout 率。

drop_path_rate (`Union[float, int]`、*任意*、デフォルトは`0.0`) : パッチ融合のドロップパス率。

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/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/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]"`) : 不明トークン。語彙に存在しないトークンは ID に変換できず、代わりにこのトークンが設定されます。

bos_token (`str`、*任意*、デフォルトは`"[GO]"`) : シーケンスの開始トークン。

eos_token (`str`、*任意*、デフォルトは`"[s]"`) : シーケンスの終了トークン。

pad_token (`str` または `tokenizers.AddedToken`、*optional*、デフォルトは `"[GO]"`) : バッチ処理のためにトークンの配列を同じサイズにするために使用される特殊トークン。その後、アテンション機構や損失計算によって無視されます。

MGP-STR文字トークナイザーを構築します。

このトークナイザーは、[PreTrainedTokenizer](/docs/transformers/main/ja/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を構築します。画像プロセッサとトークナイザーを単一のプロセッサにラップします。

[MgpstrProcessor](/docs/transformers/main/ja/model_doc/mgp-str#transformers.MgpstrProcessor) は、[ViTImageProcessor](/docs/transformers/main/ja/model_doc/vit#transformers.ViTImageProcessor) と [MgpstrTokenizer](/docs/transformers/main/ja/model_doc/mgp-str#transformers.MgpstrTokenizer) のすべての機能を提供します。詳細については、[~ViTImageProcessor](/docs/transformers/main/ja/model_doc/vit#transformers.ViTImageProcessor) および [~MgpstrTokenizer](/docs/transformers/main/ja/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/ja/internal/file_utils#transformers.TensorType)、*optional*) : 設定されている場合、特定のフレームワークのテンソルを返します。受け入れ可能な値は以下の通りです:  - `'pt'`: PyTorch の `torch.Tensor` オブジェクトを返します。 - `'np'`: NumPy の `np.ndarray` オブジェクトを返します。

#### 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`) : トークン化された入力 ID のリスト。

**戻り値:** `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 を呼び出して、トークン ID のリストのリストを文字列のリストに変換します。

このメソッドは、すべての引数を PreTrainedTokenizer の [batch_decode()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.batch_decode) に転送します。詳細については、このメソッドのドキュメント文字列を参照してください。

## 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/ja/model_doc/mgp-str#transformers.MgpstrConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

裸の Mgp Str Modelは、特定のヘッドを上に載せず、生の hidden-states を出力します。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

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

```python
forward(pixel_values: FloatTensor, 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.FloatTensor`、shape `(batch_size, num_channels, image_size, image_size)`) : 入力画像に対応するテンソルです。ピクセル値は [ViTImageProcessor](/docs/transformers/main/ja/model_doc/vit#transformers.ViTImageProcessor) を使用して取得できます。詳細は [ViTImageProcessor.__call__()](/docs/transformers/main/ja/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) を参照してください（[MgpstrProcessor](/docs/transformers/main/ja/model_doc/mgp-str#transformers.MgpstrProcessor) は画像の処理に [ViTImageProcessor](/docs/transformers/main/ja/model_doc/vit#transformers.ViTImageProcessor) を使用しています）。

output_attentions (`bool`, *任意*) : すべてのアテンション層のアテンションテンソルを返すかどうか。詳細は、返されるテンソルの `attentions` を参照してください。

output_hidden_states (`bool`, *任意*) : 全レイヤーの hidden states を返すかどうかを指定します。詳細は、返されるテンソルの `hidden_states` を参照してください。

return_dict (`bool`, *任意*) : プレーンなタプルではなく [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput) を返すかどうか。

**戻り値:** [BaseModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.BaseModelOutput) または `tuple(torch.FloatTensor)`

設定（[MgpstrConfig](/docs/transformers/main/ja/model_doc/mgp-str#transformers.MgpstrConfig)）と入力に応じて、さまざまな要素で構成される [BaseModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.BaseModelOutput) または `torch.FloatTensor` のタプル（`return_dict=False` が渡された場合、または `config.return_dict=False` の場合）。

[MgpstrModel](/docs/transformers/main/ja/model_doc/mgp-str#transformers.MgpstrModel)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **last_hidden_state** (`torch.FloatTensor`、shape `(batch_size, sequence_length, hidden_size)`) -- モデルの最終層の出力における隠れ状態のシーケンス。
- **hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（埋め込み層を持つモデルの場合、埋め込みの出力用が 1 つ、各層の出力用が 1 つずつ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
- **attentions** (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.FloatTensor` のタプル（各レイヤーごとに1つ）で、形状は `(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/ja/model_doc/mgp-str#transformers.MgpstrConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

MGP-STRは、シーンテキスト認識（STR）のために、Transformerエンコーダーの出力上に3つのA^3モジュールと3つの線形層を配置した3つの分類ヘッドを持つModel transformerです。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

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

```python
forward(pixel_values: FloatTensor, 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.FloatTensor`、shape `(batch_size, num_channels, image_size, image_size)`) : 入力画像に対応するテンソルです。ピクセル値は [ViTImageProcessor](/docs/transformers/main/ja/model_doc/vit#transformers.ViTImageProcessor) を使用して取得できます。詳細は [ViTImageProcessor.__call__()](/docs/transformers/main/ja/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) を参照してください（[MgpstrProcessor](/docs/transformers/main/ja/model_doc/mgp-str#transformers.MgpstrProcessor) は画像の処理に [ViTImageProcessor](/docs/transformers/main/ja/model_doc/vit#transformers.ViTImageProcessor) を使用しています）。

output_attentions (`bool`, *任意*) : すべてのアテンション層のアテンションテンソルを返すかどうか。詳細は、返されるテンソルの `attentions` を参照してください。

output_a3_attentions (`bool`, *任意*) : a3モジュールのアテンションテンソルを返すかどうか。詳細は、返されるテンソルの`a3_attentions`を参照してください。

output_hidden_states (`bool`, *任意*) : 全レイヤーの hidden states を返すかどうかを指定します。詳細は、返されるテンソルの `hidden_states` を参照してください。

return_dict (`bool`, *任意*) : プレーンなタプルではなく [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput) を返すかどうか。

**戻り値:** `MgpstrModelOutput` または `tuple(torch.FloatTensor)`

`MgpstrModelOutput`または`torch.FloatTensor`のタプル（`return_dict=False`が渡された場合、または`config.return_dict=False`の場合）。[MgpstrConfig](/docs/transformers/main/ja/model_doc/mgp-str#transformers.MgpstrConfig)および入力に応じて、さまざまな要素で構成されます。

[MgpstrForSceneTextRecognition](/docs/transformers/main/ja/model_doc/mgp-str#transformers.MgpstrForSceneTextRecognition) の forward メソッドは、`__call__` という特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **logits** (`tuple(torch.FloatTensor)`、形状 `(batch_size, config.num_character_labels)`) -- `torch.FloatTensor` のタプル（文字の出力用の形状 `(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)` のもの）

  文字、bpe、wordpieceの分類スコア（SoftMax適用前）。
- **hidden_states** (`tuple[torch.FloatTensor]`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（モデルに埋め込み層がある場合はその出力用 + 各層の出力用）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
- **attentions** (`tuple[torch.FloatTensor]`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.FloatTensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)`。

  アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
- **a3_attentions** (`tuple(torch.FloatTensor)`, *optional*, returned when `output_a3_attentions=True` is passed or when `config.output_a3_attentions=True`) -- Tuple of `torch.FloatTensor` (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"]'
```

