# LayoutLMV2

## نظرة عامة

قُدِّم نموذج LayoutLMV2 في [LayoutLMv2: Multi-modal Pre-training for Visually-Rich Document Understanding](https://huggingface.co/papers/2012.14740) بواسطة Yang Xu وYiheng Xu وTengchao Lv وLei Cui وFuru Wei وGuoxin Wang وYijuan Lu وDinei Florencio وCha Zhang وWanxiang Che وMin Zhang وLidong Zhou. يحسّن LayoutLMV2 نموذج [LayoutLM](layoutlm) للحصول على نتائج متقدمة على مستوى الفن في عدة معايير تقييم لفهم صور المستندات:

- استخراج المعلومات من المستندات الممسوحة ضوئيًا: مجموعة بيانات [FUNSD](https://guillaumejaume.github.io/FUNSD/) (مجموعة من 199 نموذجًا مُعلَّمًا تضم أكثر من 30,000 كلمة)، ومجموعة بيانات [CORD](https://github.com/clovaai/cord) (مجموعة من 800 إيصال للتدريب، و100 للتحقق، و100 للاختبار)، ومجموعة بيانات [SROIE](https://rrc.cvc.uab.es/?ch=13) (مجموعة من 626 إيصالًا للتدريب و347 إيصالًا للاختبار)، ومجموعة بيانات [Kleister-NDA](https://github.com/applicaai/kleister-nda) (مجموعة من اتفاقيات عدم الإفصاح من قاعدة بيانات EDGAR، وتشمل 254 مستندًا للتدريب، و83 مستندًا للتحقق، و203 مستندًا للاختبار).
- تصنيف الصور المستندة إلى المستندات: مجموعة بيانات [RVL-CDIP](https://www.cs.cmu.edu/~aharley/rvl-cdip/) (مجموعة من 400,000 صورة تنتمي إلى إحدى 16 فئة).
- الإجابة عن أسئلة حول المستندات: مجموعة بيانات [DocVQA](https://huggingface.co/papers/2007.00398) (مجموعة مكوّنة من 50,000 سؤال مُعرَّفة على أكثر من 12,000 صورة مستند).

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

*أثبت التدريب المسبق للنص والتخطيط فعاليته في مجموعة متنوعة من مهام فهم المستندات الغنية بصريًا، وذلك بفضل بنية النموذج الفعالة وميزة المستندات الممسوحة ضوئيًا أو الرقمية المولّدة رقميًا غير الموسومة على نطاق واسع. في هذه الورقة، نقدم LayoutLMv2 من خلال تدريب النص والتخطيط والصورة مسبقًا في إطار متعدد الوسائط، حيث يتم الاستفادة من بنى نماذج ومهام تدريب مسبق جديدة. على وجه التحديد، لا يستخدم LayoutLMv2 مهمة نمذجة اللغة البصرية المقنعة الموجودة مسبقًا فحسب، بل يستخدم أيضًا مهام محاذاة النص مع الصورة ومطابقة النص مع الصورة الجديدة في مرحلة التدريب المسبق، حيث يتم تعلم التفاعل بين الوسائط بشكل أفضل. وفي الوقت نفسه، يدمج آلية انتباه ذاتي واعية بالموقع في بنية Transformer، بحيث يمكن للنموذج فهم العلاقة الموضعية النسبية بين كتل النص المختلفة بشكل كامل. تُظهر نتائج التجارب أن LayoutLMv2 يتفوق على الخطوط الأساسية القوية ويحقق نتائج جديدة من الطراز الأول في مجموعة واسعة من مهام فهم المستندات الغنية بصريًا في المراحل اللاحقة، بما في ذلك FUNSD (0.7895 -> 0.8420)، وCORD (0.9493 -> 0.9601)، وSROIE (0.9524 -> 0.9781)، وKleister-NDA (0.834 -> 0.852)، وRVL-CDIP (0.9443 -> 0.9564)، وDocVQA (0.7295 -> 0.8672). النموذج LayoutLMv2 المدرّب مسبقًا متاح للعموم في هذا الرابط.*

يعتمد LayoutLMv2 على `detectron2` و`torchvision` و`tesseract`. نفّذ ما يلي لتثبيتها:

```bash
python -m pip install 'git+https://github.com/facebookresearch/detectron2.git'
python -m pip install torchvision tesseract
```

(إذا كنت تقوم بتطوير نموذج LayoutLMv2، فانتبه إلى أن اجتياز اختبارات doctests يتطلب أيضًا تثبيت هذه الحزم.)

## نصائح للاستخدام

- الفرق الرئيسي بين LayoutLMv1 و LayoutLMv2 هو أن الثاني يدمج التضمينات البصرية أثناء التدريب المسبق (بينما يضيف LayoutLMv1 التضمينات البصرية فقط أثناء الضبط الدقيق).
- يضيف LayoutLMv2 انحياز انتباه نسبيًا أحادي البعد (1D) وكذلك انحياز انتباه مكانيًا ثنائي البعد (2D) إلى درجات الانتباه في طبقات الانتباه الذاتي. يمكن العثور على التفاصيل في الصفحة 5 من [الورقة البحثية](https://huggingface.co/papers/2012.14740).
- يمكن العثور على كراسات تجريبية توضّح كيفية استخدام نموذج LayoutLMv2 على مجموعات بيانات RVL-CDIP وFUNSD وDocVQA وCORD [هنا](https://github.com/NielsRogge/Transformers-Tutorials).
- يستخدم LayoutLMv2 حزمة [Detectron2](https://github.com/facebookresearch/detectron2/) من Facebook AI كعمود فقري بصري. راجع [هذا الرابط](https://detectron2.readthedocs.io/en/latest/tutorials/install.html) لتعليمات التثبيت.
- بالإضافة إلى `input_ids`، يتوقع [forward()](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2Model.forward) مدخلين إضافيين، وهما `image` و`bbox`. يتوافق مدخل `image` مع صورة المستند الأصلية التي تظهر فيها رموز النص. يتوقع النموذج أن تكون كل صورة مستند بحجم 224x224. وهذا يعني أنه إذا كان لديك دفعة من صور المستندات، فيجب أن يكون `image` متجهًا (tensor) بشكل (batch_size, 3, 224, 224). يمكن أن يكون هذا إما `torch.Tensor` أو `Detectron2.structures.ImageList`. لا حاجة إلى تطبيع القنوات، لأن النموذج يقوم بذلك. من المهم ملاحظة أن العمود الفقري البصري (visual backbone) يتوقع قنوات BGR بدلاً من RGB، حيث أن جميع النماذج في Detectron2 تم تدريبها مسبقًا باستخدام تنسيق BGR. مدخل `bbox` هو صناديق الحدود (أي المواضع ثنائية الأبعاد) لرموز النص المدخلة. وهذا مطابق تمامًا لـ[LayoutLMModel](/docs/transformers/main/ar/model_doc/layoutlm#transformers.LayoutLMModel). يمكن الحصول على هذه الصناديق باستخدام محرك OCR خارجي مثل [Tesseract](https://github.com/tesseract-ocr/tesseract) من Google (يتوفر [Python wrapper](https://pypi.org/project/pytesseract/)). يجب أن يكون كل صندوق حدود بتنسيق (x0, y0, x1, y1)، حيث يتوافق (x0, y0) مع موضع الزاوية العلوية اليسرى في صندوق الحدود، ويمثل (x1, y1) موضع الزاوية السفلية اليمنى. لاحظ أنه يجب أولاً تطبيع صناديق الحدود لتكون على مقياس من 0 إلى 1000. لتطبيعها، يمكنك استخدام الدالة التالية:

```python
def normalize_bbox(bbox, width, height):
    return [
        int(1000 * (bbox[0] / width)),
        int(1000 * (bbox[1] / height)),
        int(1000 * (bbox[2] / width)),
        int(1000 * (bbox[3] / height)),
    ]
```

هنا، `width` و`height` يتوافقان مع عرض وارتفاع المستند الأصلي الذي يظهر فيه الرمز (قبل تغيير حجم الصورة). يمكن الحصول عليهما باستخدام مكتبة Python Image Library (PIL) على سبيل المثال، على النحو التالي:

```python
from PIL import Image

image = Image.open(
    "name_of_your_document - can be a png, jpg, etc. of your documents (PDFs must be converted to images)."
)

width, height = image.size
```

ومع ذلك، يتضمن هذا النموذج [LayoutLMv2Processor](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2Processor) جديدًا كليًا يمكن استخدامه لتحضير البيانات للنموذج مباشرةً (بما في ذلك تطبيق التعرف الضوئي على الحروف في الخلفية). يمكن العثور على مزيد من المعلومات في قسم "الاستخدام" أدناه.

- داخليًا، سيقوم [LayoutLMv2Model](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2Model) بإرسال مدخل `image` عبر العمود الفقري البصري الخاص به للحصول على خريطة ميزات بدقة أقل، يكون شكلها مساويًا لسمة `image_feature_pool_shape` في [LayoutLMv2Config](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2Config). ثم يتم تسطيح هذه الخريطة للحصول على تسلسل من رموز الصورة. وبما أن حجم خريطة الميزات هو 7x7 افتراضيًا، فإننا نحصل على 49 رمزًا للصورة. ثم يتم دمج هذه الرموز مع رموز النص وإرسالها عبر مُشفِّر Transformer. وهذا يعني أن حالات الإخفاء الأخيرة للنموذج سيكون طولها 512 + 49 = 561، إذا قمت بتعبئة رموز النص حتى الطول الأقصى. وبشكل أكثر عمومية، سيكون لحالات الإخفاء الأخيرة شكل `seq_length` + `image_feature_pool_shape[0]` * `config.image_feature_pool_shape[1]`.
- عند استدعاء [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained)، سيتم طباعة تحذير يتضمن قائمة طويلة بأسماء المعاملات غير المُهيّأة. هذا ليس مشكلة، إذ إن هذه المعاملات هي إحصاءات تطبيع الدفعة (batch normalization statistics)، والتي ستحمل قيمًا عند ضبط النموذج الدقيق (fine-tuning) على مجموعة بيانات مخصصة.
- إذا كنت ترغب في تدريب النموذج في بيئة موزعة، فتأكد من استدعاء `synchronize_batch_norm` على النموذج من أجل مزامنة طبقات تطبيع الدفعة الخاصة بالهيكل البصري بشكل صحيح.

بالإضافة إلى ذلك، يوجد LayoutXLM، وهو نسخة متعددة اللغات من LayoutLMv2. يمكن العثور على مزيد من المعلومات في [صفحة توثيق LayoutXLM](layoutxlm).

## الموارد

قائمة بالموارد الرسمية من Hugging Face وموارد المجتمع (المشار إليها بـ 🌎) لمساعدتك على البدء باستخدام LayoutLMv2. إذا كنت مهتمًا بتقديم مورد ليُدرج هنا، فلا تتردد في فتح طلب سحب (Pull Request) وسنقوم بمراجعته! يُفضَّل أن يُظهر المورد شيئًا جديدًا بدلاً من تكرار مورد موجود مسبقًا.

- دفتر ملاحظات حول كيفية [ضبط نموذج LayoutLMv2 بدقة أعلى لتصنيف النصوص على مجموعة بيانات RVL-CDIP](https://colab.research.google.com/github/NielsRogge/Transformers-Tutorials/blob/master/LayoutLMv2/RVL-CDIP/Fine_tuning_LayoutLMv2ForSequenceClassification_on_RVL_CDIP.ipynb).
- انظر أيضاً: [دليل مهمة تصنيف النصوص](../tasks/sequence_classification)

- دفتر ملاحظات حول كيفية [ضبط LayoutLMv2 بشكل دقيق للإجابة على الأسئلة على مجموعة بيانات DocVQA](https://colab.research.google.com/github/NielsRogge/Transformers-Tutorials/blob/master/LayoutLMv2/DocVQA/Fine_tuning_LayoutLMv2ForQuestionAnswering_on_DocVQA.ipynb).
- انظر أيضًا: [دليل مهمة الإجابة على الأسئلة](../tasks/question_answering)
- انظر أيضاً: [دليل مهمة الإجابة على أسئلة المستندات](../tasks/document_question_answering)

- دفتر ملاحظات حول كيفية [ضبط نموذج LayoutLMv2 بدقة على مستوى التصنيف الرمزي على مجموعة بيانات CORD](https://colab.research.google.com/github/NielsRogge/Transformers-Tutorials/blob/master/LayoutLMv2/CORD/Fine_tuning_LayoutLMv2ForTokenClassification_on_CORD.ipynb).
- دفتر ملاحظات حول كيفية [ضبط نموذج LayoutLMv2 على نحو دقيق لتصنيف الرموز على مجموعة بيانات FUNSD](https://colab.research.google.com/github/NielsRogge/Transformers-Tutorials/blob/master/LayoutLMv2/FUNSD/Fine_tuning_LayoutLMv2ForTokenClassification_on_FUNSD_using_HuggingFace_Trainer.ipynb).
- انظر أيضاً: [دليل مهمة تصنيف الرموز](../tasks/token_classification)

## الاستخدام: LayoutLMv2Processor

أسهل طريقة لتحضير البيانات للنموذج هي استخدام [LayoutLMv2Processor](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2Processor)، والذي يجمع داخليًا بين معالج صور ([LayoutLMv2ImageProcessor](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2ImageProcessor)) ومجزّئ ([LayoutLMv2Tokenizer](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2Tokenizer) أو [LayoutLMv2TokenizerFast](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2Tokenizer)). يتولى معالج الصور معالجة نمط الصور، بينما يتولى المجزّئ معالجة نمط النص. يجمع المعالج بين النمطين معًا، وهو ما يناسب نموذجًا متعدد الوسائط مثل LayoutLMv2. لاحظ أنه يمكنك استخدام كلاهما بشكل منفصل إذا كنت ترغب في معالجة نمط واحد فقط.

```python
from transformers import LayoutLMv2ImageProcessor, LayoutLMv2Processor, LayoutLMv2TokenizerFast

image_processor = LayoutLMv2ImageProcessor()  # apply_ocr is set to True by default
tokenizer = LayoutLMv2TokenizerFast.from_pretrained("microsoft/layoutlmv2-base-uncased")
processor = LayoutLMv2Processor(image_processor, tokenizer)
```

باختصار، يمكن تقديم صورة مستند (وإمكانية تقديم بيانات إضافية) إلى [LayoutLMv2Processor](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2Processor)، وسيقوم بإنشاء المدخلات المتوقعة من قبل النموذج. داخلياً، يستخدم المعالج أولاً [LayoutLMv2ImageProcessor](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2ImageProcessor) لتطبيق التعرف الضوئي على الحروف على الصورة للحصول على قائمة بالكلمات ومربعات الحدود المعيارية، وكذلك لتغيير حجم الصورة إلى حجم معين للحصول على مدخل `image`. ثم تُقدَّم الكلمات ومربعات الحدود المعيارية إلى [LayoutLMv2Tokenizer](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2Tokenizer) أو [LayoutLMv2TokenizerFast](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2Tokenizer)، والتي تحولها إلى `input_ids` و`attention_mask` و`token_type_ids` و`bbox` على مستوى الرموز. اختيارياً، يمكن تقديم تسميات الكلمات إلى المعالج، والتي تُحوَّل إلى `labels` على مستوى الرموز.

يستخدم [LayoutLMv2Processor](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2Processor) في الخلفية [PyTesseract](https://pypi.org/project/pytesseract/)، وهو غلاف بلغة بايثون حول محرك تesseract OCR من Google. لاحظ أنه يمكنك ما زال استخدام محرك OCR الخاص بك، وتوفير الكلمات والصناديق المعيارية بنفسك. ويتطلب ذلك تهيئة [LayoutLMv2ImageProcessor](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2ImageProcessor) مع ضبط `apply_ocr` على `False`.

بشكل إجمالي، هناك 5 حالات استخدام يدعمها المعالج. أدناه، نذكرها جميعًا. لاحظ أن كل حالة من هذه الحالات تعمل مع المدخلات المجمعة وغير المجمعة (نوضحها هنا للمدخلات غير المجمعة).

**حالة الاستخدام 1: تصنيف صور المستندات (التدريب، الاستدلال) + تصنيف الرموز (الاستدلال)، apply_ocr = True**

هذا هو أبسط حالة، حيث سيقوم المعالج (المعالج المخصص للصور تحديداً) بتنفيذ التعرف الضوئي على الحروف (OCR) على الصورة لاستخراج الكلمات وصناديق الحدود المعيارية.

```python
from PIL import Image

from transformers import LayoutLMv2Processor

processor = LayoutLMv2Processor.from_pretrained("microsoft/layoutlmv2-base-uncased")

image = Image.open(
    "name_of_your_document - can be a png, jpg, etc. of your documents (PDFs must be converted to images)."
).convert("RGB")
encoding = processor(
    image, return_tensors="pt"
)  # you can also add all tokenizer parameters here such as padding, truncation
print(encoding.keys())
# dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'bbox', 'image'])
```

**حالة الاستخدام 2: تصنيف صور المستندات (التدريب، الاستدلال) + تصنيف الرموز (الاستدلال)، apply_ocr=False**

في حال الرغبة في تنفيذ التعرف الضوئي على الحروف (OCR) بشكل مستقل، يمكن تهيئة معالج الصور مع ضبط `apply_ocr` على `False`. في هذه الحالة، ينبغي تقديم الكلمات وصناديق الحدود (المُطَبَّعة) المقابلة لها إلى المعالج بشكل يدوي.

```python
from PIL import Image

from transformers import LayoutLMv2Processor

processor = LayoutLMv2Processor.from_pretrained("microsoft/layoutlmv2-base-uncased", revision="no_ocr")

image = Image.open(
    "name_of_your_document - can be a png, jpg, etc. of your documents (PDFs must be converted to images)."
).convert("RGB")
words = ["hello", "world"]
boxes = [[1, 2, 3, 4], [5, 6, 7, 8]]  # make sure to normalize your bounding boxes
encoding = processor(image, words, boxes=boxes, return_tensors="pt").to(model.device)
print(encoding.keys())
# dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'bbox', 'image'])
```

**حالة الاستخدام 3: تصنيف الرموز (التدريب)، apply_ocr=False**

في مهام تصنيف الرموز (مثل FUNSD وCORD وSROIE وKleister-NDA)، يمكن أيضًا توفير تسميات الكلمات المقابلة لتدريب نموذج. سيقوم المعالج بعد ذلك بتحويل هذه التسميات إلى تسميات على مستوى الرمز `labels`. افتراضيًا، سيُسمي فقط أول جزء كلمة من الكلمة، ويُسمي الأجزاء المتبقية بـ -100، وهو `ignore_index` الخاص بـ CrossEntropyLoss في PyTorch. إذا كنت ترغب في تسمية جميع أجزاء الكلمة، يمكنك تهيئة المُقسّم مع ضبط `only_label_first_subword` على `False`.

```python
from PIL import Image

from transformers import LayoutLMv2Processor

processor = LayoutLMv2Processor.from_pretrained("microsoft/layoutlmv2-base-uncased", revision="no_ocr")

image = Image.open(
    "name_of_your_document - can be a png, jpg, etc. of your documents (PDFs must be converted to images)."
).convert("RGB")
words = ["hello", "world"]
boxes = [[1, 2, 3, 4], [5, 6, 7, 8]]  # make sure to normalize your bounding boxes
word_labels = [1, 2]
encoding = processor(image, words, boxes=boxes, word_labels=word_labels, return_tensors="pt").to(model.device)
print(encoding.keys())
# dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'bbox', 'labels', 'image'])
```

**حالة الاستخدام 4: الإجابة على الأسئلة البصرية (الاستدلال)، apply_ocr=True**

لمهام الإجابة عن الأسئلة البصرية (مثل DocVQA)، يمكنك تقديم سؤال إلى المعالج. افتراضيًا، سيطبّق المعالج تقنية التعرف الضوئي على الحروف (OCR) على الصورة، وينشئ [CLS] رموز السؤال [SEP] رموز الكلمات [SEP].

```python
from PIL import Image

from transformers import LayoutLMv2Processor

processor = LayoutLMv2Processor.from_pretrained("microsoft/layoutlmv2-base-uncased")

image = Image.open(
    "name_of_your_document - can be a png, jpg, etc. of your documents (PDFs must be converted to images)."
).convert("RGB")
question = "What's his name?"
encoding = processor(image, question, return_tensors="pt").to(model.device)
print(encoding.keys())
# dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'bbox', 'image'])
```

**حالة الاستخدام 5: الإجابة على الأسئلة البصرية (الاستدلال)، apply_ocr=False**

لمهام الإجابة عن الأسئلة البصرية (مثل DocVQA)، يمكنك تقديم سؤال إلى المعالج. إذا كنت ترغب في تنفيذ التعرف الضوئي على الحروف بنفسك، يمكنك تقديم كلماتك الخاصة ومربعات الحدود (المُطَبَّعة) إلى المعالج.

```python
from PIL import Image

from transformers import LayoutLMv2Processor

processor = LayoutLMv2Processor.from_pretrained("microsoft/layoutlmv2-base-uncased", revision="no_ocr")

image = Image.open(
    "name_of_your_document - can be a png, jpg, etc. of your documents (PDFs must be converted to images)."
).convert("RGB")
question = "What's his name?"
words = ["hello", "world"]
boxes = [[1, 2, 3, 4], [5, 6, 7, 8]]  # make sure to normalize your bounding boxes
encoding = processor(image, question, words, boxes=boxes, return_tensors="pt").to(model.device)
print(encoding.keys())
# dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'bbox', 'image'])
```

## LayoutLMv2Config[[transformers.LayoutLMv2Config]]

#### transformers.LayoutLMv2Config[[transformers.LayoutLMv2Config]]

```python
transformers.LayoutLMv2Config(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, vocab_size: int = 30522, hidden_size: int = 768, num_hidden_layers: int = 12, num_attention_heads: int = 12, intermediate_size: int = 3072, hidden_act: str = 'gelu', hidden_dropout_prob: float | int = 0.1, attention_probs_dropout_prob: float | int = 0.1, max_position_embeddings: int = 512, type_vocab_size: int = 2, initializer_range: float = 0.02, layer_norm_eps: float = 1e-12, pad_token_id: int | None = 0, max_2d_position_embeddings: int = 1024, max_rel_pos: int = 128, rel_pos_bins: int = 32, fast_qkv: bool = True, max_rel_2d_pos: int = 256, rel_2d_pos_bins: int = 64, convert_sync_batchnorm: bool = True, image_feature_pool_shape: list[int] | tuple[int, ...] = (7, 7, 256), coordinate_size: int = 128, shape_size: int = 128, has_relative_attention_bias: bool = True, has_spatial_attention_bias: bool = True, has_visual_segment_embedding: bool = False, detectron2_config_args: dict | None = None)
```

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

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

vocab_size (`int`، *اختياري*، القيمة الافتراضية `30522`) : حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطة `input_ids`.

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

num_hidden_layers (`int`، *اختياري*، القيمة الافتراضية `12`) : عدد الطبقات المخفية في مُفكِّك Transformer.

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

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

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

hidden_dropout_prob (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.1`) : احتمال الإسقاط (dropout) لجميع الطبقات المتصلة بالكامل في التضمينات (embeddings) والمُشفِّر (encoder) والمُجمِّع (pooler).

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

max_position_embeddings (`int`، *اختياري*، القيمة الافتراضية `512`) : أقصى طول تسلسل قد يُستخدم مع هذا النموذج.

type_vocab_size (`int`، *اختياري*، القيمة الافتراضية `2`) : حجم مفردات `token_type_ids`.

initializer_range (`float`، *اختياري*، القيمة الافتراضية `0.02`) : الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.

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

pad_token_id (`int`، *اختياري*، القيمة الافتراضية `0`) : معرّف الرمز المستخدم للتعبئة في المفردات.

max_2d_position_embeddings (`int`، *اختياري*، القيمة الافتراضية 1024) : القيمة القصوى التي قد يُستخدم معها تضمين الموقع ثنائي الأبعاد. يُنصح عادةً بإعداد هذه القيمة إلى رقم كبير احتياطًا (مثل 1024).

max_rel_pos (`int`، *اختياري*، القيمة الافتراضية 128) : الحد الأقصى لعدد المواضع النسبية المستخدمة في آلية الانتباه الذاتي.

rel_pos_bins (`int`، *اختياري*، القيمة الافتراضية 32) : عدد دلاء الموضع النسبي المستخدمة في آلية الانتباه الذاتي.

fast_qkv (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم استخدام مصفوفة واحدة للاستعلامات والمفاتيح والقيم في طبقات الانتباه الذاتي.

max_rel_2d_pos (`int`، *اختياري*، القيمة الافتراضية 256) : الحد الأقصى لعدد المواضع النسبية ثنائية الأبعاد في آلية الانتباه الذاتي.

rel_2d_pos_bins (`int`، *اختياري*، القيمة الافتراضية 64) : عدد خلايا المواقع النسبية ثنائية الأبعاد في آلية الانتباه الذاتي.

convert_sync_batchnorm (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تحويل طبقات تطبيع الدفعة (batch normalization) إلى طبقات تطبيع دفعة متزامنة (synchronized batch normalization) أم لا.

image_feature_pool_shape (`list[int]`، *اختياري*، القيمة الافتراضية `[7, 7, 256]`) : شكل خريطة الميزات المُجمَّعة بمتوسط التجميع.

coordinate_size (`int`، *اختياري*، القيمة الافتراضية 128) : بُعد تضمينات الإحداثيات.

shape_size (`int`، *اختياري*، القيمة الافتراضية 128) : بُعد تضمينات العرض والارتفاع.

has_relative_attention_bias (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم استخدام انحياز انتباه نسبي في آلية الانتباه الذاتي أم لا.

has_spatial_attention_bias (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم استخدام انحياز انتباه مكاني في آلية الانتباه الذاتي أم لا.

has_visual_segment_embedding (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان يجب إضافة تضمينات المقاطع البصرية أم لا.

detectron2_config_args (`dict`، *اختياري*) : قاموس يحتوي على حُجج التهيئة للعمود الفقري البصري في Detectron2. راجع [هذا الملف](https://github.com/microsoft/unilm/blob/master/layoutlmft/layoutlmft/models/layoutlmv2/detectron2_config.py) للتفاصيل المتعلقة بالقيم الافتراضية.

هذه فئة الإعدادات المخزنة لإعدادات نموذج LayoutLMv2Model. تُستخدم لاستحداث نموذج Layoutlmv2 وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [microsoft/layoutlmv2-base-uncased](https://huggingface.co/microsoft/layoutlmv2-base-uncased)

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

مثال:

```python
>>> from transformers import LayoutLMv2Config, LayoutLMv2Model

>>> # Initializing a LayoutLMv2 microsoft/layoutlmv2-base-uncased style configuration
>>> configuration = LayoutLMv2Config()

>>> # Initializing a model (with random weights) from the microsoft/layoutlmv2-base-uncased style configuration
>>> model = LayoutLMv2Model(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```

## LayoutLMv2ImageProcessor[[transformers.LayoutLMv2ImageProcessor]]

#### transformers.LayoutLMv2ImageProcessor[[transformers.LayoutLMv2ImageProcessor]]

```python
transformers.LayoutLMv2ImageProcessor(**kwargs: *<class 'transformers.models.layoutlmv2.image_processing_layoutlmv2.LayoutLMv2ImageProcessorKwargs'>)
```

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

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

do_convert_rgb (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تحويل الصورة إلى RGB.

do_resize (`bool`، *kwargs*، *اختياري*، الافتراضي هو `True`) : ما إذا كان سيتم تغيير حجم الصورة.

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*، القيمة الافتراضية هي `{'height' : 224, 'width': 224}`): يصف الأبعاد القصوى للمدخلات إلى النموذج.

default_to_square (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كان الحجم من نوع عدد صحيح.

crop_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*) : حجم الصورة الناتجة بعد تطبيق `center_crop`.

resample (`Annotated[Union[int, PILImageResampling, NoneType], None]`، *kwargs*، القيمة الافتراضية `2`) : مرشح إعادة العينة المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم التعداد `PILImageResampling`. لا يؤثر إلا إذا كانت قيمة `do_resize` هي `True`.

do_rescale (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب إعادة تحجيم الصورة.

rescale_factor (`float`، *kwargs*، *اختياري*، القيمة الافتراضية `None`) : عامل إعادة التحجيم لإعادة تحجيم الصورة إذا كان `do_rescale` مضبوطاً على `True`.

do_normalize (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تطبيع الصورة.

image_mean (`Union[float, list[float], tuple[float, ...]]`، *kwargs*، *اختياري*) : متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

image_std (`Union[float, list[float], tuple[float, ...]]`، *kwargs*، *اختياري*) : الانحراف المعياري للصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

do_pad (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب إضافة حشوة إلى الصورة. يتم تنفيذ الحشوة إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية الحشوة الدقيقة على النموذج.

pad_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : الحجم على شكل `{"height": int, "width" int}` الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّم `pad_size`، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكون `do_pad=True.`

do_center_crop (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب قص الصورة من المنتصف.

data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : يُدعم `ChannelDimension.FIRST` فقط. أُضيف من أجل التوافق مع المعالجات البطيئة.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : تنسيق بُعد القناة للصورة المدخلة. إذا لم يتم ضبطه، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي: - `"channels_first"` أو `ChannelDimension.FIRST`: صورة بتنسيق (num_channels, height, width). - `"channels_last"` أو `ChannelDimension.LAST`: صورة بتنسيق (height, width, num_channels). - `"none"` أو `ChannelDimension.NONE`: صورة بتنسيق (height, width).

device (`Annotated[Union[str, torch.device, NoneType], None]`, *kwargs*) : الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم ضبطه، يُستنتج الجهاز من مقاطع الفيديو المدخلة.

return_tensors (`Annotated[str | ~utils.generic.TensorType | None, None]`, *kwargs*) : تُرجع توتنرات مكدّسة إذا كان الإعداد `'pt'`، وإلا تُرجع قائمة من التوتنرات.

disable_grouping (`bool`، *kwargs*، *اختياري*) : ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157

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

apply_ocr (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية هي `self.apply_ocr`) : ما إذا كان سيتم تطبيق محرك Tesseract OCR للحصول على الكلمات + صناديق الحدود المعيارية. يمكن تجاوز ذلك عبر معامل `apply_ocr` في طريقة `preprocess`.

ocr_lang (`str`، *kwargs*، *اختياري*) : اللغة، المُحدَّدة برمزها القياسي (ISO)، التي سيستخدمها محرك Tesseract OCR. افتراضيًا، تُستخدم اللغة الإنجليزية. يمكن تجاوز ذلك عبر معامل `ocr_lang` في طريقة `preprocess`.

tesseract_config (`str`، *kwargs*، *اختياري*) : أي أعلام تكوين مخصصة إضافية يتم تمريرها إلى معامل `config` عند استدعاء Tesseract. على سبيل المثال: '--psm 6'. يمكن تجاوزها بواسطة معامل `tesseract_config` في طريقة `preprocess`.

ينشئ معالج صور LayoutLMv2ImageProcessor.

#### preprocess[[transformers.LayoutLMv2ImageProcessor.preprocess]]

```python
preprocess(images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']], **kwargs: *<class 'transformers.models.layoutlmv2.image_processing_layoutlmv2.LayoutLMv2ImageProcessorKwargs'>)
```

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

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

images (`Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]`) : الصورة المراد معالجتها مسبقًا. يتوقع صورة واحدة أو دفعة من الصور بقيم بكسل تتراوح بين 0 و255. إذا كنت تمرر صورًا بقيم بكسل بين 0 و1، فاضبط `do_rescale=False`.

do_convert_rgb (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تحويل الصورة إلى RGB.

do_resize (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تغيير حجم الصورة.

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : يصف الأبعاد القصوى للمدخلات إلى النموذج.

default_to_square (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كان الحجم عددًا صحيحًا.

crop_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*) : حجم الصورة الناتجة بعد تطبيق `center_crop`.

resample (`Annotated[Union[int, PILImageResampling, NoneType], None]`, *kwargs*) : مرشح إعادة العينة المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم enum `PILImageResampling`. لا يؤثر إلا إذا كان `do_resize` مضبوطاً على `True`.

do_rescale (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب إعادة تحجيم الصورة.

rescale_factor (`float`، *kwargs*، *اختياري*) : معامل إعادة التحجيم لإعادة تحجيم الصورة إذا كان `do_rescale` مضبوطًا على `True`.

do_normalize (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تطبيع الصورة.

image_mean (`Union[float, list[float], tuple[float, ...]]`، *kwargs*، *اختياري*) : متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

image_std (`Union[float, list[float], tuple[float, ...]]`، *kwargs*، *اختياري*) : الانحراف المعياري للصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

do_pad (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب إضافة حشوة إلى الصورة. يتم تنفيذ الحشوة إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية الحشوة الدقيقة على النموذج.

pad_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : الحجم على شكل `{"height": int, "width" int}` الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّم `pad_size`، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكون `do_pad=True.`

do_center_crop (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب قص الصورة من المنتصف.

data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : يُدعم `ChannelDimension.FIRST` فقط. أُضيف من أجل التوافق مع المعالجات البطيئة.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : تنسيق بُعد القناة للصورة المدخلة. إذا لم يتم ضبطه، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي: - `"channels_first"` أو `ChannelDimension.FIRST`: صورة بتنسيق (num_channels, height, width). - `"channels_last"` أو `ChannelDimension.LAST`: صورة بتنسيق (height, width, num_channels). - `"none"` أو `ChannelDimension.NONE`: صورة بتنسيق (height, width).

device (`Annotated[Union[str, torch.device, NoneType], None]`, *kwargs*) : الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم ضبطه، يُستنتج الجهاز من مقاطع الفيديو المدخلة.

return_tensors (`Annotated[str | ~utils.generic.TensorType | None, None]`, *kwargs*) : تُرجع توتنرات مكدّسة إذا كان الإعداد `'pt'`، وإلا تُرجع قائمة من التوتنرات.

disable_grouping (`bool`، *kwargs*، *اختياري*) : ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157

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

apply_ocr (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية هي `self.apply_ocr`) : ما إذا كان سيتم تطبيق محرك Tesseract OCR للحصول على الكلمات + صناديق الحدود المعيارية. يمكن تجاوز ذلك عبر معامل `apply_ocr` في طريقة `preprocess`.

ocr_lang (`str`، *kwargs*، *اختياري*) : اللغة، المُحدَّدة برمزها القياسي (ISO)، التي سيستخدمها محرك Tesseract OCR. افتراضيًا، تُستخدم اللغة الإنجليزية. يمكن تجاوز ذلك عبر معامل `ocr_lang` في طريقة `preprocess`.

tesseract_config (`str`، *kwargs*، *اختياري*) : أي أعلام تكوين مخصصة إضافية يتم تمريرها إلى معامل `config` عند استدعاء Tesseract. على سبيل المثال: '--psm 6'. يمكن تجاوزها بواسطة معامل `tesseract_config` في طريقة `preprocess`.

**يعيد:** `~image_processing_base.BatchFeature`

- **data** (`dict`) -- قاموس من القوائم/المصفوفات/الموترات التي يعيدها أسلوب __call__ ('pixel_values'، وما إلى ذلك).
- **tensor_type** (`Union[None, str, TensorType]`، *اختياري*) -- يمكنك تحديد tensor_type هنا لتحويل قوائم الأعداد الصحيحة إلى تينسورات PyTorch/Numpy عند التهيئة.

## LayoutLMv2ImageProcessorPil[[transformers.LayoutLMv2ImageProcessorPil]]

#### transformers.LayoutLMv2ImageProcessorPil[[transformers.LayoutLMv2ImageProcessorPil]]

```python
transformers.LayoutLMv2ImageProcessorPil(**kwargs: *<class 'transformers.models.layoutlmv2.image_processing_pil_layoutlmv2.LayoutLMv2ImageProcessorKwargs'>)
```

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

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

do_convert_rgb (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تحويل الصورة إلى RGB.

do_resize (`bool`، *kwargs*، *اختياري*، الافتراضي هو `True`) : ما إذا كان سيتم تغيير حجم الصورة.

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*، القيمة الافتراضية هي `{'height' : 224, 'width': 224}`): يصف الأبعاد القصوى للمدخلات إلى النموذج.

default_to_square (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كان الحجم من نوع عدد صحيح.

crop_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*) : حجم الصورة الناتجة بعد تطبيق `center_crop`.

resample (`Annotated[Union[int, PILImageResampling, NoneType], None]`، *kwargs*، القيمة الافتراضية `2`) : مرشح إعادة العينة المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم التعداد `PILImageResampling`. لا يؤثر إلا إذا كانت قيمة `do_resize` هي `True`.

do_rescale (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب إعادة تحجيم الصورة.

rescale_factor (`float`، *kwargs*، *اختياري*، القيمة الافتراضية `None`) : عامل إعادة التحجيم لإعادة تحجيم الصورة إذا كان `do_rescale` مضبوطاً على `True`.

do_normalize (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تطبيع الصورة.

image_mean (`Union[float, list[float], tuple[float, ...]]`، *kwargs*، *اختياري*) : متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

image_std (`Union[float, list[float], tuple[float, ...]]`، *kwargs*، *اختياري*) : الانحراف المعياري للصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

do_pad (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب إضافة حشوة إلى الصورة. يتم تنفيذ الحشوة إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية الحشوة الدقيقة على النموذج.

pad_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : الحجم على شكل `{"height": int, "width" int}` الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّم `pad_size`، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكون `do_pad=True.`

do_center_crop (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب قص الصورة من المنتصف.

data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : يُدعم `ChannelDimension.FIRST` فقط. أُضيف من أجل التوافق مع المعالجات البطيئة.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : تنسيق بُعد القناة للصورة المدخلة. إذا لم يتم ضبطه، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي: - `"channels_first"` أو `ChannelDimension.FIRST`: صورة بتنسيق (num_channels, height, width). - `"channels_last"` أو `ChannelDimension.LAST`: صورة بتنسيق (height, width, num_channels). - `"none"` أو `ChannelDimension.NONE`: صورة بتنسيق (height, width).

device (`Annotated[Union[str, torch.device, NoneType], None]`, *kwargs*) : الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم ضبطه، يُستنتج الجهاز من مقاطع الفيديو المدخلة.

return_tensors (`Annotated[str | ~utils.generic.TensorType | None, None]`, *kwargs*) : تُرجع توتنرات مكدّسة إذا كان الإعداد `'pt'`، وإلا تُرجع قائمة من التوتنرات.

disable_grouping (`bool`، *kwargs*، *اختياري*) : ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157

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

apply_ocr (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية هي `self.apply_ocr`) : ما إذا كان سيتم تطبيق محرك Tesseract OCR للحصول على الكلمات + صناديق الحدود المعيارية. يمكن تجاوز ذلك عبر معامل `apply_ocr` في طريقة `preprocess`.

ocr_lang (`str`، *kwargs*، *اختياري*) : اللغة، المُحدَّدة برمزها القياسي (ISO)، التي سيستخدمها محرك Tesseract OCR. افتراضيًا، تُستخدم اللغة الإنجليزية. يمكن تجاوز ذلك عبر معامل `ocr_lang` في طريقة `preprocess`.

tesseract_config (`str`، *kwargs*، *اختياري*) : أي أعلام تكوين مخصصة إضافية يتم تمريرها إلى معامل `config` عند استدعاء Tesseract. على سبيل المثال: '--psm 6'. يمكن تجاوزها بواسطة معامل `tesseract_config` في طريقة `preprocess`.

ينشئ معالج صور LayoutLMv2ImageProcessor.

#### preprocess[[transformers.LayoutLMv2ImageProcessorPil.preprocess]]

```python
preprocess(images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']], **kwargs: *<class 'transformers.models.layoutlmv2.image_processing_pil_layoutlmv2.LayoutLMv2ImageProcessorKwargs'>)
```

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

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

images (`Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]`) : الصورة المراد معالجتها مسبقًا. يتوقع صورة واحدة أو دفعة من الصور بقيم بكسل تتراوح بين 0 و255. إذا كنت تمرر صورًا بقيم بكسل بين 0 و1، فاضبط `do_rescale=False`.

do_convert_rgb (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تحويل الصورة إلى RGB.

do_resize (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تغيير حجم الصورة.

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : يصف الأبعاد القصوى للمدخلات إلى النموذج.

default_to_square (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كان الحجم عددًا صحيحًا.

crop_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*) : حجم الصورة الناتجة بعد تطبيق `center_crop`.

resample (`Annotated[Union[int, PILImageResampling, NoneType], None]`, *kwargs*) : مرشح إعادة العينة المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم enum `PILImageResampling`. لا يؤثر إلا إذا كان `do_resize` مضبوطاً على `True`.

do_rescale (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب إعادة تحجيم الصورة.

rescale_factor (`float`، *kwargs*، *اختياري*) : معامل إعادة التحجيم لإعادة تحجيم الصورة إذا كان `do_rescale` مضبوطًا على `True`.

do_normalize (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تطبيع الصورة.

image_mean (`Union[float, list[float], tuple[float, ...]]`، *kwargs*، *اختياري*) : متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

image_std (`Union[float, list[float], tuple[float, ...]]`، *kwargs*، *اختياري*) : الانحراف المعياري للصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

do_pad (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب إضافة حشوة إلى الصورة. يتم تنفيذ الحشوة إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية الحشوة الدقيقة على النموذج.

pad_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : الحجم على شكل `{"height": int, "width" int}` الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّم `pad_size`، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكون `do_pad=True.`

do_center_crop (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب قص الصورة من المنتصف.

data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : يُدعم `ChannelDimension.FIRST` فقط. أُضيف من أجل التوافق مع المعالجات البطيئة.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : تنسيق بُعد القناة للصورة المدخلة. إذا لم يتم ضبطه، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي: - `"channels_first"` أو `ChannelDimension.FIRST`: صورة بتنسيق (num_channels, height, width). - `"channels_last"` أو `ChannelDimension.LAST`: صورة بتنسيق (height, width, num_channels). - `"none"` أو `ChannelDimension.NONE`: صورة بتنسيق (height, width).

device (`Annotated[Union[str, torch.device, NoneType], None]`, *kwargs*) : الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم ضبطه، يُستنتج الجهاز من مقاطع الفيديو المدخلة.

return_tensors (`Annotated[str | ~utils.generic.TensorType | None, None]`, *kwargs*) : تُرجع توتنرات مكدّسة إذا كان الإعداد `'pt'`، وإلا تُرجع قائمة من التوتنرات.

disable_grouping (`bool`، *kwargs*، *اختياري*) : ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157

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

apply_ocr (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية هي `self.apply_ocr`) : ما إذا كان سيتم تطبيق محرك Tesseract OCR للحصول على الكلمات + صناديق الحدود المعيارية. يمكن تجاوز ذلك عبر معامل `apply_ocr` في طريقة `preprocess`.

ocr_lang (`str`، *kwargs*، *اختياري*) : اللغة، المُحدَّدة برمزها القياسي (ISO)، التي سيستخدمها محرك Tesseract OCR. افتراضيًا، تُستخدم اللغة الإنجليزية. يمكن تجاوز ذلك عبر معامل `ocr_lang` في طريقة `preprocess`.

tesseract_config (`str`، *kwargs*، *اختياري*) : أي أعلام تكوين مخصصة إضافية يتم تمريرها إلى معامل `config` عند استدعاء Tesseract. على سبيل المثال: '--psm 6'. يمكن تجاوزها بواسطة معامل `tesseract_config` في طريقة `preprocess`.

**يعيد:** `~image_processing_base.BatchFeature`

- **data** (`dict`) -- قاموس من القوائم/المصفوفات/الموترات التي يعيدها أسلوب __call__ ('pixel_values'، وما إلى ذلك).
- **tensor_type** (`Union[None, str, TensorType]`، *اختياري*) -- يمكنك تحديد tensor_type هنا لتحويل قوائم الأعداد الصحيحة إلى تينسورات PyTorch/Numpy عند التهيئة.

## LayoutLMv2Tokenizer[[transformers.LayoutLMv2Tokenizer]]

#### transformers.LayoutLMv2Tokenizer[[transformers.LayoutLMv2Tokenizer]]

```python
transformers.LayoutLMv2Tokenizer(vocab: str | dict[str, int] | None = None, do_lower_case = True, unk_token = '[UNK]', sep_token = '[SEP]', pad_token = '[PAD]', cls_token = '[CLS]', mask_token = '[MASK]', cls_token_box = [0, 0, 0, 0], sep_token_box = [1000, 1000, 1000, 1000], pad_token_box = [0, 0, 0, 0], pad_token_label = -100, only_label_first_subword = True, tokenize_chinese_chars = True, strip_accents = None, model_max_length = 512, **kwargs)
```

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

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

vocab_file (`str`) : ملف يحتوي على المفردات.

do_lower_case (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تحويل المدخلات إلى أحرف صغيرة عند تقسيم النص إلى رموز.

unk_token (`str`، *اختياري*، القيمة الافتراضية `"[UNK]"`) : رمز المجهول. الرمز غير الموجود في المفردات لا يمكن تحويله إلى معرّف، فيُستبدل بهذا الرمز.

sep_token (`str`، *اختياري*، القيمة الافتراضية `"[SEP]"`) : رمز الفاصل، الذي يُستخدم عند بناء تسلسل من عدة تسلسلات، على سبيل المثال تسلسلان لتصنيف التسلسل، أو نص وسؤال للإجابة على الأسئلة. كما يُستخدم كآخر رمز في تسلسل مبني باستخدام الرموز الخاصة.

pad_token (`str`، *اختياري*، الافتراضي هو `"[PAD]"`) : الرمز المستخدم للتعبئة، على سبيل المثال عند تجميع تسلسلات ذات أطوال مختلفة.

cls_token (`str`، *اختياري*، القيمة الافتراضية `"[CLS]"`) : رمز التصنيف الذي يُستخدم عند إجراء تصنيف التسلسل (تصنيف التسلسل بأكمله بدلاً من التصنيف لكل رمز على حدة). وهو الرمز الأول في التسلسل عند بناؤه باستخدام الرموز الخاصة.

mask_token (`str`، *اختياري*، القيمة الافتراضية `"[MASK]"`) : الرمز المستخدم لإخفاء القيم. هذا هو الرمز المستخدم عند تدريب هذا النموذج باستخدام نمذجة اللغة المقنّعة. وهو الرمز الذي سيحاول النموذج التنبؤ به.

cls_token_box (`List[int]`، *اختياري*، القيمة الافتراضية `[0, 0, 0, 0]`) : الصندوق المحيط (bounding box) الذي سيُستخدم للرمز الخاص [CLS].

sep_token_box (`List[int]`، *اختياري*، القيمة الافتراضية `[1000, 1000, 1000, 1000]`) : الصندوق المحيط الذي سيُستخدم للرمز الخاص [SEP].

pad_token_box (`List[int]`، *اختياري*، القيمة الافتراضية `[0, 0, 0, 0]`) : الصندوق المحيط (bounding box) الذي سيُستخدم للرمز الخاص [PAD].

pad_token_label (`int`، *اختياري*، القيمة الافتراضية -100) : التسمية المستخدمة لرموز الحشو. القيمة الافتراضية هي -100، وهي `ignore_index` في CrossEntropyLoss الخاصة بـ PyTorch.

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

tokenize_chinese_chars (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم توكنيزي (tokenize) الأحرف الصينية. يُرجى على الأرجح تعطيل هذا الخيار للغة اليابانية (انظر [هذه المشكلة](https://github.com/huggingface/transformers/issues/328)).

strip_accents (`bool`، *اختياري*) : ما إذا كان يجب إزالة جميع علامات التشكيل أم لا. إذا لم يُحدد هذا الخيار، فسيتم تحديده بناءً على قيمة `lowercase` (كما في LayoutLMv2 الأصلي).

أنشئ مُرمِّز LayoutLMv2 "سريع" (مدعوم بمكتبة *tokenizers* من HuggingFace). يعتمد على WordPiece.

يرث هذا المُجزِّئ من [PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend) التي تتضمن معظم الطرق الأساسية. ينبغي للمستخدمين الرجوع إلى هذه الفئة الأصلية لمزيد من المعلومات حول تلك الطرق.

#### __call__[[transformers.LayoutLMv2Tokenizer.__call__]]

```python
__call__(text: str | list[str] | list[list[str]], text_pair: list[str] | list[list[str]] | None = None, boxes: list[list[int]] | list[list[list[int]]] | None = None, word_labels: list[int] | list[list[int]] | None = None, add_special_tokens: bool = True, padding: bool | str | transformers.utils.generic.PaddingStrategy = False, truncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy | None = None, max_length: int | None = None, stride: int = 0, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_tensors: str | transformers.utils.generic.TensorType | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = None, return_overflowing_tokens: bool = False, return_special_tokens_mask: bool = False, return_offsets_mapping: bool = False, return_length: bool = False, verbose: bool = True, **kwargs)
```

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

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

text (`str`، `List[str]`، `List[List[str]]`) : التسلسل أو الدفعة من التسلسلات المراد ترميزها. يمكن أن يكون كل تسلسل نصًا، أو قائمة من النصوص (كلمات مثال واحد أو أسئلة دفعة من الأمثلة)، أو قائمة من قوائم النصوص (دفعة من الكلمات).

text_pair (`List[str]`، `List[List[str]]`) : التسلسل أو الدفعة من التسلسلات المراد ترميزها. يجب أن يكون كل تسلسل قائمة من النصوص (نص مُقسَّم مسبقًا).

boxes (`List[List[int]]`، `List[List[List[int]]]`) : صناديق حدود على مستوى الكلمة. يجب أن تكون كل صناديق الحدود مُعايرة على مقياس من 0 إلى 1000.

word_labels (`List[int]`، `List[List[int]]`، *اختياري*) : تسميات عددية صحيحة على مستوى الكلمة (لمهام تصنيف الرموز مثل FUNSD وCORD).

add_special_tokens (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم ترميز التسلسلات باستخدام الرموز الخاصة الخاصة بنموذجها أم لا.

padding (`bool` أو `str` أو [PaddingStrategy](/docs/transformers/main/ar/internal/file_utils#transformers.utils.PaddingStrategy)، *اختياري*، القيمة الافتراضية `False`) : يُفعّل التحكم في الحشو. يقبل القيم التالية:  - `True` أو `'longest'`: الحشو حتى أطول تسلسل في الدفعة (أو بدون حشو إذا تم تقديم تسلسل واحد فقط). - `'max_length'`: الحشو حتى الحد الأقصى للطول المحدد بواسطة الحجة `max_length` أو حتى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. - `False` أو `'do_not_pad'` (الافتراضي): بدون حشو (أي، يمكنه إخراج دفعة تحتوي على تسلسلات بطول مختلف).

truncation (`bool` أو `str` أو [TruncationStrategy](/docs/transformers/main/ar/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy)، *اختياري*، القيمة الافتراضية `False`) : يُفعّل التحكم في القص. يقبل القيم التالية:  - `True` أو `'longest_first'`: يُقصّ إلى الحد الأقصى للطول المحدد عبر الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى القص رمزًا تلو الآخر، مع إزالة رمز من أطول تسلسل في الزوج إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `'only_first'`: يُقصّ إلى الحد الأقصى للطول المحدد عبر الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى قصّ التسلسل الأول من الزوج فقط إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `'only_second'`: يُقصّ إلى الحد الأقصى للطول المحدد عبر الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى قصّ التسلسل الثاني من الزوج فقط إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `False` أو `'do_not_truncate'` (الافتراضي): لا يوجد قص (أي، يمكن إخراج دفعة بأطوال تسلسلات أكبر من الحد الأقصى المقبول لحجم الإدخال للنموذج).

max_length (`int`, *اختياري*) : يتحكم في الحد الأقصى للطول الذي سيستخدمه أحد معاملات القص/الحشو. إذا تُرك غير مضبوط أو ضُبط على `None`، فسيتم استخدام الحد الأقصى للطول المحدد مسبقًا للنموذج إذا كان أحد معاملات القص/الحشو يتطلب حدًا أقصى للطول. إذا لم يكن للنموذج حد أقصى محدد لطول الإدخال (مثل XLNet)، فسيتم تعطيل القص/الحشو إلى حد أقصى للطول.

stride (`int`، *اختياري*، القيمة الافتراضية 0) : إذا تم تعيينه إلى رقم مع `max_length`، فإن الرموز الزائدة المُعاد عند `return_overflowing_tokens=True` ستحتوي على بعض الرموز من نهاية التسلسل المُقتطع المُعاد، لتوفير بعض التداخل بين التسلسلات المُقتطعة والتسلسلات الزائدة. تحدد قيمة هذا الحجة عدد الرموز المتداخلة.

pad_to_multiple_of (`int`, *اختياري*) : إذا تم تعيينه، سيتم توسيط التسلسل إلى مضاعف للقيمة المُقدَّمة. وهذا مفيد بشكل خاص لتمكين استخدام نوى التينسور (Tensor Cores) على أجهزة NVIDIA التي تتمتع بقابلية معالجة `>= 7.5` (Volta).

return_token_type_ids (`bool`، *اختياري*) : ما إذا كان يجب إرجاع معرّفات أنواع الرموز. إذا تُركت القيمة الافتراضية، فسيتم إرجاع معرّفات أنواع الرموز وفقًا للقيمة الافتراضية الخاصة بمجزّئ الرموز المحدد، كما تحددها خاصية `return_outputs`.  [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

return_attention_mask (`bool`، *اختياري*) : ما إذا كان يجب إرجاع قناع الانتباه. إذا تُركت القيمة الافتراضية، فسيتم إرجاع قناع الانتباه وفقاً للقيمة الافتراضية الخاصة بمجزّئ الرموز المعني، كما هو معرّف بواسطة الخاصية `return_outputs`.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

return_overflowing_tokens (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم إرجاع تسلسلات الرموز المتجاوزة أم لا. إذا تم تقديم زوج من تسلسلات معرّفات الإدخال (أو دفعة من الأزواج) مع `truncation_strategy = longest_first` أو `True`، فسيتم رفع خطأ بدلاً من إرجاع الرموز المتجاوزة.

return_special_tokens_mask (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم إرجاع معلومات قناع الرموز الخاصة أم لا.

return_offsets_mapping (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إرجاع `(char_start, char_end)` لكل رمز. هذه الخاصية متاحة فقط في مُرمّزيات fast التي ترث من [PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend)، وإذا كنت تستخدم مُرمّزي Python، فسيُطلق هذا الدالة `NotImplementedError`.

return_length (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان يجب إرجاع أطوال المدخلات المُرمّزة أم لا.

verbose (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب طباعة مزيد من المعلومات والتنبيهات أم لا.

- ****kwargs** : تُمرَّر إلى طريقة `self.tokenize()`

الطريقة الرئيسية لتجزئة (tokenization) وتجهيز تسلسل واحد أو عدة تسلسلات، أو زوج واحد أو عدة أزواج من التسلسلات، مع صناديق حدود (bounding boxes) مُطبَّعة على مستوى الكلمة، وعلامات اختيارية.

#### save_vocabulary[[transformers.LayoutLMv2Tokenizer.save_vocabulary]]

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

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L546)

## LayoutLMv2Processor[[transformers.LayoutLMv2Processor]]

#### transformers.LayoutLMv2Processor[[transformers.LayoutLMv2Processor]]

```python
transformers.LayoutLMv2Processor(image_processor = None, tokenizer = None, **kwargs)
```

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

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

image_processor (`LayoutLMv2ImageProcessor`) : مُعالج الصور هو مدخل مطلوب.

tokenizer (`LayoutLMv2Tokenizer`) : مُجزِّئ النص (tokenizer) هو مدخل مطلوب.

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

يوفر [LayoutLMv2Processor](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2Processor) جميع وظائف [LayoutLMv2ImageProcessor](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2ImageProcessor) و[LayoutLMv2Tokenizer](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2Tokenizer). راجع [~LayoutLMv2ImageProcessor](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2ImageProcessor) و[~LayoutLMv2Tokenizer](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2Tokenizer) لمزيد من المعلومات.

#### __call__[[transformers.LayoutLMv2Processor.__call__]]

```python
__call__(images, text: str | list[str] | list[list[str]] = None, text_pair: list[str] | list[list[str]] | None = None, boxes: list[list[int]] | list[list[list[int]]] | None = None, word_labels: list[int] | list[list[int]] | None = None, add_special_tokens: bool = True, padding: bool | str | transformers.utils.generic.PaddingStrategy = False, truncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = False, max_length: int | None = None, stride: int = 0, pad_to_multiple_of: int | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = None, return_overflowing_tokens: bool = False, return_special_tokens_mask: bool = False, return_offsets_mapping: bool = False, return_length: bool = False, verbose: bool = True, return_tensors: str | transformers.utils.generic.TensorType | None = None, **kwargs)
```

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

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

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

text (`Union[str, list[str], list[list[str]]]`، *اختياري*) : التسلسل أو الدفعة من التسلسلات المراد ترميزها. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُجزَّأ مسبقًا). إذا مررت مدخلات مُجزَّأة مسبقًا، فاضبط `is_split_into_words=True` لتجنب الغموض مع المدخلات المُجمَّعة في دفعات.

text_pair (`str, list[str] or list[int]`, *اختياري*) : تسلسل ثانٍ اختياري ليتم ترميزه. يمكن أن يكون هذا نصًا، أو قائمة من النصوص (نص مُرمَّز باستخدام طريقة `tokenize`)، أو قائمة من الأعداد الصحيحة (معرّفات رموز مُرمَّزة باستخدام طريقة `convert_tokens_to_ids`).

boxes (`list[list[int]] or list[list[list[int]]]`، *اختياري*) : صناديق حدود على مستوى الكلمات. يجب أن تكون كل صناديق الحدود مُعايرة على مقياس من 0 إلى 1000.

word_labels (`list[int] or list[list[int]]`، *اختياري*) : تسميات عددية صحيحة على مستوى الكلمة (لمهام تصنيف الرموز مثل FUNSD وCORD).

add_special_tokens (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إضافة الرموز الخاصة عند ترميز التسلسلات أم لا. سيستخدم هذا الدالة الأساسية `PretrainedTokenizerBase.build_inputs_with_special_tokens`، التي تحدد الرموز التي تُضاف تلقائيًا إلى معرّفات الإدخال. وهذا مفيد إذا كنت ترغب في إضافة رموز `bos` أو `eos` تلقائيًا.

padding (bool أو str أو [PaddingStrategy](/docs/transformers/main/ar/internal/file_utils#transformers.utils.PaddingStrategy)، *اختياري*، القيمة الافتراضية `False`) : يُفعّل التحكم في الحشو. يقبل القيم التالية: - `True` أو `'longest'`: حشو حتى أطول تسلسل في الدفعة (أو بدون حشو إذا تم تقديم تسلسل واحد فقط). - `'max_length'`: حشو حتى الحد الأقصى للطول المحدد بالحجة `max_length` أو حتى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. - `False` أو `'do_not_pad'` (الافتراضي): بدون حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).

truncation (bool أو str أو [TruncationStrategy](/docs/transformers/main/ar/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy)، *اختياري*، القيمة الافتراضية `False`) : يُفعّل التحكم في القص. يقبل القيم التالية: - `True` أو `'longest_first'`: يُقصّ إلى الحد الأقصى للطول المحدد بواسطة الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى القص رمزًا تلو الآخر، مع إزالة رمز من أطول تسلسل في الزوج إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `'only_first'`: يُقصّ إلى الحد الأقصى للطول المحدد بواسطة الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى قصّ التسلسل الأول من الزوج فقط إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `'only_second'`: يُقصّ إلى الحد الأقصى للطول المحدد بواسطة الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى قصّ التسلسل الثاني من الزوج فقط إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `False` أو `'do_not_truncate'` (الافتراضي): لا يوجد قص (أي، يمكن إخراج دفعة بأطوال تسلسلات أكبر من الحد الأقصى المقبول لحجم الإدخال للنموذج).

max_length (`int`, *اختياري*) : يتحكم في الحد الأقصى للطول الذي سيستخدمه أحد معاملات القص/الحشو. إذا تُرك غير مضبوط أو ضُبط على `None`، فسيتم استخدام الحد الأقصى للطول المحدد مسبقًا للنموذج إذا كان أحد معاملات القص/الحشو يتطلب حدًا أقصى للطول. إذا لم يكن للنموذج حد أقصى محدد لطول الإدخال (مثل XLNet)، فسيتم تعطيل القص/الحشو إلى حد أقصى للطول.

stride (`int`، *اختياري*، القيمة الافتراضية `0`) : إذا تم تعيينه إلى رقم مع `max_length`، فإن الرموز الزائدة المُعاد عند `return_overflowing_tokens=True` ستحتوي على بعض الرموز من نهاية التسلسل المُقتطع المُعاد، لتوفير بعض التداخل بين التسلسلات المُقتطعة والتسلسلات الزائدة. تحدد قيمة هذا الحجة عدد الرموز المتداخلة.

pad_to_multiple_of (`int`, *اختياري*) : إذا تم ضبطه، سيتم ملء التسلسل حتى يصبح مضاعفًا للقيمة المُقدَّمة. يتطلب تفعيل `padding`. وهذا مفيد بشكل خاص لتمكين استخدام Tensor Cores على أجهزة NVIDIA التي تتمتع بقابلية معالجة `>= 7.5` (Volta).

return_token_type_ids (`bool`، *اختياري*) : ما إذا كان يجب إرجاع معرّفات أنواع الرموز. إذا تُركت القيمة الافتراضية، فسيتم إرجاع معرّفات أنواع الرموز وفقًا للقيمة الافتراضية الخاصة بمجزّئ الرموز المحدد، كما تحددها خاصية `return_outputs`.  [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

return_attention_mask (`bool`، *اختياري*) : ما إذا كان يجب إرجاع قناع الانتباه. إذا تُركت القيمة الافتراضية، فسيتم إرجاع قناع الانتباه وفقاً للقيمة الافتراضية الخاصة بمجزّئ الرموز المعني، كما هو معرّف بواسطة الخاصية `return_outputs`.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

return_overflowing_tokens (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم إرجاع تسلسلات الرموز المتجاوزة أم لا. إذا تم تقديم زوج من تسلسلات معرّفات الإدخال (أو دفعة من الأزواج) مع `truncation_strategy = longest_first` أو `True`، فسيتم رفع خطأ بدلاً من إرجاع الرموز المتجاوزة.

return_special_tokens_mask (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم إرجاع معلومات قناع الرموز الخاصة أم لا.

return_offsets_mapping (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إرجاع `(char_start, char_end)` لكل رمز. هذه الخاصية متاحة فقط في مُرمّزيات fast التي ترث من [PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend)، وإذا كنت تستخدم مُرمّزي Python، فسيُطلق هذا الدالة `NotImplementedError`.

return_length (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان يجب إرجاع أطوال المدخلات المُرمّزة أم لا.

verbose (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب طباعة مزيد من المعلومات والتنبيهات أم لا.

return_tensors (`Union[str, ~utils.generic.TensorType]`، *اختياري*) : إذا تم تعيينه، فسيُرجع تينسورات (Tensors) لإطار عمل معين. القيم المقبولة هي: - `'pt'`: يُرجع كائنات `torch.Tensor` من PyTorch. - `'np'`: يُرجع كائنات `np.ndarray` من NumPy.

**يعيد:** `~tokenization_utils_base.BatchEncoding`

- **data** (`dict`، *اختياري*) -- قاموس من القوائم/المصفوفات/الموترات الذي يُعاد عن طريق طرق `__call__`/`encode_plus`/`batch_encode_plus` ('input_ids'، 'attention_mask'، إلخ).
- **encoding** (`tokenizers.Encoding` أو `Sequence[tokenizers.Encoding]`، *اختياري*) -- إذا كان مُجزِّئ الرموز مُجزِّئًا سريعًا يُخرج معلومات إضافية مثل التحويل من فضاء الكلمات/الأحرف إلى فضاء الرموز، فإنّ كائن `tokenizers.Encoding` أو قائمة من الكائنات (للدفّات) تحتفظ بهذه المعلومات.
- **tensor_type** (`Union[None, str, TensorType]`، *اختياري*) -- يمكنك تحديد tensor_type هنا لتحويل قوائم الأعداد الصحيحة إلى تينسورات PyTorch/Numpy عند التهيئة.
- **prepend_batch_axis** (`bool`, *اختياري*، القيمة الافتراضية `False`) -- ما إذا كان يجب إضافة محور الدفعة عند التحويل إلى المصفوفات (انظر `tensor_type` أعلاه). يُرجى ملاحظة أن لهذا المعامل تأثير إذا تم تعيين المعامل `tensor_type`، *وإلا فلا يكون له أي تأثير*.
- **n_sequences** (`int`, *اختياري*) -- عدد تسلسلات الإدخال التي يمثلها كل ترميز (`None` للمجهول، و`1` لتسلسل واحد، و`2` لزوج من التسلسلات).

## LayoutLMv2Model[[transformers.LayoutLMv2Model]]

#### transformers.LayoutLMv2Model[[transformers.LayoutLMv2Model]]

```python
transformers.LayoutLMv2Model(config: LayoutLMv2Config)
```

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

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

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

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

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

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, bbox: typing.Optional[torch.LongTensor] = None, image: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.LongTensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/main/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

bbox (`torch.LongTensor` من الشكل `((batch_size, sequence_length), 4)`، *اختياري*) : صناديق الحدود (Bounding boxes) لكل رموز تسلسل الإدخال. يتم اختيارها ضمن النطاق `[0, config.max_2d_position_embeddings-1]`. يجب أن يكون كل صندوق حدود نسخة مُعايرة (normalized) بصيغة (x0, y0, x1, y1)، حيث يمثل (x0, y0) موضع الزاوية العلوية اليسرى في صندوق الحدود، ويمثل (x1, y1) موضع الزاوية السفلية اليمنى.

image (`torch.Tensor` من الشكل `(batch_size, num_channels, height, width)` أو `detectron.structures.ImageList` يكون `tensors` فيه من الشكل `(batch_size, num_channels, height, width)`) : دفعة من صور المستندات.

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

token_type_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار الفهارس من `[0, 1]`: - 0 يقابل رمز *الجملة أ*، - 1 يقابل رمز *الجملة ب*. [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

position_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها من النطاق `[0, config.n_positions - 1]`.  [ما هي معرّفات المواضع؟](../glossary#position-ids)

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

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

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

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

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

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) -- تسلسل من حالات الإخفاء (hidden-states) عند مخرج الطبقة الأخيرة من النموذج.
- **pooler_output** (`torch.Tensor` من الشكل `(batch_size, hidden_size)`) -- حالة الطبقة المخفية الأخيرة للرمز الأول في التسلسل (رمز التصنيف) بعد المعالجة الإضافية عبر الطبقات المستخدمة في مهمة ما قبل التدريب المساعدة. على سبيل المثال، بالنسبة لعائلة نماذج BERT، تُرجع هذه الخاصية رمز التصنيف بعد معالجته عبر طبقة خطية ودالة تفعيل tanh. يتم تدريب أوزان الطبقة الخطية من هدف التنبؤ بالجملة التالية (التصنيف) أثناء ما قبل التدريب.
- **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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

أمثلة:

```python
>>> from transformers import AutoProcessor, LayoutLMv2Model, set_seed
>>> from PIL import Image
>>> import torch
>>> from datasets import load_dataset

>>> set_seed(0)

>>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv2-base-uncased")
>>> model = LayoutLMv2Model.from_pretrained("microsoft/layoutlmv2-base-uncased")

>>> dataset = load_dataset("hf-internal-testing/fixtures_docvqa")
>>> image = dataset["test"][0]["image"]

>>> encoding = processor(image, return_tensors="pt")

>>> outputs = model(**encoding)
>>> last_hidden_states = outputs.last_hidden_state

>>> last_hidden_states.shape
torch.Size([1, 342, 768])
```

## LayoutLMv2ForSequenceClassification[[transformers.LayoutLMv2ForSequenceClassification]]

#### transformers.LayoutLMv2ForSequenceClassification[[transformers.LayoutLMv2ForSequenceClassification]]

```python
transformers.LayoutLMv2ForSequenceClassification(config: LayoutLMv2Config)
```

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

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

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

نموذج LayoutLMv2 مع رأس تصنيف تسلسل في الأعلى (طبقة خطية فوق دمج الحالة المخفية النهائية لرمز [CLS]، والتضمينات البصرية الأولية المجمعة بالمتوسط، والتضمينات البصرية النهائية المجمعة بالمتوسط، على سبيل المثال لمهام تصنيف صور المستندات مثل مجموعة بيانات [RVL-CDIP](https://www.cs.cmu.edu/~aharley/rvl-cdip/)).

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

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, bbox: typing.Optional[torch.LongTensor] = None, image: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.LongTensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

input_ids (`torch.LongTensor` من الشكل `batch_size, sequence_length`) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/main/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

bbox (`torch.LongTensor` من الشكل `(batch_size, sequence_length, 4)`، *اختياري*) : صناديق الحدود (Bounding boxes) لكل رموز تسلسل الإدخال. يتم اختيارها ضمن النطاق `[0, config.max_2d_position_embeddings-1]`. يجب أن يكون كل صندوق حدود نسخة مُعايرة (normalized) بصيغة (x0, y0, x1, y1)، حيث يمثل (x0, y0) موضع الزاوية العلوية اليسرى في صندوق الحدود، ويمثل (x1, y1) موضع الزاوية السفلية اليمنى.

image (`torch.Tensor` من الشكل `(batch_size, num_channels, height, width)` أو `detectron.structures.ImageList` يكون `tensors` فيه من الشكل `(batch_size, num_channels, height, width)`) : دفعة من صور المستندات.

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

token_type_ids (`torch.LongTensor` من الشكل `batch_size, sequence_length`، *اختياري*) : فهارس رموز المقاطع للإشارة إلى الجزء الأول والثاني من المدخلات. يتم اختيار الفهارس من `[0, 1]`: - 0 يقابل رمز *الجملة أ*، - 1 يقابل رمز *الجملة ب*. [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

position_ids (`torch.LongTensor` من الشكل `batch_size, sequence_length`، *اختياري*) : فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها من النطاق `[0, config.max_position_embeddings - 1]`.  [ما هي معرّفات المواضع؟](../glossary#position-ids)

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

labels (`torch.LongTensor` من الشكل `(batch_size,)`، *اختياري*) : تسميات لحساب خسارة تصنيف/انحدار التسلسل. يجب أن تكون الفهارس ضمن `[0, ..., config.num_labels - 1]`. إذا كان `config.num_labels == 1` يتم حساب خسارة الانحدار (خسارة متوسط المربع)، وإذا كان `config.num_labels > 1` يتم حساب خسارة التصنيف (الإنتروبيا المتقاطعة).

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

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

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

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

- **loss** (`torch.Tensor` من الشكل `(1,)`, *اختياري*، يُعاد عند تقديم `labels`) -- خسارة التصنيف (أو الانحدار إذا كان config.num_labels==1).
- **logits** (`torch.Tensor` من الشكل `(batch_size, config.num_labels)`) -- درجات التصنيف (أو الانحدار إذا كان config.num_labels==1) (قبل SoftMax).
- **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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

مثال:

```python
>>> from transformers import AutoProcessor, LayoutLMv2ForSequenceClassification, set_seed
>>> from PIL import Image
>>> import torch
>>> from datasets import load_dataset

>>> set_seed(0)

>>> dataset = load_dataset("aharley/rvl_cdip", split="train", streaming=True)
>>> data = next(iter(dataset))
>>> image = data["image"].convert("RGB")

>>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv2-base-uncased")
>>> model = LayoutLMv2ForSequenceClassification.from_pretrained(
...     "microsoft/layoutlmv2-base-uncased", num_labels=dataset.info.features["label"].num_classes
... )

>>> encoding = processor(image, return_tensors="pt")
>>> sequence_label = torch.tensor([data["label"]])

>>> outputs = model(**encoding, labels=sequence_label)

>>> loss, logits = outputs.loss, outputs.logits
>>> predicted_idx = logits.argmax(dim=-1).item()
>>> predicted_answer = dataset.info.features["label"].names[4]
>>> predicted_idx, predicted_answer  # results are not good without further fine-tuning
(7, 'advertisement')
```

## LayoutLMv2ForTokenClassification[[transformers.LayoutLMv2ForTokenClassification]]

#### transformers.LayoutLMv2ForTokenClassification[[transformers.LayoutLMv2ForTokenClassification]]

```python
transformers.LayoutLMv2ForTokenClassification(config: LayoutLMv2Config)
```

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

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

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

نموذج LayoutLMv2 مع رأس تصنيف الرموز في الأعلى (طبقة خطية فوق الجزء النصي من الحالات المخفية) على سبيل المثال لمهام تسمية التسلسل (استخراج المعلومات) مثل [FUNSD](https://guillaumejaume.github.io/FUNSD/) و[SROIE](https://rrc.cvc.uab.es/?ch=13) و[CORD](https://github.com/clovaai/cord) و[Kleister-NDA](https://github.com/applicaai/kleister-nda).

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

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, bbox: typing.Optional[torch.LongTensor] = None, image: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.LongTensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

input_ids (`torch.LongTensor` من الشكل `batch_size, sequence_length`) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/main/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

bbox (`torch.LongTensor` من الشكل `(batch_size, sequence_length, 4)`، *اختياري*) : صناديق الحدود (Bounding boxes) لكل رموز تسلسل الإدخال. يتم اختيارها ضمن النطاق `[0, config.max_2d_position_embeddings-1]`. يجب أن يكون كل صندوق حدود نسخة مُعايرة (normalized) بصيغة (x0, y0, x1, y1)، حيث يمثل (x0, y0) موضع الزاوية العلوية اليسرى في صندوق الحدود، ويمثل (x1, y1) موضع الزاوية السفلية اليمنى.

image (`torch.Tensor` من الشكل `(batch_size, num_channels, height, width)` أو `detectron.structures.ImageList` يكون `tensors` فيه من الشكل `(batch_size, num_channels, height, width)`) : دفعة من صور المستندات.

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

token_type_ids (`torch.LongTensor` من الشكل `batch_size, sequence_length`، *اختياري*) : فهارس رموز المقاطع للإشارة إلى الجزء الأول والثاني من المدخلات. يتم اختيار الفهارس من `[0, 1]`: - 0 يقابل رمز *الجملة أ*، - 1 يقابل رمز *الجملة ب*. [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

position_ids (`torch.LongTensor` من الشكل `batch_size, sequence_length`، *اختياري*) : فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها من النطاق `[0, config.max_position_embeddings - 1]`.  [ما هي معرّفات المواضع؟](../glossary#position-ids)

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

labels (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : تسميات لحساب خسارة تصنيف الرموز. يجب أن تكون الفهارس ضمن `[0, ..., config.num_labels - 1]`.

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

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

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

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

- **loss** (`torch.Tensor` of shape `(1,)`, *اختياري*, يُعاد عند توفير `labels`) -- خسارة التصنيف.
- **logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.num_labels)`) -- درجات التصنيف (قبل SoftMax).
- **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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

مثال:

```python
>>> from transformers import AutoProcessor, LayoutLMv2ForTokenClassification, set_seed
>>> from PIL import Image
>>> from datasets import load_dataset

>>> set_seed(0)

>>> datasets = load_dataset("nielsr/funsd", split="test")
>>> labels = datasets.features["ner_tags"].feature.names
>>> id2label = {v: k for v, k in enumerate(labels)}

>>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv2-base-uncased", revision="no_ocr")
>>> model = LayoutLMv2ForTokenClassification.from_pretrained(
...     "microsoft/layoutlmv2-base-uncased", num_labels=len(labels)
... )

>>> data = datasets[0]
>>> image = Image.open(data["image_path"]).convert("RGB")
>>> words = data["words"]
>>> boxes = data["bboxes"]  # make sure to normalize your bounding boxes
>>> word_labels = data["ner_tags"]
>>> encoding = processor(
...     image,
...     words,
...     boxes=boxes,
...     word_labels=word_labels,
...     padding="max_length",
...     truncation=True,
...     return_tensors="pt",
... )

>>> outputs = model(**encoding)
>>> logits, loss = outputs.logits, outputs.loss

>>> predicted_token_class_ids = logits.argmax(-1)
>>> predicted_tokens_classes = [id2label[t.item()] for t in predicted_token_class_ids[0]]
>>> predicted_tokens_classes[:5]  # results are not good without further fine-tuning
['I-HEADER', 'I-HEADER', 'I-QUESTION', 'I-HEADER', 'I-QUESTION']
```

## LayoutLMv2ForQuestionAnswering[[transformers.LayoutLMv2ForQuestionAnswering]]

#### transformers.LayoutLMv2ForQuestionAnswering[[transformers.LayoutLMv2ForQuestionAnswering]]

```python
transformers.LayoutLMv2ForQuestionAnswering(config: LayoutLMv2Config, has_visual_segment_embedding = True)
```

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

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

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

has_visual_segment_embedding (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان يجب إضافة تضمينات المقاطع البصرية أم لا.

محوّل Layoutlmv2 مع رأس تصنيف مقاطع (span classification head) في الأعلى لمهام الإجابة الاستخراجية على الأسئلة مثل SQuAD (طبقة خطية فوق مخرجات الحالات المخفية لحساب `span start logits` و`span end logits`).

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

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, bbox: typing.Optional[torch.LongTensor] = None, image: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.LongTensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, start_positions: typing.Optional[torch.LongTensor] = None, end_positions: typing.Optional[torch.LongTensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

input_ids (`torch.LongTensor` من الشكل `batch_size, sequence_length`) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/main/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

bbox (`torch.LongTensor` من الشكل `(batch_size, sequence_length, 4)`، *اختياري*) : صناديق الحدود (Bounding boxes) لكل رموز تسلسل الإدخال. يتم اختيارها ضمن النطاق `[0, config.max_2d_position_embeddings-1]`. يجب أن يكون كل صندوق حدود نسخة مُعايرة (normalized) بصيغة (x0, y0, x1, y1)، حيث يمثل (x0, y0) موضع الزاوية العلوية اليسرى في صندوق الحدود، ويمثل (x1, y1) موضع الزاوية السفلية اليمنى.

image (`torch.Tensor` من الشكل `(batch_size, num_channels, height, width)` أو `detectron.structures.ImageList` يكون `tensors` فيه من الشكل `(batch_size, num_channels, height, width)`) : دفعة من صور المستندات.

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

token_type_ids (`torch.LongTensor` من الشكل `batch_size, sequence_length`، *اختياري*) : فهارس رموز المقاطع للإشارة إلى الجزء الأول والثاني من المدخلات. يتم اختيار الفهارس من `[0, 1]`: - 0 يقابل رمز *الجملة أ*، - 1 يقابل رمز *الجملة ب*. [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

position_ids (`torch.LongTensor` من الشكل `batch_size, sequence_length`، *اختياري*) : فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها من النطاق `[0, config.max_position_embeddings - 1]`.  [ما هي معرّفات المواضع؟](../glossary#position-ids)

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

start_positions (`torch.LongTensor` من الشكل `(batch_size,)`، *اختياري*) : تسميات لموضع (فهرس) بداية النطاق المُسمّى لحساب خسارة تصنيف الرموز. يتم تثبيت المواضع على طول التسلسل (`sequence_length`). لا تُؤخذ المواضع خارج التسلسل في الاعتبار عند حساب الخسارة.

end_positions (`torch.LongTensor` من الشكل `(batch_size,)`، *اختياري*) : تسميات لموضع (فهرس) نهاية النطاق المُسمّى لحساب خسارة تصنيف الرموز. يتم تثبيت المواضع على طول التسلسل (`sequence_length`). لا تُؤخذ المواضع خارج التسلسل في الاعتبار عند حساب الخسارة.

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

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

تتجاوز طريقة [LayoutLMv2ForQuestionAnswering](/docs/transformers/main/ar/model_doc/layoutlmv2#transformers.LayoutLMv2ForQuestionAnswering) الخاصة بـ forward الطريقة الخاصة `__call__`.

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

- **loss** (`torch.Tensor` بشكل `(1,)`، *اختياري*، يُعاد عند توفير `labels`) -- خسارة استخراج النطاق الكلي هي مجموع دالة Cross-Entropy لموقعي البداية والنهاية.
- **start_logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length)`) -- درجات بداية المقطع (قبل SoftMax).
- **end_logits** (`torch.Tensor` بأبعاد `(batch_size, sequence_length)`) -- درجات نهاية المقطع (قبل SoftMax).
- **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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

مثال:

في المثال أدناه، نمنح نموذج LayoutLMv2 صورة (لنصوص) ونطرح عليه سؤالاً. سيقدم لنا توقعًا لما يراه إجابة (المقطع الذي يمثل الإجابة ضمن النصوص المستخرجة من الصورة).

```python
>>> from transformers import AutoProcessor, LayoutLMv2ForQuestionAnswering, set_seed
>>> import torch
>>> from PIL import Image
>>> from datasets import load_dataset

>>> set_seed(0)
>>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv2-base-uncased")
>>> model = LayoutLMv2ForQuestionAnswering.from_pretrained("microsoft/layoutlmv2-base-uncased")

>>> dataset = load_dataset("hf-internal-testing/fixtures_docvqa")
>>> image = dataset["test"][0]["image"]
>>> question = "When is coffee break?"
>>> encoding = processor(image, question, return_tensors="pt")

>>> outputs = model(**encoding)
>>> predicted_start_idx = outputs.start_logits.argmax(-1).item()
>>> predicted_end_idx = outputs.end_logits.argmax(-1).item()
>>> predicted_start_idx, predicted_end_idx
(30, 191)

>>> predicted_answer_tokens = encoding.input_ids.squeeze()[predicted_start_idx : predicted_end_idx + 1]
>>> predicted_answer = processor.tokenizer.decode(predicted_answer_tokens)
>>> predicted_answer  # results are not good without further fine-tuning
'44 a. m. to 12 : 25 p. m. 12 : 25 to 12 : 58 p. m. 12 : 58 to 4 : 00 p. m. 2 : 00 to 5 : 00 p. m. coffee break coffee will be served for men and women in the lobby adjacent to exhibit area. please move into exhibit area. ( exhibits open ) trrf general session ( part | ) presiding : lee a. waller trrf vice president " introductory remarks " lee a. waller, trrf vice presi - dent individual interviews with trrf public board members and sci - entific advisory council mem - bers conducted by trrf treasurer philip g. kuehn to get answers which the public refrigerated warehousing industry is looking for. plus questions from'
```

```python
>>> target_start_index = torch.tensor([7])
>>> target_end_index = torch.tensor([14])
>>> outputs = model(**encoding, start_positions=target_start_index, end_positions=target_end_index)
>>> predicted_answer_span_start = outputs.start_logits.argmax(-1).item()
>>> predicted_answer_span_end = outputs.end_logits.argmax(-1).item()
>>> predicted_answer_span_start, predicted_answer_span_end
(30, 191)
```

