# PP-OCRv5_mobile_rec

## 개요

**PP-OCRv5_mobile_rec**은 텍스트 인식에 특화된 경량 모델로, 다국어 문서 및 자연 장면 내 텍스트 요소의 효율적인 인식과 이해에 초점을 맞춥니다.

## 모델 아키텍처

PP-OCRv5_mobile_rec은 PaddleOCR 팀이 개발한 최신 세대 텍스트 인식 모델 시리즈인 PP-OCRv5_rec의 일부입니다. 단일 모델로 간체 중국어, 번체 중국어, 영어, 일본어 및 손글씨, 세로 텍스트, 병음, 희귀 문자와 같은 복잡한 텍스트 시나리오의 인식을 효율적이고 정확하게 지원합니다. 인식 성능을 유지하면서 추론 속도와 모델의 견고성도 균형 있게 조정하여, 다양한 시나리오의 문서 이해에 효율적이고 정확한 기술적 지원을 제공합니다.

## 사용

### 단일 입력 추론

아래 예제는 [AutoModel](/docs/transformers/main/ko/model_doc/auto#transformers.AutoModel)을 사용하여 PP-OCRv5_mobile_rec로 텍스트를 감지하는 방법을 보여줍니다.

```python
import requests
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForTextRecognition

model_path="PaddlePaddle/PP-OCRv5_mobile_rec_safetensors"
model = AutoModelForTextRecognition.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_rec_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_text_recognition(outputs)

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

### 배치 추론

PP-OCRv5_mobile_rec을 사용하여 [AutoModel](/docs/transformers/main/ko/model_doc/auto#transformers.AutoModel)로 이를 수행하는 방법은 다음과 같습니다:

```python
import requests
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForTextRecognition

model_path = "PaddlePaddle/PP-OCRv5_mobile_rec_safetensors"
model = AutoModelForTextRecognition.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_rec_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_text_recognition(outputs)
for result in results:
    print(result)
```

## PPOCRV5MobileRecForTextRecognition[[transformers.PPOCRV5MobileRecForTextRecognition]]

#### transformers.PPOCRV5MobileRecForTextRecognition[[transformers.PPOCRV5MobileRecForTextRecognition]]

```python
transformers.PPOCRV5MobileRecForTextRecognition(config: PPOCRV5MobileRecConfig)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_rec/modeling_pp_ocrv5_mobile_rec.py#L374)

**매개변수:**

config ([PPOCRV5MobileRecConfig](/docs/transformers/main/ko/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecConfig)) : 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 [from_pretrained()](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained) 메서드를 확인하세요.

텍스트 인식 작업을 위한 PPOCRV5MobileRec 모델.

이 모델은 [PreTrainedModel](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel)에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대해서는 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법과 동작에 관한 모든 사항은 PyTorch 문서를 참조하세요.

#### forward[[transformers.PPOCRV5MobileRecForTextRecognition.forward]]

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

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_rec/modeling_pp_ocrv5_mobile_rec.py#L384)

**매개변수:**

pixel_values (`torch.Tensor`, shape `(batch_size, num_channels, image_size, image_size)`) : 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 [PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ko/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor)를 사용하여 얻을 수 있습니다. 자세한 내용은 [PPOCRV5ServerRecImageProcessor.__call__()](/docs/transformers/main/ko/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__)를 참조하세요 (`processor_class`는 이미지 처리에 [PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ko/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor)를 사용합니다).

**반환값:** `BaseModelOutputWithNoAttention` 또는 `tuple(torch.Tensor)`

`BaseModelOutputWithNoAttention` 또는 `torch.Tensor`의 튜플(`return_dict=False`가 전달되거나 `config.return_dict=False`인 경우)로, [PPOCRV5MobileRecConfig](/docs/transformers/main/ko/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecConfig) 및 입력에 따라 다양한 요소를 포함합니다.

[PPOCRV5MobileRecForTextRecognition](/docs/transformers/main/ko/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecForTextRecognition)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

`Module` 인스턴스는 전처리 및 후처리 단계를 실행하는 것을 처리하지만, 이 함수는 해당 단계를 조용히 무시하므로, 순전파(forward pass) 레시피를 이 함수 내에서 정의해야 하더라도 이후에는 이 함수 대신 `Module` 인스턴스를 호출해야 합니다.

- **last_hidden_state** (`torch.Tensor`, shape `(batch_size, num_channels, height, width)`) -- 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.
- **hidden_states** (`tuple(torch.Tensor)`, *선택 사항*, `output_hidden_states=True`가 전달되었거나 `config.output_hidden_states=True`인 경우 반환됨) -- `torch.Tensor`의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은 `(batch_size, num_channels, height, width)`입니다.

  각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

## PPOCRV5MobileRecConfig[[transformers.PPOCRV5MobileRecConfig]]

#### transformers.PPOCRV5MobileRecConfig[[transformers.PPOCRV5MobileRecConfig]]

```python
transformers.PPOCRV5MobileRecConfig(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, hidden_act: str = 'silu', backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, hidden_size: int = 120, mlp_ratio: float = 2.0, depth: int = 2, head_out_channels: int = 18385, conv_kernel_size: list | None = None, qkv_bias: bool = True, num_attention_heads: int = 8, attention_dropout: float | int = 0.0, layer_norm_eps: float = 1e-06)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_rec/configuration_pp_ocrv5_mobile_rec.py#L31)

**매개변수:**

hidden_act (`str`, *선택 사항*, 기본값 `silu`) : 디코더에서 사용되는 비선형 활성화 함수(함수 또는 문자열). 예를 들어, `"gelu"`, `"relu"`, `"silu"` 등이 있습니다.

backbone_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`, *선택*) : 백본 모델의 구성입니다.

