# PP-OCRv5_mobile_rec

## 概要

**PP-OCRv5_mobile_rec** は、テキスト認識に特化した軽量モデルです。多言語ドキュメントや自然なシーンにおけるテキスト要素の効率的な認識と理解に焦点を当てています。

## モデルアーキテクチャ

PP-OCRv5_mobile_rec は、PaddleOCR チームが開発した最新世代のテキスト認識モデルシリーズである PP-OCRv5_rec の一つです。簡体字中国語、繁体字中国語、英語、日本語の認識を効率的かつ正確にサポートするほか、手書き文字、縦書きテキスト、ピンイン、漢字の希少文字といった複雑なテキストシナリオも単一のモデルで対応します。認識性能を維持しつつ、推論速度とモデルの堅牢性のバランスも取り、さまざまなシナリオにおける文書理解に対して、効率的かつ正確な技術的サポートを提供します。

## 使用方法

### 単一入力推論

以下の例では、[AutoModel](/docs/transformers/main/ja/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)
```

### バッチ推論

[AutoModel](/docs/transformers/main/ja/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, 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/ja/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

テキスト認識タスク用のPPOCRV5MobileRecモデル。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/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: FloatTensor, **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.FloatTensor`、shape `(batch_size, num_channels, image_size, image_size)`) : 入力画像に対応するテンソルです。ピクセル値は[PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ja/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor)を使用して取得できます。詳細は[PPOCRV5ServerRecImageProcessor.__call__()](/docs/transformers/main/ja/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__)を参照してください（`processor_class`は画像の処理に[PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ja/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor)を使用します）。

**戻り値:** `BaseModelOutputWithNoAttention` または `tuple(torch.FloatTensor)`

`BaseModelOutputWithNoAttention`、または`torch.FloatTensor`のタプル（`return_dict=False`が渡された場合、または`config.return_dict=False`の場合）。構成要素は、設定（[PPOCRV5MobileRecConfig](/docs/transformers/main/ja/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecConfig)）と入力によって異なります。

[PPOCRV5MobileRecForTextRecognition](/docs/transformers/main/ja/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecForTextRecognition)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **last_hidden_state** (`torch.FloatTensor`、shape `(batch_size, num_channels, height, width)`) -- モデルの最終層の出力における隠れ状態のシーケンス。
- **hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（モデルに埋め込み層がある場合はその出力用 + 各層の出力用）で、形状は `(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]`、*optional*) : バックボーンモデルの設定です。

hidden_size (`int`、*optional*、デフォルトは`120`) : 隠れ表現の次元数。

mlp_ratio (`float`、*任意*、デフォルトは`2.0`) : MLPの隠れ層の次元と埋め込みの次元の比率。

depth (`int`、*任意*、デフォルトは`2`) : ビジョンエンコーダーの Transformer レイヤー数。

head_out_channels (`int`, *optional*, デフォルト値は 18385) : PPOCRV5MobileRecHead からの出力チャネル数です。最終的な分類を担当します。

conv_kernel_size (`list`, *任意*) : 畳み込みカーネルのサイズ。

qkv_bias (`bool`, *任意*, デフォルトは `True`) : クエリ、キー、バリューにバイアスを追加するかどうか。

num_attention_heads (`int`、*任意*、デフォルトは `8`) : Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。

attention_dropout (`Union[float, int]`、*任意*、デフォルトは`0.0`) : 注意確率のドロップアウト率。

layer_norm_eps (`float`、*任意*、デフォルトは`1e-06`) : Layer Normalization 層で使用する epsilon です。

これは、PPOCRV5MobileRecModel の設定を保存するための設定クラスです。指定された引数に基づいて Pp Ocrv5 Mobile Rec モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[PaddlePaddle/PP-OCRv5_mobile_rec_safetensors](https://huggingface.co/PaddlePaddle/PP-OCRv5_mobile_rec_safetensors) と同様の設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/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/ja/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

BackboneネットワークとHeadネットワークで構成されるPPOCRV5MobileRecモデル。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/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: FloatTensor, **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.FloatTensor`、shape `(batch_size, num_channels, image_size, image_size)`) : 入力画像に対応するテンソルです。ピクセル値は[PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ja/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor)を使用して取得できます。詳細は[PPOCRV5ServerRecImageProcessor.__call__()](/docs/transformers/main/ja/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__)を参照してください（`processor_class`は画像の処理に[PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ja/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor)を使用します）。

**戻り値:** `BaseModelOutputWithNoAttention` または `tuple(torch.FloatTensor)`

`BaseModelOutputWithNoAttention`、または`torch.FloatTensor`のタプル（`return_dict=False`が渡された場合、または`config.return_dict=False`の場合）。構成要素は、設定（[PPOCRV5MobileRecConfig](/docs/transformers/main/ja/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecConfig)）と入力によって異なります。

[PPOCRV5MobileRecModel](/docs/transformers/main/ja/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecModel)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **last_hidden_state** (`torch.FloatTensor`、shape `(batch_size, num_channels, height, width)`) -- モデルの最終層の出力における隠れ状態のシーケンス。
- **hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（モデルに埋め込み層がある場合はその出力用 + 各層の出力用）で、形状は `(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/ja/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

BackboneネットワークとHeadネットワークで構成されるPPOCRV5MobileRecモデル。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/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: FloatTensor, **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.FloatTensor`、shape `(batch_size, num_channels, image_size, image_size)`) : 入力画像に対応するテンソルです。ピクセル値は[PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ja/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor)を使用して取得できます。詳細は[PPOCRV5ServerRecImageProcessor.__call__()](/docs/transformers/main/ja/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__)を参照してください（`processor_class`は画像の処理に[PPOCRV5ServerRecImageProcessor](/docs/transformers/main/ja/model_doc/pp_ocrv5_server_rec#transformers.PPOCRV5ServerRecImageProcessor)を使用します）。

**戻り値:** `BaseModelOutputWithNoAttention` または `tuple(torch.FloatTensor)`

`BaseModelOutputWithNoAttention`、または`torch.FloatTensor`のタプル（`return_dict=False`が渡された場合、または`config.return_dict=False`の場合）。構成要素は、設定（[PPOCRV5MobileRecConfig](/docs/transformers/main/ja/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecConfig)）と入力によって異なります。

[PPOCRV5MobileRecModel](/docs/transformers/main/ja/model_doc/pp_ocrv5_mobile_rec#transformers.PPOCRV5MobileRecModel)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **last_hidden_state** (`torch.FloatTensor`、shape `(batch_size, num_channels, height, width)`) -- モデルの最終層の出力における隠れ状態のシーケンス。
- **hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（モデルに埋め込み層がある場合はその出力用 + 各層の出力用）で、形状は `(batch_size, num_channels, height, width)` です。

  各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

