# 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). ولدمج المعرفة اللغوية، تم اقتراح استراتيجية التنبؤ متعدد الحُجُم (MGP) لحقن المعلومات من النمط اللغوي في النموذج بطريقة ضمنية.

المستخلص من الورقة البحثية هو كالتالي:

*يُعدّ التعرف على النص في المشاهد (STR) موضوع بحث نشط في مجال الرؤية الحاسوبية منذ سنوات. لمعالجة هذه المشكلة الصعبة، تم اقتراح العديد من الأساليب المبتكرة تباعاً، وأصبح دمج المعرفة اللغوية في نماذج STR اتجاهاً بارزاً مؤخراً. في هذا العمل، نستلهم أولاً من التقدم الأخير في محوّل الرؤية (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/ar/model_doc/mgp-str#transformers.MgpstrModel) الصور كمدخلات ويولّد ثلاثة أنواع من التنبؤات، تمثل معلومات نصية بمستويات تفصيل مختلفة. يتم دمج هذه الأنواع الثلاثة من التنبؤات لإعطاء نتيجة التنبؤ النهائية.

تتولى فئة [ViTImageProcessor](/docs/transformers/main/ar/model_doc/vit#transformers.ViTImageProcessor) مسؤولية المعالجة المسبقة لصورة الإدخال، بينما يقوم [MgpstrTokenizer](/docs/transformers/main/ar/model_doc/mgp-str#transformers.MgpstrTokenizer) بفك ترميز رموز الأحرف المولّدة إلى النص المستهدف. تجمع فئة [MgpstrProcessor](/docs/transformers/main/ar/model_doc/mgp-str#transformers.MgpstrProcessor) بين [ViTImageProcessor](/docs/transformers/main/ar/model_doc/vit#transformers.ViTImageProcessor) و[MgpstrTokenizer](/docs/transformers/main/ar/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`، *اختياري*، القيمة الافتراضية 38) : عدد الفئات لرأس الشخصية.

num_bpe_labels (`int`، *اختياري*، القيمة الافتراضية 50257) : عدد الفئات لرأس bpe.

num_wordpiece_labels (`int`، *اختياري*، القيمة الافتراضية 30522) : عدد الفئات لرأس wordpiece.

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`) : قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة.

drop_rate (`float`، *اختياري*، القيمة الافتراضية 0.0) : احتمال الإسقاط (dropout) لجميع الطبقات المتصلة بالكامل في التضمينات (embeddings) والمُشفِّر (encoder).

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/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/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]"`) : رمز خاص يُستخدم لجعل مصفوفات الرموز بنفس الحجم لأغراض الدفع (batching). سيتم تجاهله بعد ذلك من قبل آليات الانتباه أو حساب الخسارة.

أنشئ مُجزِّئ أحرف MGP-STR.

يرث هذا المُجزِّئ من [PreTrainedTokenizer](/docs/transformers/main/ar/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`) : مُجزِّئ النص (tokenizer) هو مدخل مطلوب.

ينشئ معالج MgpstrProcessor يجمع معالج الصور ومجزّئ الرموز في معالج واحد.

يوفر [MgpstrProcessor](/docs/transformers/main/ar/model_doc/mgp-str#transformers.MgpstrProcessor) جميع وظائف [ViTImageProcessor](/docs/transformers/main/ar/model_doc/vit#transformers.ViTImageProcessor) و[MgpstrTokenizer](/docs/transformers/main/ar/model_doc/mgp-str#transformers.MgpstrTokenizer). راجع [~ViTImageProcessor](/docs/transformers/main/ar/model_doc/vit#transformers.ViTImageProcessor) و[~MgpstrTokenizer](/docs/transformers/main/ar/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` لتجنب الغموض مع المدخلات المُجمَّعة.

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/ar/internal/file_utils#transformers.TensorType)، *اختياري*) : إذا تم تعيينه، فسيُرجع تينسورات من إطار عمل محدد. القيم المقبولة هي:  - `'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/ar/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/ar/model_doc/mgp-str#transformers.MgpstrConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج Mgp Str الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/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/ar/model_doc/vit#transformers.ViTImageProcessor). راجع [ViTImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل ([MgpstrProcessor](/docs/transformers/main/ar/model_doc/mgp-str#transformers.MgpstrProcessor) يستخدم [ViTImageProcessor](/docs/transformers/main/ar/model_doc/vit#transformers.ViTImageProcessor) لمعالجة الصور).

output_attentions (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع مصفوفات الانتباه لجميع طبقات الانتباه. راجع `attentions` ضمن المصفوفات المُرجعة لمزيد من التفاصيل.

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

**يعيد:** [BaseModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutput) أو `tuple(torch.Tensor)`

[BaseModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutput) أو مجموعة مرتبة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([MgpstrConfig](/docs/transformers/main/ar/model_doc/mgp-str#transformers.MgpstrConfig)) والمدخلات.

تتجاوز طريقة [MgpstrModel](/docs/transformers/main/ar/model_doc/mgp-str#transformers.MgpstrModel) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) -- تسلسل من حالات الإخفاء (hidden-states) عند مخرج الطبقة الأخيرة من النموذج.
- **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/ar/model_doc/mgp-str#transformers.MgpstrConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج MGP-STR وهو نموذج تحويلي (Transformer) مكوّن من ثلاث رؤوس تصنيف في الأعلى (ثلاثة وحدات A^3 وثلاث طبقات خطية فوق مخرج مُشفِّر التحويل) لتعرف النص في المشهد (STR).

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/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/ar/model_doc/vit#transformers.ViTImageProcessor). راجع [ViTImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل ([MgpstrProcessor](/docs/transformers/main/ar/model_doc/mgp-str#transformers.MgpstrProcessor) يستخدم [ViTImageProcessor](/docs/transformers/main/ar/model_doc/vit#transformers.ViTImageProcessor) لمعالجة الصور).

output_attentions (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع مصفوفات الانتباه لجميع طبقات الانتباه. راجع `attentions` ضمن المصفوفات المُرجعة لمزيد من التفاصيل.

output_a3_attentions (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع تينسورات الانتباه (attentions tensors) لوحدات a3 أم لا. راجع `a3_attentions` ضمن التينسورات المُرجعة لمزيد من التفاصيل.

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

**يعيد:** `MgpstrModelOutput` أو `tuple(torch.Tensor)`

`MgpstrModelOutput` أو مجموعة مرتبة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتمادًا على الإعداد ([MgpstrConfig](/docs/transformers/main/ar/model_doc/mgp-str#transformers.MgpstrConfig)) والمدخلات.

تتجاوز طريقة [MgpstrForSceneTextRecognition](/docs/transformers/main/ar/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) لكل من الأحرف وbpe وwordpiece.
- **hidden_states** (`tuple[torch.Tensor]`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة (Tuple) من `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"]'
```

