# MGP-STR

## Ikhtisar

Model MGP-STR diusulkan dalam [Multi-Granularity Prediction for Scene Text Recognition](https://huggingface.co/papers/2209.03592) oleh Peng Wang, Cheng Da, dan Cong Yao. MGP-STR adalah model Scene Text Recognition (STR) berbasis visi yang secara konseptual **sederhana** namun **berdaya**, yang dibangun di atas [Vision Transformer (ViT)](vit). Untuk mengintegrasikan pengetahuan linguistik, strategi Multi-Granularity Prediction (MGP) diusulkan untuk menyuntikkan informasi dari modalitas bahasa ke dalam model secara implisit.

Abstrak dari makalah tersebut adalah sebagai berikut:

*Pengenalan teks adegan (STR) telah menjadi topik penelitian yang aktif dalam visi komputer selama bertahun-tahun. Untuk mengatasi masalah yang menantang ini, berbagai metode inovatif telah diusulkan secara berurutan, dan mengintegrasikan pengetahuan linguistik ke dalam model STR baru-baru ini menjadi tren yang menonjol. Dalam karya ini, kami pertama kali mengambil inspirasi dari kemajuan terbaru dalam Vision Transformer (ViT) untuk membangun model STR visi yang secara konseptual sederhana namun kuat, yang dibangun di atas ViT dan melampaui model state-of-the-art sebelumnya untuk pengenalan teks adegan, termasuk model visi murni dan metode yang diperkaya bahasa. Untuk mengintegrasikan pengetahuan linguistik, kami selanjutnya mengusulkan strategi Multi-Granularity Prediction untuk menyuntikkan informasi dari modalitas bahasa ke dalam model secara implisit, yaitu, representasi subword (BPE dan WordPiece) yang banyak digunakan dalam NLP diperkenalkan ke dalam ruang output, di samping representasi tingkat karakter konvensional, sementara tidak ada model bahasa (LM) independen yang diadopsi. Algoritma yang dihasilkan (disebut MGP-STR) mampu mendorong batas kinerja STR ke tingkat yang lebih tinggi. Secara spesifik, algoritma ini mencapai akurasi pengenalan rata-rata 93,35% pada benchmark standar.*

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

 Arsitektur MGP-STR. Diambil dari makalah aslinya.

MGP-STR dilatih pada dua dataset sintetis [MJSynth](http://www.robots.ox.ac.uk/~vgg/data/text/) (MJ) dan [SynthText](http://www.robots.ox.ac.uk/~vgg/data/scenetext/) (ST) tanpa fine-tuning pada dataset lain. Model ini mencapai hasil state-of-the-art pada enam benchmark teks adegan Latin standar, termasuk 3 dataset teks reguler (IC13, SVT, IIIT) dan 3 dataset tidak reguler (IC15, SVTP, CUTE). Model ini disumbangkan oleh [yuekun](https://huggingface.co/yuekun). Kode aslinya dapat ditemukan [di sini](https://github.com/AlibabaResearch/AdvancedLiterateMachinery/tree/main/OCR/MGP-STR).

## Contoh inferensi

[MgpstrModel](/docs/transformers/v5.23.0/id/model_doc/mgp-str#transformers.MgpstrModel) menerima gambar sebagai input dan menghasilkan tiga jenis prediksi, yang merepresentasikan informasi tekstual pada tingkat granularitas yang berbeda. Ketiga jenis prediksi tersebut digabungkan untuk memberikan hasil prediksi akhir.

Kelas [ViTImageProcessor](/docs/transformers/v5.23.0/id/model_doc/vit#transformers.ViTImageProcessor) bertanggung jawab untuk prapemrosesan gambar input, dan [MgpstrTokenizer](/docs/transformers/v5.23.0/id/model_doc/mgp-str#transformers.MgpstrTokenizer) mendekode token karakter yang dihasilkan menjadi string target. [MgpstrProcessor](/docs/transformers/v5.23.0/id/model_doc/mgp-str#transformers.MgpstrProcessor) membungkus [ViTImageProcessor](/docs/transformers/v5.23.0/id/model_doc/vit#transformers.ViTImageProcessor) dan [MgpstrTokenizer](/docs/transformers/v5.23.0/id/model_doc/mgp-str#transformers.MgpstrTokenizer) menjadi satu instance untuk mengekstrak fitur input dan mendekode id token prediksi.

- Langkah demi langkah Optical Character Recognition (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)
```

[Sumber](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mgp_str/configuration_mgp_str.py#L24)

**Parameter:**

image_size (`Union[list[int], tuple[int, ...]]`, *opsional*, defaultnya `(32, 128)`) : Ukuran (resolusi) dari setiap gambar.

patch_size (`Union[int, list[int], tuple[int, int]]`, *opsional*, defaultnya `4`) : Ukuran (resolusi) dari setiap patch.

num_channels (`int`, *opsional*, default `3`) : Jumlah saluran input.

max_token_length (`int`, *opsional*, defaultnya 27) : Jumlah maksimum token output.

num_character_labels (`int`, *opsional*, defaultnya 38) : Jumlah kelas untuk kepala karakter.

num_bpe_labels (`int`, *opsional*, defaultnya 50257) : Jumlah kelas untuk bpe head .

num_wordpiece_labels (`int`, *opsional*, defaultnya 30522) : Jumlah kelas untuk wordpiece head .

hidden_size (`int`, *opsional*, defaultnya `768`) : Dimensi dari representasi tersembunyi.

num_hidden_layers (`int`, *opsional*, defaultnya `12`) : Jumlah lapisan tersembunyi dalam decoder Transformer.

num_attention_heads (`int`, *opsional*, defaultnya `12`) : Jumlah kepala perhatian untuk setiap lapisan perhatian dalam decoder Transformer.

mlp_ratio (`Union[float, int]`, *opsional*, defaultnya `4.0`) : Rasio dimensi tersembunyi MLP terhadap dimensi embedding.

qkv_bias (`bool`, *opsional*, defaultnya `True`) : Apakah akan menambahkan bias ke queries, keys, dan values.

distilled (`bool`, *opsional*, defaultnya `False`) : Model menyertakan token dan head distilasi seperti pada model DeiT.

layer_norm_eps (`float`, *opsional*, defaultnya `1e-05`) : Epsilon yang digunakan oleh lapisan normalisasi lapisan.

drop_rate (`float`, *opsional*, default 0.0) : Probabilitas dropout untuk semua lapisan fully connected di embeddings, encoder.

attn_drop_rate (`float`, *opsional*, default 0.0) : Rasio dropout untuk probabilitas perhatian.

drop_path_rate (`Union[float, int]`, *opsional*, defaultnya `0.0`) : Tingkat drop path untuk fusi patch.

output_a3_attentions (`bool`, *opsional*, defaultnya `False`) : Apakah model harus mengembalikan perhatian modul A^3.

initializer_range (`float`, *opsional*, defaultnya `0.02`) : Deviasi standar dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari Mgp StrModel. Kelas ini digunakan untuk membuat instans model Mgp Str sesuai dengan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari [alibaba-damo/mgp-str-base](https://huggingface.co/alibaba-damo/mgp-str-base)

Objek konfigurasi mewarisi dari [PreTrainedConfig](/docs/transformers/v5.23.0/id/main_classes/configuration#transformers.PreTrainedConfig) dan dapat digunakan untuk mengontrol keluaran model. Baca dokumentasi dari [PreTrainedConfig](/docs/transformers/v5.23.0/id/main_classes/configuration#transformers.PreTrainedConfig) untuk informasi lebih lanjut.

Contoh:

```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)
```

[Sumber](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mgp_str/tokenization_mgp_str.py#L28)

**Parameter:**

vocab_file (`str`) : Path ke file kosakata.

unk_token (`str`, *opsional*, defaultnya `"[GO]"`) : Token yang tidak diketahui. Token yang tidak ada dalam kosakata tidak dapat dikonversi menjadi ID dan akan disetel menjadi token ini sebagai gantinya.

bos_token (`str`, *opsional*, defaultnya `"[GO]"`) : Token awal urutan.

eos_token (`str`, *opsional*, defaultnya `"[s]"`) : Token akhir urutan.

pad_token (`str` atau `tokenizers.AddedToken`, *opsional*, defaultnya `"[GO]"`) : Token khusus yang digunakan untuk membuat array token berukuran sama untuk keperluan batching. Token ini kemudian akan diabaikan oleh mekanisme perhatian atau perhitungan loss.

Konstruksi tokenizer karakter MGP-STR.

Tokenizer ini mewarisi dari [PreTrainedTokenizer](/docs/transformers/v5.23.0/id/main_classes/tokenizer#transformers.PythonBackend) yang berisi sebagian besar metode utama. Pengguna harus merujuk ke superclass ini untuk informasi lebih lanjut mengenai metode-metode tersebut.

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

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

[Sumber](https://github.com/huggingface/transformers/blob/v5.23.0/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)
```

[Sumber](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mgp_str/processing_mgp_str.py#L40)

**Parameter:**

image_processor (`ViTImageProcessor`) : Prosesor gambar adalah input yang wajib.

tokenizer (`MgpstrTokenizer`) : Tokenizer adalah input yang wajib.

Membangun MgpstrProcessor yang membungkus image processor dan tokenizer menjadi satu processor.

[MgpstrProcessor](/docs/transformers/v5.23.0/id/model_doc/mgp-str#transformers.MgpstrProcessor) menyediakan semua fungsionalitas dari [ViTImageProcessor](/docs/transformers/v5.23.0/id/model_doc/vit#transformers.ViTImageProcessor) dan [MgpstrTokenizer](/docs/transformers/v5.23.0/id/model_doc/mgp-str#transformers.MgpstrTokenizer). Lihat [~ViTImageProcessor](/docs/transformers/v5.23.0/id/model_doc/vit#transformers.ViTImageProcessor) dan [~MgpstrTokenizer](/docs/transformers/v5.23.0/id/model_doc/mgp-str#transformers.MgpstrTokenizer) untuk informasi lebih lanjut.

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

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

[Sumber](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mgp_str/processing_mgp_str.py#L48)

**Parameter:**

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` atau [TensorType](/docs/transformers/v5.23.0/id/internal/file_utils#transformers.TensorType), *opsional*) : Jika diatur, akan mengembalikan tensor dari framework tertentu. Nilai yang dapat diterima adalah:  - `'pt'`: Mengembalikan objek `torch.Tensor` PyTorch. - `'np'`: Mengembalikan objek `np.ndarray` NumPy.

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

```python
batch_decode(sequences)
```

[Sumber](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mgp_str/processing_mgp_str.py#L56)

**Parameter:**

sequences (`torch.Tensor`) : Daftar id input yang telah ditokenisasi.

**Mengembalikan:** `dict[str, any]`

Kamus dari semua output hasil decoding. generated_text (`list[str]`): Hasil akhir setelah fusi char, bpe, dan wp. scores (`list[float]`): Skor akhir setelah fusi char, bpe, dan wp. char_preds (`list[str]`): Daftar kalimat yang didekodekan per karakter. bpe_preds (`list[str]`): Daftar kalimat yang didekodekan bpe. wp_preds (`list[str]`): Daftar kalimat yang didekodekan wp.

Konversi daftar dari daftar id token menjadi daftar string dengan memanggil decode.

Metode ini meneruskan semua argumennya ke [batch_decode()](/docs/transformers/v5.23.0/id/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.batch_decode) dari PreTrainedTokenizer. Silakan lihat docstring dari metode ini untuk informasi lebih lanjut.

## MgpstrModel[[transformers.MgpstrModel]]

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

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

[Sumber](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mgp_str/modeling_mgp_str.py#L292)

**Parameter:**

config ([MgpstrConfig](/docs/transformers/v5.23.0/id/model_doc/mgp-str#transformers.MgpstrConfig)) : Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode [from_pretrained()](/docs/transformers/v5.23.0/id/main_classes/model#transformers.PreTrainedModel.from_pretrained) untuk memuat bobot model.

Model Mgp Str polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.

Model ini mewarisi dari [PreTrainedModel](/docs/transformers/v5.23.0/id/main_classes/model#transformers.PreTrainedModel). Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka ini untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran input embeddings, memangkas heads, dll.)

Model ini juga merupakan subclass dari [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

#### 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)
```

[Sumber](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mgp_str/modeling_mgp_str.py#L305)

**Parameter:**

pixel_values (`torch.Tensor` dengan bentuk `(batch_size, num_channels, image_size, image_size)`) : Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan [ViTImageProcessor](/docs/transformers/v5.23.0/id/model_doc/vit#transformers.ViTImageProcessor). Lihat [ViTImageProcessor.__call__()](/docs/transformers/v5.23.0/id/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) untuk detailnya ([MgpstrProcessor](/docs/transformers/v5.23.0/id/model_doc/mgp-str#transformers.MgpstrProcessor) menggunakan [ViTImageProcessor](/docs/transformers/v5.23.0/id/model_doc/vit#transformers.ViTImageProcessor) untuk memproses gambar).

output_attentions (`bool`, *opsional*) : Apakah akan mengembalikan tensor perhatian dari semua lapisan perhatian. Lihat `attentions` di bawah tensor yang dikembalikan untuk detail lebih lanjut.

output_hidden_states (`bool`, *opsional*) : Apakah akan mengembalikan hidden states dari semua lapisan. Lihat `hidden_states` di bawah tensor yang dikembalikan untuk detail lebih lanjut.

return_dict (`bool`, *opsional*) : Apakah akan mengembalikan [ModelOutput](/docs/transformers/v5.23.0/id/main_classes/output#transformers.utils.ModelOutput) alih-alih tuple biasa.

**Mengembalikan:** [BaseModelOutput](/docs/transformers/v5.23.0/id/main_classes/output#transformers.modeling_outputs.BaseModelOutput) atau `tuple(torch.Tensor)`

[BaseModelOutput](/docs/transformers/v5.23.0/id/main_classes/output#transformers.modeling_outputs.BaseModelOutput) atau tuple dari `torch.Tensor` (jika `return_dict=False` diteruskan atau ketika `config.return_dict=False`) yang terdiri dari berbagai elemen tergantung pada konfigurasi ([MgpstrConfig](/docs/transformers/v5.23.0/id/model_doc/mgp-str#transformers.MgpstrConfig)) dan input.

Metode forward dari [MgpstrModel](/docs/transformers/v5.23.0/id/model_doc/mgp-str#transformers.MgpstrModel) menimpa metode khusus `__call__`.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance `Module` setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

- **last_hidden_state** (`torch.Tensor` dengan bentuk `(batch_size, sequence_length, hidden_size)`) -- Urutan hidden-states pada keluaran lapisan terakhir model.
- **hidden_states** (`tuple(torch.Tensor)`, *opsional*, dikembalikan saat `output_hidden_states=True` dilewatkan atau saat `config.output_hidden_states=True`) -- Tuple dari `torch.Tensor` (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk `(batch_size, sequence_length, hidden_size)`.

  Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
- **attentions** (`tuple(torch.Tensor)`, *opsional*, dikembalikan ketika `output_attentions=True` dilewatkan atau ketika `config.output_attentions=True`) -- Tuple dari `torch.Tensor` (satu untuk setiap layer) dengan bentuk `(batch_size, num_heads, sequence_length, sequence_length)`.

  Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

## MgpstrForSceneTextRecognition[[transformers.MgpstrForSceneTextRecognition]]

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

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

[Sumber](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mgp_str/modeling_mgp_str.py#L347)

**Parameter:**

config ([MgpstrConfig](/docs/transformers/v5.23.0/id/model_doc/mgp-str#transformers.MgpstrConfig)) : Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode [from_pretrained()](/docs/transformers/v5.23.0/id/main_classes/model#transformers.PreTrainedModel.from_pretrained) untuk memuat bobot model.

MGP-STR Model transformer dengan tiga kepala klasifikasi di bagian atas (tiga modul A^3 dan tiga lapisan linear di atas output encoder transformer) untuk pengenalan teks adegan (STR).

Model ini mewarisi dari [PreTrainedModel](/docs/transformers/v5.23.0/id/main_classes/model#transformers.PreTrainedModel). Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka ini untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran input embeddings, memangkas heads, dll.)

Model ini juga merupakan subclass dari [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

#### 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)
```

[Sumber](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mgp_str/modeling_mgp_str.py#L368)

**Parameter:**

pixel_values (`torch.Tensor` dengan bentuk `(batch_size, num_channels, image_size, image_size)`) : Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan [ViTImageProcessor](/docs/transformers/v5.23.0/id/model_doc/vit#transformers.ViTImageProcessor). Lihat [ViTImageProcessor.__call__()](/docs/transformers/v5.23.0/id/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) untuk detailnya ([MgpstrProcessor](/docs/transformers/v5.23.0/id/model_doc/mgp-str#transformers.MgpstrProcessor) menggunakan [ViTImageProcessor](/docs/transformers/v5.23.0/id/model_doc/vit#transformers.ViTImageProcessor) untuk memproses gambar).

output_attentions (`bool`, *opsional*) : Apakah akan mengembalikan tensor perhatian dari semua lapisan perhatian. Lihat `attentions` di bawah tensor yang dikembalikan untuk detail lebih lanjut.

output_a3_attentions (`bool`, *opsional*) : Apakah akan mengembalikan tensor perhatian dari modul a3. Lihat `a3_attentions` di bawah tensor yang dikembalikan untuk detail lebih lanjut.

output_hidden_states (`bool`, *opsional*) : Apakah akan mengembalikan hidden states dari semua lapisan. Lihat `hidden_states` di bawah tensor yang dikembalikan untuk detail lebih lanjut.

return_dict (`bool`, *opsional*) : Apakah akan mengembalikan [ModelOutput](/docs/transformers/v5.23.0/id/main_classes/output#transformers.utils.ModelOutput) alih-alih tuple biasa.

**Mengembalikan:** `MgpstrModelOutput` atau `tuple(torch.Tensor)`

Sebuah `MgpstrModelOutput` atau tuple dari `torch.Tensor` (jika `return_dict=False` dilewatkan atau ketika `config.return_dict=False`) yang terdiri dari berbagai elemen tergantung pada konfigurasi ([MgpstrConfig](/docs/transformers/v5.23.0/id/model_doc/mgp-str#transformers.MgpstrConfig)) dan input.

Metode forward dari [MgpstrForSceneTextRecognition](/docs/transformers/v5.23.0/id/model_doc/mgp-str#transformers.MgpstrForSceneTextRecognition) menimpa metode khusus `__call__`.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance `Module` setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

- **logits** (`tuple(torch.Tensor)` dengan bentuk `(batch_size, config.num_character_labels)`) -- Tuple dari `torch.Tensor` (satu untuk output karakter dengan bentuk `(batch_size, config.max_token_length, config.num_character_labels)`, + satu untuk output bpe dengan bentuk `(batch_size, config.max_token_length, config.num_bpe_labels)`, + satu untuk output wordpiece dengan bentuk `(batch_size, config.max_token_length, config.num_wordpiece_labels)`) .

  Skor klasifikasi (sebelum SoftMax) untuk karakter, bpe, dan wordpiece.
- **hidden_states** (`tuple[torch.Tensor]`, *opsional*, dikembalikan ketika `output_hidden_states=True` dilewatkan atau ketika `config.output_hidden_states=True`) -- Tuple dari `torch.Tensor` (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk `(batch_size, sequence_length, hidden_size)`.

  Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
- **attentions** (`tuple[torch.Tensor]`, *opsional*, dikembalikan ketika `output_attentions=True` dilewatkan atau ketika `config.output_attentions=True`) -- Tuple dari `torch.Tensor` (satu untuk setiap layer) dengan bentuk `(batch_size, num_heads, sequence_length, sequence_length)`.

  Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
- **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)`.

  Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

Contoh:

```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"]'
```