hidden_size (`int`, *선택 사항*, 기본값 `120`) : 숨겨진 표현의 차원.

mlp_ratio (`float`, *선택 사항*, 기본값 `2.0`) : MLP 숨겨진 차원과 임베딩 차원의 비율입니다.

depth (`int`, *선택 사항*, 기본값 `2`) : 비전 인코더의 Transformer 레이어 수.

head_out_channels (`int`, *선택 사항*, 기본값 18385) : PPOCRV5MobileRecHead의 출력 채널 수로, 최종 분류를 담당합니다.

conv_kernel_size (`list`, *선택 사항*) : 컨볼루션 커널의 크기.

qkv_bias (`bool`, *선택 사항*, 기본값 `True`) : 쿼리, 키, 값에 bias를 추가할지 여부.

num_attention_heads (`int`, *선택 사항*, 기본값 `8`) : Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다.

attention_dropout (`Union[float, int]`, *선택 사항*, 기본값 `0.0`) : attention 확률에 적용할 dropout 비율입니다.

layer_norm_eps (`float`, *선택 사항*, 기본값 `1e-06`) : 레이어 정규화 레이어에서 사용되는 epsilon 값입니다.

이것은 PPOCRV5MobileRecModel의 구성을 저장하기 위한 구성 클래스입니다. 지정된 인자에 따라 Pp Ocrv5 Mobile Rec 모델을 인스턴스화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 구성을 인스턴스화하면 [PaddlePaddle/PP-OCRv5_mobile_rec_safetensors](https://huggingface.co/PaddlePaddle/PP-OCRv5_mobile_rec_safetensors)와 유사한 구성이 생성됩니다.

Configuration 객체는 [PreTrainedConfig](/docs/transformers/main/ko/main_classes/configuration#transformers.PreTrainedConfig)를 상속하며, 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 [PreTrainedConfig](/docs/transformers/main/ko/main_classes/configuration#transformers.PreTrainedConfig)의 문서를 참고하세요.

## PPOCRV5MobileRecModel[[transformers.PPOCRV5MobileRecModel]]

#### transformers.PPOCRV5MobileRecModel[[transformers.PPOCRV5MobileRecModel]]

```python
transformers.PPOCRV5MobileRecModel(config: PPOCRV5MobileRecConfig)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_rec/modeling_pp_ocrv5_mobile_rec.py#L322)

**매개변수:**

config ([PPOCRV5MobileRecConfig](/docs/transformers/main/ko/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecConfig)) : 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 [from_pretrained()](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained) 메서드를 확인하세요.

Backbone 네트워크와 Head 네트워크로 구성된 PPOCRV5MobileRec 모델.

이 모델은 [PreTrainedModel](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel)에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대해서는 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법과 동작에 관한 모든 사항은 PyTorch 문서를 참조하세요.

#### forward[[transformers.PPOCRV5MobileRecModel.forward]]

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

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_rec/modeling_pp_ocrv5_mobile_rec.py#L330)

**매개변수:**

pixel_values (`torch.Tensor`, shape `(batch_size, num_channels, image_size, image_size)`) : 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 [PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ko/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor)를 사용하여 얻을 수 있습니다. 자세한 내용은 [PPOCRV5ServerRecImageProcessor.__call__()](/docs/transformers/main/ko/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__)를 참조하세요 (`processor_class`는 이미지 처리에 [PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ko/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor)를 사용합니다).

**반환값:** `BaseModelOutputWithNoAttention` 또는 `tuple(torch.Tensor)`

`BaseModelOutputWithNoAttention` 또는 `return_dict=False`가 전달되거나 `config.return_dict=False`인 경우 `torch.Tensor`의 튜플로, [PPOCRV5MobileRecConfig](/docs/transformers/main/ko/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecConfig) 및 입력에 따라 다양한 요소를 포함합니다.

[PPOCRV5MobileRecModel](/docs/transformers/main/ko/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecModel)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

`Module` 인스턴스는 전처리 및 후처리 단계를 실행하는 것을 처리하지만, 이 함수는 해당 단계를 조용히 무시하므로, 순전파(forward pass) 레시피를 이 함수 내에서 정의해야 하더라도 이후에는 이 함수 대신 `Module` 인스턴스를 호출해야 합니다.

- **last_hidden_state** (`torch.Tensor`, shape `(batch_size, num_channels, height, width)`) -- 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.
- **hidden_states** (`tuple(torch.Tensor)`, *선택 사항*, `output_hidden_states=True`가 전달되었거나 `config.output_hidden_states=True`인 경우 반환됨) -- `torch.Tensor`의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은 `(batch_size, num_channels, height, width)`입니다.

  각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

## PPOCRV5MobileRecModel[[transformers.PPOCRV5MobileRecModel]]

#### transformers.PPOCRV5MobileRecModel[[transformers.PPOCRV5MobileRecModel]]

```python
transformers.PPOCRV5MobileRecModel(config: PPOCRV5MobileRecConfig)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_rec/modeling_pp_ocrv5_mobile_rec.py#L322)

**매개변수:**

config ([PPOCRV5MobileRecConfig](/docs/transformers/main/ko/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecConfig)) : 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 [from_pretrained()](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained) 메서드를 확인하세요.

Backbone 네트워크와 Head 네트워크로 구성된 PPOCRV5MobileRec 모델.

이 모델은 [PreTrainedModel](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel)에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대해서는 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법과 동작에 관한 모든 사항은 PyTorch 문서를 참조하세요.

#### forward[[transformers.PPOCRV5MobileRecModel.forward]]

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

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_rec/modeling_pp_ocrv5_mobile_rec.py#L330)

**매개변수:**

pixel_values (`torch.Tensor`, shape `(batch_size, num_channels, image_size, image_size)`) : 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 [PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ko/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor)를 사용하여 얻을 수 있습니다. 자세한 내용은 [PPOCRV5ServerRecImageProcessor.__call__()](/docs/transformers/main/ko/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__)를 참조하세요 (`processor_class`는 이미지 처리에 [PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ko/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor)를 사용합니다).

**반환값:** `BaseModelOutputWithNoAttention` 또는 `tuple(torch.Tensor)`

`BaseModelOutputWithNoAttention` 또는 `torch.Tensor`의 튜플(`return_dict=False`가 전달되거나 `config.return_dict=False`인 경우), 구성([PPOCRV5MobileRecConfig](/docs/transformers/main/ko/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecConfig)) 및 입력에 따라 다양한 요소를 포함합니다.

[PPOCRV5MobileRecModel](/docs/transformers/main/ko/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecModel)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

`Module` 인스턴스는 전처리 및 후처리 단계를 실행하는 것을 처리하지만, 이 함수는 해당 단계를 조용히 무시하므로, 순전파(forward pass) 레시피를 이 함수 내에서 정의해야 하더라도 이후에는 이 함수 대신 `Module` 인스턴스를 호출해야 합니다.

- **last_hidden_state** (`torch.Tensor`, shape `(batch_size, num_channels, height, width)`) -- 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.
- **hidden_states** (`tuple(torch.Tensor)`, *선택 사항*, `output_hidden_states=True`가 전달되었거나 `config.output_hidden_states=True`인 경우 반환됨) -- `torch.Tensor`의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은 `(batch_size, num_channels, height, width)`입니다.

  각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

