# PP-OCRv5_mobile_det

## Aperçu

**PP-OCRv5_mobile_det** est un modèle léger dédié à la détection de texte, axé spécifiquement sur la détection et la compréhension efficaces des éléments textuels dans des documents multilingues et des scènes naturelles.

## Architecture du modèle

PP-OCRv5_mobile_det fait partie de la série PP-OCRv5_det, la dernière génération de modèles de détection de texte développés par l'équipe PaddleOCR. Il vise à prendre en charge efficacement et avec précision la détection de texte dans des scénarios variés — y compris l'écriture manuscrite, le texte vertical, rotatif et courbé — dans plusieurs langues telles que le chinois simplifié, le chinois traditionnel, l'anglais et le japonais. Ses principales fonctionnalités incluent une gestion robuste des mises en page complexes, des tailles de texte variables et des arrière-plans difficiles, ce qui le rend adapté à des applications pratiques telles que l'analyse de documents, la reconnaissance de plaques d'immatriculation et la détection de texte dans les scènes.

## Utilisation

### Inférence avec une seule entrée

L'exemple ci-dessous montre comment détecter du texte avec PP-OCRV5_Mobile_Det en utilisant le [Pipeline](/docs/transformers/main/fr/main_classes/pipelines#transformers.Pipeline) ou le [AutoModel](/docs/transformers/main/fr/model_doc/auto#transformers.AutoModel).

```python
import requests
from PIL import Image

from transformers import pipeline

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

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

```python
import requests
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForObjectDetection

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

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

results = image_processor.post_process_object_detection(outputs, target_sizes=inputs["target_sizes"])

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

### Inférence par lots

Voici comment faire avec PP-OCRV5_Mobile_Det en utilisant le [Pipeline](/docs/transformers/main/fr/main_classes/pipelines#transformers.Pipeline) ou le [AutoModel](/docs/transformers/main/fr/model_doc/auto#transformers.AutoModel) :

```python
import requests
from PIL import Image

from transformers import pipeline

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

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

```python
import requests
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForObjectDetection

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

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

results = image_processor.post_process_object_detection(outputs, target_sizes=inputs["target_sizes"])

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

## PPOCRV5MobileDetForObjectDetection[[transformers.PPOCRV5MobileDetForObjectDetection]]

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

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

[Source](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_det/modeling_pp_ocrv5_mobile_det.py#L296)

**Paramètres :**

config ([PPOCRV5MobileDetConfig](/docs/transformers/main/fr/model_doc/pp_ocrv5_mobile_det#transformers.PPOCRV5MobileDetConfig)) : Classe de configuration du modèle contenant tous les paramètres du modèle. L'initialisation à partir d'un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode [from_pretrained()](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel.from_pretrained) pour charger les poids du modèle.

Modèle PPOCRV5 Mobile Det pour les tâches de détection d'objets (texte). Encapsule le modèle PPOCRV5MobileDetModel et renvoie des sorties compatibles avec l'API de détection d'objets de Transformers.

Ce modèle hérite de [PreTrainedModel](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel). Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, l'élagage des têtes, etc.).

Ce modèle est également une sous-classe de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l’utilisation et le comportement généraux.

## PPOCRV5MobileDetConfig[[transformers.PPOCRV5MobileDetConfig]]

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

```python
transformers.PPOCRV5MobileDetConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, reduction: int = 4, neck_out_channels: int = 96, interpolate_mode: str = 'nearest', kernel_list: list[int] | tuple[int, ...] = (3, 2, 2), layer_list_out_channels: list[int] | tuple[int, ...] = (12, 18, 42, 360))
```

[Source](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_det/configuration_pp_ocrv5_mobile_det.py#L31)

**Paramètres :**

backbone_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`, *facultatif*) : La configuration du modèle de base.

reduction (`int`, *facultatif*, valeur par défaut : 4) : Facteur de réduction des dimensions des canaux de caractéristiques, utilisé pour réduire le nombre de paramètres du modèle et la complexité de calcul tout en conservant la capacité de représentation des caractéristiques.

neck_out_channels (`int`, *facultatif*, valeur par défaut : 96) : Le nombre de canaux de sortie du réseau neck, qui est responsable de la fusion et du raffinement des caractéristiques avant de les transmettre au réseau head.

interpolate_mode (`str`, *facultatif*, valeur par défaut `"nearest"`) : Le mode d'interpolation utilisé pour l'interpolation par suréchantillonnage ou sous-échantillonnage des cartes de caractéristiques dans le réseau neck. Les modes pris en charge incluent `"nearest"` (interpolation du plus proche voisin) et `"bilinear"`.

kernel_list (`List[int]`, *facultatif*, par défaut `[3, 2, 2]`) : La liste des tailles de noyaux pour les couches convolutives du réseau de tête, utilisée pour l'extraction de caractéristiques multi-échelles afin de détecter des régions de texte de différentes tailles.

layer_list_out_channels (`List[int]`, *facultatif*, par défaut `[12, 18, 42, 360]`) : La liste des canaux de sortie pour chaque étape du backbone, utilisée pour configurer les canaux d'entrée des couches RSE dans le réseau neck pour la fusion de caractéristiques multi-échelle.

Ceci est la classe de configuration destinée à stocker la configuration d'un Pp Ocrv5 Mobile DetModel. Elle est utilisée pour instancier un modèle Pp Ocrv5 Mobile Det selon les arguments spécifiés, en définissant l'architecture du modèle. L'instanciation d'une configuration avec les valeurs par défaut produira une configuration similaire à celle de [PaddlePaddle/PP-OCRv5_mobile_det_safetensors](https://huggingface.co/PaddlePaddle/PP-OCRv5_mobile_det_safetensors)

Les objets de configuration héritent de [PreTrainedConfig](/docs/transformers/main/fr/main_classes/configuration#transformers.PreTrainedConfig) et peuvent être utilisés pour contrôler les sorties du modèle. Consultez la documentation de [PreTrainedConfig](/docs/transformers/main/fr/main_classes/configuration#transformers.PreTrainedConfig) pour plus d’informations.

## PPOCRV5MobileDetModel[[transformers.PPOCRV5MobileDetModel]]

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

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

[Source](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_det/modeling_pp_ocrv5_mobile_det.py#L258)

**Paramètres :**

config ([PPOCRV5MobileDetConfig](/docs/transformers/main/fr/model_doc/pp_ocrv5_mobile_det#transformers.PPOCRV5MobileDetConfig)) : Classe de configuration du modèle contenant tous les paramètres du modèle. L'initialisation à partir d'un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode [from_pretrained()](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel.from_pretrained) pour charger les poids du modèle.

Cœur de PP-OCRv5_mobile_det, composé des réseaux Backbone, Neck et Head. Génère des cartes de segmentation binaire du texte pour les tâches de détection de texte.

Ce modèle hérite de [PreTrainedModel](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel). Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, l'élagage des têtes, etc.).

Ce modèle est également une sous-classe de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l’utilisation et le comportement généraux.

