# PP-OCRv5_mobile_rec

## نظرة عامة

**PP-OCRv5_mobile_rec** هو نموذج خفيف مخصص لتعرف النصوص، يركّز بشكل خاص على التعرف الفعّال وفهم عناصر النص في المستندات متعددة اللغات والمناظر الطبيعية.

## بنية النموذج

يُعدّ PP-OCRv5_mobile_rec أحد نماذج سلسلة PP-OCRv5_rec، وهي أحدث جيل من نماذج التعرف على النص التي طوّرها فريق PaddleOCR. صُمِّم هذا النموذج لدعم التعرف على النص المبسّط بالصينية، والصينية التقليدية، والإنجليزية، واليابانية، بالإضافة إلى سيناريوهات النص المعقدة مثل الكتابة اليدوية، والنص العمودي، والتعليق الصوتي (بينيين)، والحروف النادرة، وذلك بكفاءة ودقة باستخدام نموذج واحد. وفي حين يحافظ على أداء التعرف، فإنه يوازن أيضاً بين سرعة الاستدلال ومتانة النموذج، مما يوفر دعماً تقنياً فعالاً ودقيقاً لفهم المستندات في مختلف السيناريوهات.

## الاستخدام

### الاستدلال على مدخل واحد

يُبيّن المثال أدناه كيفية اكتشاف النص باستخدام PP-OCRv5_mobile_rec مع [AutoModel](/docs/transformers/main/ar/model_doc/auto#transformers.AutoModel).

```python
import requests
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForTextRecognition

model_path="PaddlePaddle/PP-OCRv5_mobile_rec_safetensors"
model = AutoModelForTextRecognition.from_pretrained(model_path, device_map="auto")
image_processor = AutoImageProcessor.from_pretrained(model_path)

image = Image.open(requests.get("https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/paddle_general_ocr_rec_001.png", stream=True).raw).convert("RGB")
inputs = image_processor(images=image, return_tensors="pt").to(model.device)
outputs = model(**inputs)

results = image_processor.post_process_text_recognition(outputs)

for result in results:
    print(result)
```

### الاستدلال المجمّع

إليك كيفية القيام بذلك باستخدام PP-OCRv5_mobile_rec مع [AutoModel](/docs/transformers/main/ar/model_doc/auto#transformers.AutoModel):

```python
import requests
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForTextRecognition

model_path = "PaddlePaddle/PP-OCRv5_mobile_rec_safetensors"
model = AutoModelForTextRecognition.from_pretrained(model_path, device_map="auto")
image_processor = AutoImageProcessor.from_pretrained(model_path)

image = Image.open(requests.get("https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/paddle_general_ocr_rec_001.png", stream=True).raw).convert("RGB")
inputs = image_processor(images=[image, image], return_tensors="pt").to(model.device)
outputs = model(**inputs)

results = image_processor.post_process_text_recognition(outputs)
for result in results:
    print(result)
```

## PPOCRV5MobileRecForTextRecognition[[transformers.PPOCRV5MobileRecForTextRecognition]]

#### transformers.PPOCRV5MobileRecForTextRecognition[[transformers.PPOCRV5MobileRecForTextRecognition]]

```python
transformers.PPOCRV5MobileRecForTextRecognition(config: PPOCRV5MobileRecConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_rec/modeling_pp_ocrv5_mobile_rec.py#L374)

**المعاملات:**

config ([PPOCRV5MobileRecConfig](/docs/transformers/main/ar/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج PPOCRV5MobileRec لمهام التعرف على النص.

يرث هذا النموذج من [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.PPOCRV5MobileRecForTextRecognition.forward]]

```python
forward(pixel_values: Tensor, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_rec/modeling_pp_ocrv5_mobile_rec.py#L384)

**المعاملات:**

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_channels, image_size, image_size)`) : المصفوفات المقابلة لصور الإدخال. يمكن الحصول على قيم البكسل باستخدام [PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ar/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor). راجع [PPOCRV5ServerRecImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل (`processor_class` يستخدم [PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ar/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor) لمعالجة الصور).

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

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

تُعيد طريقة [PPOCRV5MobileRecForTextRecognition](/docs/transformers/main/ar/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecForTextRecognition) الخاصة بالتقديم (forward) تعريف الطريقة الخاصة `__call__`.

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

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, num_channels, height, width)`) -- تسلسل حالات مخفية عند مخرجات الطبقة الأخيرة من النموذج.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات الطبقات المضمنة إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, num_channels, height, width)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.

## PPOCRV5MobileRecConfig[[transformers.PPOCRV5MobileRecConfig]]

#### transformers.PPOCRV5MobileRecConfig[[transformers.PPOCRV5MobileRecConfig]]

