# PP-OCRv5_mobile_det

## نظرة عامة

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

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

يُعدّ PP-OCRv5_mobile_det أحد نماذج سلسلة PP-OCRv5_det، وهي أحدث جيل من نماذج كشف النص التي طوّرها فريق PaddleOCR. يهدف هذا النموذج إلى دعم كشف النص بكفاءة ودقة في سيناريوهات متنوعة — بما في ذلك النصوص المكتوبة بخط اليد، والنصوص العمودية، والمائلة، والمنحنية — عبر لغات متعددة مثل الصينية المبسطة، والصينية التقليدية، والإنجليزية، واليابانية. وتشمل الميزات الرئيسية معالجة قوية للتخطيطات المعقدة، وأحجام النص المتغيرة، والخلفيات الصعبة، مما يجعله مناسبًا للتطبيقات العملية مثل تحليل المستندات، والتعرف على لوحات السيارات، وكشف النص في المشاهد.

## الاستخدام

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

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

```python
import requests
from PIL import Image

from transformers import pipeline

image = Image.open(
    requests.get(
        "https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/paddle_general_ocr_001.png", stream=True
    ).raw)
detector = pipeline(
    task="object-detection",
    model="PaddlePaddle/PP-OCRV5_mobile_det_safetensors",
    device_map="auto",
)
results = detector(image)

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

```python
import requests
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForObjectDetection

model_path="PaddlePaddle/PP-OCRv5_mobile_det_safetensors"
model = AutoModelForObjectDetection.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_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_object_detection(outputs, target_sizes=inputs["target_sizes"])

for result in results:
    print(result["boxes"])
    print(result["scores"])
```

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

إليك الطريقة التي يمكنك من خلالها القيام بذلك باستخدام PP-OCRV5_Mobile_Det مع [Pipeline](/docs/transformers/main/ar/main_classes/pipelines#transformers.Pipeline) أو [AutoModel](/docs/transformers/main/ar/model_doc/auto#transformers.AutoModel):

```python
import requests
from PIL import Image

from transformers import pipeline

image = Image.open(
    requests.get(
        "https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/paddle_general_ocr_001.png", stream=True
    ).raw)
detector = pipeline(
    task="object-detection",
    model="PaddlePaddle/PP-OCRV5_mobile_det_safetensors",
    device_map="auto",
)
results = detector([image, image])

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

```python
import requests
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForObjectDetection

model_path="PaddlePaddle/PP-OCRv5_mobile_det_safetensors"
model = AutoModelForObjectDetection.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_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_object_detection(outputs, target_sizes=inputs["target_sizes"])

for result in results:
    print(result["boxes"])
    print(result["scores"])
```

## PPOCRV5MobileDetForObjectDetection[[transformers.PPOCRV5MobileDetForObjectDetection]]

#### transformers.PPOCRV5MobileDetForObjectDetection[[transformers.PPOCRV5MobileDetForObjectDetection]]

```python
transformers.PPOCRV5MobileDetForObjectDetection(config: PPOCRV5MobileDetConfig)
```

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

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

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

نموذج PPOCRV5 Mobile Det لكشف الكائنات (النص). يغلّف النموذج الأساسي PPOCRV5MobileDetModel ويعيد مخرجات متوافقة مع واجهة برمجة تطبيقات كشف الكائنات في Transformers.

يرث هذا النموذج من [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 لكل ما يتعلق بالاستخدام العام والسلوك.

## PPOCRV5MobileDetConfig[[transformers.PPOCRV5MobileDetConfig]]

#### transformers.PPOCRV5MobileDetConfig[[transformers.PPOCRV5MobileDetConfig]]

```python
transformers.PPOCRV5MobileDetConfig(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, backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, reduction: int = 4, neck_out_channels: int = 96, interpolate_mode: str = 'nearest', kernel_list: list[int] | tuple[int, ...] = (3, 2, 2), layer_list_out_channels: list[int] | tuple[int, ...] = (12, 18, 42, 360))
```

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

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

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

reduction (`int`, *اختياري*، القيمة الافتراضية 4) : عامل الاختزال لأبعاد قنوات الميزات، يُستخدم لتقليل عدد معاملات النموذج والتعقيد الحسابي مع الحفاظ على قابلية تمثيل الميزات.

neck_out_channels (`int`، *اختياري*، القيمة الافتراضية 96) : عدد قنوات الإخراج من شبكة العنق، وهي المسؤولة عن دمج الميزات وتحسينها قبل تمريرها إلى شبكة الرأس.

interpolate_mode (`str`، *اختياري*، القيمة الافتراضية `"nearest"`) : وضع الاستيفاء المستخدم لزيادة أو تقليل حجم خرائط الميزات في شبكة العنق. تشمل الأوضاع المدعومة `"nearest"` (استيفاء الجار الأقرب) و`"bilinear"`.

kernel_list (`List[int]`، *اختياري*، القيمة الافتراضية `[3, 2, 2]`) : قائمة أحجام النواة للطبقات التلافيفية في شبكة الرأس، وتُستخدم لاستخراج الميزات متعددة المقاييس لكشف مناطق النص ذات الأحجام المختلفة.

layer_list_out_channels (`List[int]`، *اختياري*، القيمة الافتراضية `[12, 18, 42, 360]`) : قائمة قنوات الإخراج لكل مرحلة من مراحل الهيكل العظمي (backbone)، وتُستخدم لضبط قنوات الإدخال لطبقات RSE في شبكة العنق (neck) من أجل دمج الميزات متعددة المقاييس.

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

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

## PPOCRV5MobileDetModel[[transformers.PPOCRV5MobileDetModel]]

#### transformers.PPOCRV5MobileDetModel[[transformers.PPOCRV5MobileDetModel]]

```python
transformers.PPOCRV5MobileDetModel(config: PPOCRV5MobileDetConfig)
```

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

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

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

النواة الأساسية PP-OCRv5_mobile_det، وتتكون من شبكات Backbone وNeck وHead. تولّد خرائط تجزئة نصية ثنائية (binary) لمهام كشف النص.

يرث هذا النموذج من [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 لكل ما يتعلق بالاستخدام العام والسلوك.

