# PP-OCRv5_mobile_det

## Visão geral

**PP-OCRv5_mobile_det** é um modelo leve dedicado à detecção de texto, com foco específico na detecção e compreensão eficientes de elementos de texto em documentos multilíngues e cenas naturais.

## Arquitetura do Modelo

PP-OCRv5_mobile_det é um dos modelos da série PP-OCRv5_det, a geração mais recente de modelos de detecção de texto desenvolvidos pela equipe PaddleOCR. Ele visa suportar de forma eficiente e precisa a detecção de texto em cenários diversos — incluindo manuscrito, vertical, rotacionado e curvo — em múltiplos idiomas, como chinês simplificado, chinês tradicional, inglês e japonês. Os recursos principais incluem o tratamento robusto de layouts complexos, tamanhos variados de texto e fundos desafiadores, tornando-o adequado para aplicações práticas como análise de documentos, reconhecimento de placas de licença e detecção de texto em cenas.

## Uso

### Inferência com entrada única

O exemplo abaixo demonstra como detectar texto com PP-OCRV5_Mobile_Det usando o [Pipeline](/docs/transformers/main/pt/main_classes/pipelines#transformers.Pipeline) ou o [AutoModel](/docs/transformers/main/pt/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"])
```

### Inferência em lote

Aqui está como você pode fazer isso com PP-OCRV5_Mobile_Det usando o [Pipeline](/docs/transformers/main/pt/main_classes/pipelines#transformers.Pipeline) ou o [AutoModel](/docs/transformers/main/pt/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)
```

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

**Parâmetros:**

config ([PPOCRV5MobileDetConfig](/docs/transformers/main/pt/model_doc/pp_ocrv5_mobile_det#transformers.PPOCRV5MobileDetConfig)) : Classe de configuração do modelo com todos os parâmetros do modelo. Inicializar com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método [from_pretrained()](/docs/transformers/main/pt/main_classes/model#transformers.PreTrainedModel.from_pretrained) para carregar os pesos do modelo.

Modelo PPOCRV5 Mobile Det para tarefas de detecção de objetos (texto). Encapsula o núcleo PPOCRV5MobileDetModel e retorna saídas compatíveis com a API de detecção de objetos do Transformers.

Este modelo herda de [PreTrainedModel](/docs/transformers/main/pt/main_classes/model#transformers.PreTrainedModel). Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.).

Este modelo também é uma subclasse de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso e comportamento gerais.

## 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))
```

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

**Parâmetros:**

backbone_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`, *opcional*) : A configuração do modelo backbone.

reduction (`int`, *opcional*, padrão 4) : O fator de redução para as dimensões dos canais de características, usado para reduzir o número de parâmetros do modelo e a complexidade computacional, mantendo a representatividade das características.

neck_out_channels (`int`, *opcional*, padrão 96) : O número de canais de saída da rede neck, que é responsável pela fusão e refinamento de recursos antes de passá-los para a rede head.

interpolate_mode (`str`, *opcional*, padrão `"nearest"`) : O modo de interpolação usado para aumentar ou reduzir o tamanho dos mapas de características na rede de pescoço. Os modos suportados incluem `"nearest"` (interpolação do vizinho mais próximo) e `"bilinear"`.

kernel_list (`List[int]`, *opcional*, padrão `[3, 2, 2]`) : A lista de tamanhos de kernel para as camadas convolucionais na rede de cabeçalho, usada para extração de recursos em múltiplas escalas a fim de detectar regiões de texto de diferentes tamanhos.

layer_list_out_channels (`List[int]`, *opcional*, padrão `[12, 18, 42, 360]`) : A lista de canais de saída para cada estágio do backbone, usada para configurar os canais de entrada das camadas RSE na rede neck para fusão de recursos em múltiplas escalas.

Esta é a classe de configuração para armazenar a configuração de um Pp Ocrv5 Mobile DetModel. Ela é usada para instanciar um modelo Pp Ocrv5 Mobile Det de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do [PaddlePaddle/PP-OCRv5_mobile_det_safetensors](https://huggingface.co/PaddlePaddle/PP-OCRv5_mobile_det_safetensors)

Os objetos de configuração herdam de [PreTrainedConfig](/docs/transformers/main/pt/main_classes/configuration#transformers.PreTrainedConfig) e podem ser usados para controlar as saídas do modelo. Leia a documentação de [PreTrainedConfig](/docs/transformers/main/pt/main_classes/configuration#transformers.PreTrainedConfig) para mais informações.

## PPOCRV5MobileDetModel[[transformers.PPOCRV5MobileDetModel]]

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

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

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

**Parâmetros:**

config ([PPOCRV5MobileDetConfig](/docs/transformers/main/pt/model_doc/pp_ocrv5_mobile_det#transformers.PPOCRV5MobileDetConfig)) : Classe de configuração do modelo com todos os parâmetros do modelo. Inicializar com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método [from_pretrained()](/docs/transformers/main/pt/main_classes/model#transformers.PreTrainedModel.from_pretrained) para carregar os pesos do modelo.

Core PP-OCRv5_mobile_det, composto pelas redes Backbone, Neck e Head. Gera mapas de segmentação de texto binários para tarefas de detecção de texto.

Este modelo herda de [PreTrainedModel](/docs/transformers/main/pt/main_classes/model#transformers.PreTrainedModel). Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.).

Este modelo também é uma subclasse de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso e comportamento gerais.