```python
transformers.PPOCRV5MobileRecConfig(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, hidden_act: str = 'silu', backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, hidden_size: int = 120, mlp_ratio: float = 2.0, depth: int = 2, head_out_channels: int = 18385, conv_kernel_size: list | None = None, qkv_bias: bool = True, num_attention_heads: int = 8, attention_dropout: float | int = 0.0, layer_norm_eps: float = 1e-06)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_rec/configuration_pp_ocrv5_mobile_rec.py#L31)

**المعاملات:**

hidden_act (`str`، *اختياري*، القيمة الافتراضية `silu`) : دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، `"gelu"`، `"relu"`، `"silu"`، وما إلى ذلك.

backbone_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`، *اختياري*) : إعدادات نموذج الهيكل الأساسي.

hidden_size (`int`، *اختياري*، القيمة الافتراضية `120`) : بُعد التمثيلات المخفية.

mlp_ratio (`float`، *اختياري*، القيمة الافتراضية `2.0`) : نسبة بُعد MLP المخفي إلى بُعد التضمين.

depth (`int`، *اختياري*، القيمة الافتراضية `2`) : عدد طبقات Transformer في مُشفِّر الرؤية.

head_out_channels (`int`، *اختياري*، القيمة الافتراضية 18385) : عدد قنوات الإخراج من PPOCRV5MobileRecHead، وهو المسؤول عن التصنيف النهائي.

conv_kernel_size (`list`، *اختياري*) : حجم النواة الالتفافية.

qkv_bias (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إضافة انحياز إلى الاستعلامات والمفاتيح والقيم.

num_attention_heads (`int`، *اختياري*، القيمة الافتراضية `8`) : عدد رؤوس الانتباه في كل طبقة انتباه داخل مُفكِّك Transformer.

attention_dropout (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.0`) : نسبة الإسقاط (dropout) لاحتمالات الانتباه.

layer_norm_eps (`float`, *اختياري*, الافتراضي هو `1e-06`) : قيمة إيبسلون المستخدمة في طبقات تطبيع الطبقة.

هذه فئة الإعدادات المخزنة لإعدادات نموذج PPOCRV5MobileRecModel. تُستخدم لاستحداث نموذج Pp Ocrv5 Mobile Rec وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [PaddlePaddle/PP-OCRv5_mobile_rec_safetensors](https://huggingface.co/PaddlePaddle/PP-OCRv5_mobile_rec_safetensors)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

## PPOCRV5MobileRecModel[[transformers.PPOCRV5MobileRecModel]]

#### transformers.PPOCRV5MobileRecModel[[transformers.PPOCRV5MobileRecModel]]

```python
transformers.PPOCRV5MobileRecModel(config: PPOCRV5MobileRecConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_rec/modeling_pp_ocrv5_mobile_rec.py#L322)

**المعاملات:**

config ([PPOCRV5MobileRecConfig](/docs/transformers/main/ar/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج PPOCRV5MobileRec، المكوّن من شبكتي Backbone وHead.

يرث هذا النموذج من [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.PPOCRV5MobileRecModel.forward]]

```python
forward(pixel_values: Tensor, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_rec/modeling_pp_ocrv5_mobile_rec.py#L330)

**المعاملات:**

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_channels, image_size, image_size)`) : المصفوفات المقابلة لصور الإدخال. يمكن الحصول على قيم البكسل باستخدام [PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ar/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor). راجع [PPOCRV5ServerRecImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل (`processor_class` يستخدم [PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ar/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor) لمعالجة الصور).

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

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

تُعيد طريقة [PPOCRV5MobileRecModel](/docs/transformers/main/ar/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecModel) الخاصة بالتقديم (forward) تعريف الطريقة الخاصة `__call__`.

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

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, num_channels, height, width)`) -- تسلسل حالات مخفية عند مخرجات الطبقة الأخيرة من النموذج.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات الطبقات المضمنة إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, num_channels, height, width)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.

## PPOCRV5MobileRecModel[[transformers.PPOCRV5MobileRecModel]]

#### transformers.PPOCRV5MobileRecModel[[transformers.PPOCRV5MobileRecModel]]

```python
transformers.PPOCRV5MobileRecModel(config: PPOCRV5MobileRecConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_rec/modeling_pp_ocrv5_mobile_rec.py#L322)

**المعاملات:**

config ([PPOCRV5MobileRecConfig](/docs/transformers/main/ar/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج PPOCRV5MobileRec، المكوّن من شبكتي Backbone وHead.

يرث هذا النموذج من [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.PPOCRV5MobileRecModel.forward]]

```python
forward(pixel_values: Tensor, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_rec/modeling_pp_ocrv5_mobile_rec.py#L330)

**المعاملات:**

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_channels, image_size, image_size)`) : المصفوفات المقابلة لصور الإدخال. يمكن الحصول على قيم البكسل باستخدام [PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ar/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor). راجع [PPOCRV5ServerRecImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل (`processor_class` يستخدم [PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ar/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor) لمعالجة الصور).

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

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

تُعيد طريقة [PPOCRV5MobileRecModel](/docs/transformers/main/ar/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecModel) الخاصة بالتقديم (forward) تعريف الطريقة الخاصة `__call__`.

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

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, num_channels, height, width)`) -- تسلسل حالات مخفية عند مخرجات الطبقة الأخيرة من النموذج.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات الطبقات المضمنة إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, num_channels, height, width)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.

