# PP-OCRv6_small_det

## نظرة عامة

PP-OCRv6_small_det هو النموذج الصغير في سلسلة PP-OCRv6 للكشف التي طوّرها فريق PaddleOCR. يستخدم LCNetV4 كهيكل أساسي وRepLKFPN كعنق هرم الميزات، مما يوفر تحديدًا دقيقًا للنص عبر سيناريوهات متنوعة تشمل النص المكتوب بخط اليد، والمطبوع، والمائل، والمنحني، والفني، بعدة لغات. يحتوي النموذج على 2.48 مليون معامل.

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

## الاستخدام

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

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

```python
from io import BytesIO

from huggingface_hub.utils import httpx
from PIL import Image
from transformers import AutoImageProcessor, AutoModelForObjectDetection
from transformers.image_utils import load_image

model_path = "PaddlePaddle/PP-OCRv6_small_det_safetensors" # or "PaddlePaddle/PP-OCRv6_tiny_det_safetensors"
model = AutoModelForObjectDetection.from_pretrained(model_path, device_map="auto")
image_processor = AutoImageProcessor.from_pretrained(model_path)

image_url = "https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/paddle_general_ocr_001.png"
image = load_image(image_url)
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"],
    threshold=0.2,
    box_threshold=0.45,
    max_candidates=3000,
    unclip_ratio=1.4,
)

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

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

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

```python
from io import BytesIO

from huggingface_hub.utils import httpx
from PIL import Image
from transformers import AutoImageProcessor, AutoModelForObjectDetection
from transformers.image_utils import load_image

model_path = "PaddlePaddle/PP-OCRv6_small_det_safetensors" # or "PaddlePaddle/PP-OCRv6_tiny_det_safetensors"
model = AutoModelForObjectDetection.from_pretrained(model_path, device_map="auto")
image_processor = AutoImageProcessor.from_pretrained(model_path)

image_url = "https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/paddle_general_ocr_001.png"
image = load_image(image_url)
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"],
    threshold=0.2,
    box_threshold=0.45,
    max_candidates=3000,
    unclip_ratio=1.4,
)

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

## PPOCRV6SmallDetForObjectDetection[[transformers.PPOCRV6SmallDetForObjectDetection]]

#### transformers.PPOCRV6SmallDetForObjectDetection[[transformers.PPOCRV6SmallDetForObjectDetection]]

```python
transformers.PPOCRV6SmallDetForObjectDetection(config: PPOCRV6SmallDetConfig)
```

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

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

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

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

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

## PPOCRV6SmallDetConfig[[transformers.PPOCRV6SmallDetConfig]]

#### transformers.PPOCRV6SmallDetConfig[[transformers.PPOCRV6SmallDetConfig]]

```python
transformers.PPOCRV6SmallDetConfig(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), dilated_kernel_size: int = 7)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv6_small_det/configuration_pp_ocrv6_small_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) من أجل دمج الميزات متعددة المقاييس.

dilated_kernel_size (`int`، *اختياري*، القيمة الافتراضية 7) : حجم النواة للطبقة الالتفافية المُمدَّدة في مسار الالتفاف المدخل، ويُستخدم لالتقاط الاعتماديات طويلة المدى في خرائط الميزات.

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

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

## PPOCRV6SmallDetModel[[transformers.PPOCRV6SmallDetModel]]

#### transformers.PPOCRV6SmallDetModel[[transformers.PPOCRV6SmallDetModel]]

```python
transformers.PPOCRV6SmallDetModel(config: PPOCRV6SmallDetConfig)
```

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

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

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

نموذج Pp Ocrv6 Small Det الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.

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

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

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

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

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

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

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

تتجاوز طريقة [PPOCRV6SmallDetModel](/docs/transformers/main/ar/model_doc/pp_ocrv6_small_det#transformers.PPOCRV6SmallDetModel) الخاصة بالتقديم (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)`.

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

