# MiniCPM-OCR

MiniCPM-OCR 是由 [OpenBMB](https://github.com/OpenBMB) 开发的 [MiniCPM-V](https://huggingface.co/papers/2509.18154) 系列中的文档理解模型。它沿用了 [MiniCPM-V 4.6](./minicpmv4_6) 的架构——即在 [Qwen3.5](./qwen3_5) 语言模型前接入了带有窗口注意力合并器的 [SigLIP](./siglip) 视觉编码器——并针对阅读文本密集图像（如扫描页、截图、收据和表格）进行了专门优化。

该模型由 [OpenBMB](https://huggingface.co/openbmb) 贡献。原始代码可在[此处](https://github.com/openbmb/MiniCPM-OCR)找到。

## 使用示例

```python
from transformers import pipeline

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "image",
                "image": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/ocr_receipt.jpeg",
            },
            {"type": "text", "text": "Transcribe all the text in this document."},
        ],
    },
]

pipe = pipeline("image-text-to-text", model="openbmb/MiniCPM-OCR-1.0")
outputs = pipe(text=messages, max_new_tokens=256, return_full_text=False)
print(outputs[0]["generated_text"])
#
#
# Document No : TD01167104
# Date : 25/12/2018 8:13:39 PM
# Cashier : MANIS
# Member :
# CASH BILL
# CODE/DESC PRICE Disc AMOUNT
# QTY RM RM
# 9556939040118 KF MODELLING CLAY KIDDY FISH
# 1 PC * 9.00 0.00 9.00
# Total : 9.00
# Rounding Adjustment : 0.00
# Round-d Total (RM) : 9.00
```

```python
from transformers import AutoModelForImageTextToText, AutoProcessor

model_id = "openbmb/MiniCPM-OCR-1.0"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(model_id, device_map="auto")

messages = [
    {
        "role": "user",
        "content": [
            {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/ocr_suggestion_form.jpg"},
            {"type": "text", "text": "Convert this page to markdown."},
        ],
    }
]

inputs = processor.apply_chat_template(
    messages, add_generation_prompt=True, tokenize=True,
    return_dict=True, return_tensors="pt",
).to(model.device, dtype=model.dtype)

output = model.generate(**inputs, max_new_tokens=512)
decoded_output = processor.decode(output[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)
print(decoded_output)
# ```markdown
# R&D QUALITY IMPROVEMENT
# SUGGESTION/SOLUTION FORM
#
# Name/Phone Ext.: M. Hamann, P. Harper, P. Martinez Date: 9/3/92
#
# Supervisor/Manager: J. S. Wigand R&D Group: Licensee
# ...
# ```
```

发布的检查点的聊天模板默认禁用思考。向 `apply_chat_template` 传递 `enable_thinking=True` 以显式启用它。

MiniCPM-OCR 支持 MiniCPM-V 系列的两种视觉下采样模式：

- **4x**（默认值）：下采样程度更低，视觉 token 更多，适用于文档和截图转录场景。
- **16x**：更激进的降采样，更少的视觉 token，在自然图像上推理速度更快。

必须将 mode 同时传递给 processor 和 `model.generate`，因为 processor 需要计算视觉塔预期生成的视觉占位符数量：

```python
from transformers import AutoModelForImageTextToText, AutoProcessor

model_id = "openbmb/MiniCPM-OCR-1.0"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(model_id, device_map="auto")

messages = [
    {
        "role": "user",
        "content": [
            {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/ocr_suggestion_form.jpg"},
            {"type": "text", "text": "Convert this page to markdown."},
        ],
    }
]

inputs = processor.apply_chat_template(
    messages, add_generation_prompt=True, tokenize=True,
    return_dict=True, return_tensors="pt",
    processor_kwargs={"downsample_mode": "4x"},
).to(model.device, dtype=model.dtype)

output = model.generate(**inputs, max_new_tokens=512, downsample_mode="4x")
print((inputs["input_ids"] == model.config.image_token_id).sum().item())
# 1260 visual tokens; the same page in `"16x"` mode is 315 instead
```

每次调用时指定的 `downsample_mode` 仅对该次调用生效，不会改变处理器本身，因此同一个处理器可以同时服务于两种模式。如果直接调用处理器而不是通过 `apply_chat_template`，请将其作为普通的关键字参数传入：

```python
inputs = processor(images=[image], text=[text], return_tensors="pt", downsample_mode="4x")
```

若要将其设为默认模式，请在加载处理器时进行设置：

```python
processor = AutoProcessor.from_pretrained("openbmb/MiniCPM-OCR-1.0", downsample_mode="4x")
```

尺寸过小而无法切分的图像默认会被放大至 `scale_resolution`，这是已发布检查点训练时所使用的设置。截图和裁剪图像通常更适合保持其原始分辨率，因为放大只会使字形变得模糊，因此 `small_image_upsize` 用于在这两种情况之间进行选择：

- `"always"`（默认值）：将它们放大至 `scale_resolution`。
- `"never"`：保持其原始分辨率，仅对齐到 patch 网格。
- `"adaptive"`：根据字形大小和密度，逐张图像、逐切片进行决策。

```python
from transformers import AutoProcessor
from transformers.image_utils import load_image

url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/ocr_receipt.jpeg"
image = load_image(url).resize((224, 224))

processor = AutoProcessor.from_pretrained("openbmb/MiniCPM-OCR-1.0")
messages = [{"role": "user", "content": [{"type": "image"}, {"type": "text", "text": "Read the text."}]}]
text = processor.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)

print(processor(images=[image], text=[text], return_tensors="pt")["target_sizes"].tolist())
# [[32, 32]] -- upscaled to `scale_resolution`

processor = AutoProcessor.from_pretrained("openbmb/MiniCPM-OCR-1.0", small_image_upsize="never")
print(processor(images=[image], text=[text], return_tensors="pt")["target_sizes"].tolist())
# [[16, 16]] -- 224 / 14 patches per side, no upscaling
```

`"adaptive"` 将小型密集文本放大至 `scale_resolution`，将低于 6272 像素的图像放大至 84，其余图像保持原始分辨率；在切片处理中，其消耗的 token 数绝不会超过基线瓦片。字形高度和密度通过 Otsu 阈值法结合连通域分析进行测量，因此需要 [OpenCV](https://pypi.org/project/opencv-python/)，若未安装则会抛出异常，而不是静默回退到不同的规则。

```python
processor = AutoProcessor.from_pretrained("openbmb/MiniCPM-OCR-1.0", small_image_upsize="adaptive")
print(processor(images=[image], text=[text], return_tensors="pt")["target_sizes"].tolist())
# [[32, 32]] -- dense text detected, so this one is upscaled anyway
```

与 `downsample_mode` 类似，它也可以在每次调用时单独覆盖，从而在不重新加载处理器的情况下，将 224x224 的收据保持在其原始分辨率：

```python
inputs = processor(images=[image], text=[text], return_tensors="pt", small_image_upsize="never")
print(inputs["target_sizes"].tolist())
# [[16, 16]] -- 224 / 14 patches per side, no upscaling
```

```python
from transformers import AutoModelForImageTextToText, AutoProcessor

model_id = "openbmb/MiniCPM-OCR-1.0"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(model_id, device_map="auto")

messages = [
    [
        {
            "role": "user",
            "content": [
                {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/ocr_receipt.jpeg"},
                {"type": "text", "text": "Transcribe all the text in this document."},
            ],
        }
    ],
    [
        {
            "role": "user",
            "content": [
                {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/ocr_suggestion_form.jpg"},
                {"type": "text", "text": "Transcribe all the text in this document."},
            ],
        }
    ],
]

inputs = processor.apply_chat_template(
    messages, add_generation_prompt=True, tokenize=True,
    return_dict=True, return_tensors="pt",
    processor_kwargs={"padding": True},
).to(model.device, dtype=model.dtype)

output = model.generate(**inputs, max_new_tokens=256)
decoded_outputs = processor.batch_decode(output[:, inputs["input_ids"].shape[1]:], skip_special_tokens=True)
print(decoded_outputs[0])
# Document No : TD01167104
# Date : 25/12/2018 8:13:39 PM
# Cashier : MANIS
# ...
print(decoded_outputs[1])
# R&D QUALITY IMPROVEMENT
# SUGGESTION/SOLUTION FORM
#
# Name/Phone Ext.: M. Hamann P. Harper P. Martinez Date: 9/3/92
# Supervisor/Manager: J. S. Wigand R&D Group: Licensee
# ...
```

这两个页面是独立调整大小的，因此它们的提示词长度不同。`padding` 必须通过 `processor_kwargs` 请求，以便 `apply_chat_template` 将其转发给处理器，并且处理器会在左侧填充，从而确保 `generate` 始终从每个提示词的末尾继续生成。

## MiniCPMOcrConfig[[transformers.MiniCPMOcrConfig]]

#### transformers.MiniCPMOcrConfig[[transformers.MiniCPMOcrConfig]]

```python
transformers.MiniCPMOcrConfig(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, text_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, vision_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, insert_layer_id: int = 6, image_token_id: int | None = None, video_token_id: int | None = None, tie_word_embeddings: bool = True, downsample_mode: str = '4x', merge_kernel_size: tuple[int, int] | list[int] = (2, 2), merger_times: int = 1)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/configuration_minicpm_ocr.py#L66)

**参数：**

text_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`，*可选*)：文本骨干网络的配置对象或字典。

vision_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`，*可选*)：视觉骨干网络的配置对象或字典。

insert_layer_id (`int`，*可选*，默认为 6)：应用窗口注意力合并器的视觉编码器层索引。

image_token_id (`int`, *可选*) : 用作输入图像占位符的图像标记索引。

video_token_id (`int`, *可选*) : 用作输入视频占位符的视频标记索引。

tie_word_embeddings (`bool`，*可选*，默认为 `True`)：是否根据模型的 `tied_weights_keys` 映射来绑定权重嵌入。

downsample_mode (`str`，*可选*，默认为 `"4x"`)：视觉 token 的下采样比例。`"4x"` 保留的 token 数量是 `"16x"` 的 4 倍，而 `"16x"` 是用于读取文本密集文档图像的比例。

merge_kernel_size (`tuple[int, int]`，*可选*，默认为 `(2, 2)`)：用于在 Merger 中合并相邻视觉 patch 的核大小 `(h, w)`。

merger_times (`int`，*可选*，默认为 1)：Merger 中迭代合并轮次的数量。

这是用于存储 MiniCPMOcrModel 配置的类。它根据指定的参数实例化 Minicpm Ocr 模型，并定义模型架构。使用默认值实例化配置将得到与 [openbmb/MiniCPM-OCR-1.0](https://huggingface.co/openbmb/MiniCPM-OCR-1.0) 类似的配置。

配置对象继承自 [PreTrainedConfig](/docs/transformers/main/zh/main_classes/configuration#transformers.PreTrainedConfig)，可用于控制模型输出。有关更多信息，请参阅 [PreTrainedConfig](/docs/transformers/main/zh/main_classes/configuration#transformers.PreTrainedConfig) 的文档。

## MiniCPMOcrVisionConfig[[transformers.MiniCPMOcrVisionConfig]]

#### transformers.MiniCPMOcrVisionConfig[[transformers.MiniCPMOcrVisionConfig]]

```python
transformers.MiniCPMOcrVisionConfig(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_size: int = 768, intermediate_size: int = 3072, num_hidden_layers: int = 12, num_attention_heads: int = 12, num_channels: int = 3, image_size: int | list[int] | tuple[int, int] = 224, patch_size: int | list[int] | tuple[int, int] = 16, hidden_act: str = 'gelu_pytorch_tanh', layer_norm_eps: float = 1e-06, attention_dropout: float | int = 0.0, insert_layer_id: int = 6, window_kernel_size: tuple[int, int] | list[int] = (2, 2))
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/configuration_minicpm_ocr.py#L31)

**参数：**

hidden_size (`int`，*可选*，默认为 `768`)：隐藏表示的维度。

intermediate_size (`int`，*可选*，默认值为 `3072`)：MLP 表示的维度。

num_hidden_layers (`int`，*可选*，默认为 `12`)：Transformer 解码器中的隐藏层数。

num_attention_heads (`int`，*可选*，默认为 `12`)：Transformer 解码器中每个注意力层的注意力头数量。

num_channels (`int`，*可选*，默认为 `3`)：输入通道数。

image_size (`Union[int, list[int], tuple[int, int]]`，*可选*，默认为 `224`)：每张图片的尺寸（分辨率）。

patch_size (`Union[int, list[int], tuple[int, int]]`，*可选*，默认为 `16`)：每个 patch 的大小（分辨率）。

hidden_act (`str`，*可选*，默认为 `gelu_pytorch_tanh`)：解码器中的非线性激活函数（函数或字符串）。例如，`"gelu"`、`"relu"`、`"silu"` 等。

layer_norm_eps (`float`, *可选*, 默认为 `1e-06`) : 层归一化层使用的 epsilon。

attention_dropout (`Union[float, int]`，*可选*，默认值为 `0.0`)：注意力概率的 dropout 比率。

insert_layer_id (`int`，*可选*，默认为 6)：应用窗口注意力合并器的视觉编码器层索引。

window_kernel_size (`tuple[int, int]`，*可选*，默认为 `(2, 2)`)：中间窗口注意力合并器的窗口大小 `(h, w)`。

这是用于存储 MiniCPMOcrModel 配置的类。它根据指定的参数实例化 Minicpm Ocr 模型，并定义模型架构。使用默认值实例化配置将得到与 [openbmb/MiniCPM-OCR-1.0](https://huggingface.co/openbmb/MiniCPM-OCR-1.0) 类似的配置。

配置对象继承自 [PreTrainedConfig](/docs/transformers/main/zh/main_classes/configuration#transformers.PreTrainedConfig)，可用于控制模型输出。有关更多信息，请参阅 [PreTrainedConfig](/docs/transformers/main/zh/main_classes/configuration#transformers.PreTrainedConfig) 的文档。

## MiniCPMOcrVisionPreTrainedModel[[transformers.MiniCPMOcrVisionPreTrainedModel]]

#### transformers.MiniCPMOcrVisionPreTrainedModel[[transformers.MiniCPMOcrVisionPreTrainedModel]]

```python
transformers.MiniCPMOcrVisionPreTrainedModel(config: PreTrainedConfig, *inputs, **kwargs)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/modeling_minicpm_ocr.py#L396)

#### forward[[transformers.MiniCPMOcrVisionPreTrainedModel.forward]]

```python
forward(*args, **kwargs)
```

点分路径（例如 `torch.float32`）的模拟值：属性访问链和调用行为如同透传装饰器，`repr` 为点分路径，将其用作基类时会替换为普通的 `type` 基类（PEP 560 `__mro_entries__`），因此真实的子类保留正常的元类，且 `inspect.signature` 读取的是它们真实的 `__init__`，而非模拟对象的。

## MiniCPMOcrVisionModel[[transformers.MiniCPMOcrVisionModel]]

#### transformers.MiniCPMOcrVisionModel[[transformers.MiniCPMOcrVisionModel]]

```python
transformers.MiniCPMOcrVisionModel(config: MiniCPMOcrVisionConfig)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/modeling_minicpm_ocr.py#L410)

#### forward[[transformers.MiniCPMOcrVisionModel.forward]]

```python
forward(pixel_values, target_sizes: typing.Optional[torch.IntTensor] = None, use_vit_merger: bool = True, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/modeling_minicpm_ocr.py#L442)

**参数：**

pixel_values (`` of shape `(batch_size, num_channels, image_size, image_size)`)：与输入图像对应的张量。可以使用 [MiniCPMOcrImageProcessor](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrImageProcessor) 获取像素值。有关详细信息，请参阅 [MiniCPMOcrImageProcessor.__call__()](/docs/transformers/main/zh/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__)（[MiniCPMOcrProcessor](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrProcessor) 使用 [MiniCPMOcrImageProcessor](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrImageProcessor) 处理图像）。

target_sizes (`torch.IntTensor`，形状为 `(batch_size, 2)`，*可选*)：用于计算位置嵌入的 Patch 网格大小 `(h, w)`。

use_vit_merger (`bool`, *可选*, 默认为 `True`) : 是否在编码器之后应用 ViT 窗口注意力合并器。

**返回：** [BaseModelOutputWithPooling](/docs/transformers/main/zh/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) 或 `tuple(torch.Tensor)`

一个 [BaseModelOutputWithPooling](/docs/transformers/main/zh/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) 或 `torch.Tensor` 元组（如果传入了 `return_dict=False` 或 `config.return_dict=False`），其包含的元素取决于配置（[MiniCPMOcrConfig](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrConfig)）和输入。

[MiniCPMOcrVisionModel](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrVisionModel) 的 forward 方法重写了 `__call__` 特殊方法。

尽管前向传播的实现需要在此函数中定义，但之后应调用 `Module` 实例，而不是直接调用此函数，因为前者会负责执行预处理和后处理步骤，而后者会静默地忽略这些步骤。

- **last_hidden_state**（形状为 `(batch_size, sequence_length, hidden_size)` 的 `torch.Tensor`）-- 模型最后一层输出的隐藏状态序列。
- **pooler_output**（形状为 `(batch_size, hidden_size)` 的 `torch.Tensor`）-- 序列中第一个 token（分类 token）的最后一层隐藏状态，经过用于辅助预训练任务的层进一步处理后的结果。例如，对于 BERT 系列模型，这返回的是分类 token 经过线性层和 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 后的注意力权重，用于在自注意力头中计算加权平均值。

## MiniCPMOcrModel[[transformers.MiniCPMOcrModel]]

#### transformers.MiniCPMOcrModel[[transformers.MiniCPMOcrModel]]

```python
transformers.MiniCPMOcrModel(config: MiniCPMOcrConfig)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/modeling_minicpm_ocr.py#L593)

**参数：**

config ([MiniCPMOcrConfig](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrConfig))：模型配置类，包含模型的所有参数。通过配置文件进行初始化时，不会加载与模型关联的权重，仅加载配置。请查看 [from_pretrained()](/docs/transformers/main/zh/main_classes/model#transformers.PreTrainedModel.from_pretrained) 方法以加载模型权重。

MiniCPMOcr 模型由视觉主干网络和语言模型组成，不包含语言建模头。

该模型继承自 [PreTrainedModel](/docs/transformers/main/zh/main_classes/model#transformers.PreTrainedModel)。请查阅父类文档，了解该库为所有模型实现的通用方法（例如下载或保存、调整输入嵌入大小、剪枝头等）。

该模型也是 PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) 的子类。请将其作为常规的 PyTorch Module 使用，有关通用用法和行为的所有事项，请参阅 PyTorch 文档。

#### forward[[transformers.MiniCPMOcrModel.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, pixel_values: typing.Optional[torch.Tensor] = None, target_sizes: typing.Optional[torch.IntTensor] = None, pixel_values_videos: typing.Optional[torch.Tensor] = None, target_sizes_videos: typing.Optional[torch.IntTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: list[torch.Tensor] | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, use_cache: bool | None = None, downsample_mode: str | None = None, mm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/modeling_minicpm_ocr.py#L662)

**参数：**

input_ids (`torch.LongTensor`，形状为 `(batch_size, sequence_length)`，*可选*)：输入序列中 token 在词汇表中的索引。默认情况下，填充（padding）将被忽略。可以使用 [AutoTokenizer](/docs/transformers/main/zh/model_doc/auto#transformers.AutoTokenizer) 获取索引。有关详细信息，请参阅 [PreTrainedTokenizer.encode()](/docs/transformers/main/zh/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) 和 [PreTrainedTokenizer.__call__()](/docs/transformers/main/zh/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__)。[什么是输入 ID？](../glossary#input-ids)

pixel_values (`torch.Tensor`, *可选*) : 图像的像素值补丁，采用 NaViT 打包格式。

target_sizes (`torch.IntTensor`, *可选*) : 每张图像的高度和宽度（以 patch 为单位）。

pixel_values_videos (`torch.Tensor`, *可选*) : 视频帧的像素值补丁，采用 NaViT 打包格式。

target_sizes_videos (`torch.IntTensor`, *可选*) : 每个视频帧的高度和宽度（以 patch 为单位）。

attention_mask (`torch.Tensor`，形状为 `(batch_size, sequence_length)`，*可选*)：用于避免对填充（padding）标记索引执行注意力机制的掩码。掩码值取自 `[0, 1]`： - 1 表示**未掩码**的标记， - 0 表示**已掩码**的标记。 [什么是注意力掩码？](../glossary#attention-mask)

position_ids (`torch.LongTensor`，形状为 `(batch_size, sequence_length)`，*可选*)：输入序列中每个 token 在位置嵌入中的位置索引。取值范围为 `[0, config.n_positions - 1]`。[什么是位置 ID？](../glossary#position-ids)

past_key_values (`list[torch.Tensor]`, *可选*) : 预计算的隐藏状态（自注意力块和交叉注意力块中的键和值），可用于加速顺序解码。这通常由模型在解码的先前阶段返回的 `past_key_values` 组成，前提是 `use_cache=True` 或 `config.use_cache=True`。 仅允许 [Cache](/docs/transformers/main/zh/internal/generation_utils#transformers.Cache) 实例作为输入，请参阅我们的 [kv cache 指南](https://huggingface.co/docs/transformers/en/kv_cache)。如果未传入 `past_key_values`，则默认会初始化 [DynamicCache](/docs/transformers/main/zh/internal/generation_utils#transformers.DynamicCache)。 模型将输出与输入格式相同的缓存。 如果使用 `past_key_values`，则用户预期仅输入未处理的 `input_ids`（即未向此模型提供其过去键值状态的那些），其形状为 `(batch_size, unprocessed_length)`，而不是形状为 `(batch_size, sequence_length)` 的所有 `input_ids`。

inputs_embeds (`torch.Tensor`，形状为 `(batch_size, sequence_length, hidden_size)`，*可选*)：可选地，你可以选择直接传入嵌入表示，而不是传入 `input_ids`。如果你希望比模型内部的嵌入查找矩阵更精细地控制如何将 `input_ids` 索引转换为对应的向量，这将非常有用。

use_cache (`bool`，*可选*)：如果设置为 `True`，则会返回 `past_key_values` 键值状态，可用于加速解码（参见 `past_key_values`）。

downsample_mode (`str`, *可选*) : `"4x"` 保留 4 倍数量的视觉标记；默认值 `"16x"` 应用完全合并。

mm_encoder_outputs (`dict[str, ~modeling_outputs.BaseModelOutputWithPooling]`, *可选*) : 一个字典，其中键为支持的模态，值为该模态的编码输出。每个编码输出是一个元组，由 (`pooler_output`, *可选*: `last_hidden_states`, *可选*: `hidden_states`, *可选*: `attentions`) 组成，其中 `pooler_output` 的形状为 `(batch_size, sequence_length, hidden_size)`，*可选*)，表示编码器生成的多模态特征序列，并已融合到文本嵌入中。

**返回：** [BaseModelOutputWithPast](/docs/transformers/main/zh/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPast) 或 `tuple(torch.Tensor)`

一个 [BaseModelOutputWithPast](/docs/transformers/main/zh/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPast) 或 `torch.Tensor` 元组（如果传入了 `return_dict=False` 或 `config.return_dict=False`），其包含的元素取决于配置（[MiniCPMOcrConfig](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrConfig)）和输入。

[MiniCPMOcrModel](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrModel) 的 forward 方法重写了 `__call__` 特殊方法。

尽管前向传播的实现需要在此函数中定义，但之后应调用 `Module` 实例，而不是直接调用此函数，因为前者会负责执行预处理和后处理步骤，而后者会静默地忽略这些步骤。

- **last_hidden_state**（形状为 `(batch_size, sequence_length, hidden_size)` 的 `torch.Tensor`）-- 模型最后一层输出的隐藏状态序列。

  如果使用了 `past_key_values`，则仅输出形状为 `(batch_size, 1, hidden_size)` 的序列的最后一个隐藏状态。
- **past_key_values**（`Cache`，*可选*，在传入 `use_cache=True` 或 `config.use_cache=True` 时返回）—— 它是一个 [Cache](/docs/transformers/main/zh/internal/generation_utils#transformers.Cache) 实例。更多详情，请参阅我们的 [kv cache 指南](https://huggingface.co/docs/transformers/en/kv_cache)。

  包含预计算的隐藏状态（自注意力块中的键和值，以及如果 `config.is_encoder_decoder=True` 则还包括交叉注意力块中的键和值），可用于（参见 `past_key_values` 输入）加速顺序解码。
- **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 后的注意力权重，用于在自注意力头中计算加权平均值。

#### get_image_features[[transformers.MiniCPMOcrModel.get_image_features]]

```python
get_image_features(pixel_values: Tensor, target_sizes: IntTensor, downsample_mode: str | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/modeling_minicpm_ocr.py#L602)

**参数：**

pixel_values (`torch.Tensor`，形状为 `(batch_size, num_channels, image_size, image_size)`)：与输入图像对应的张量。可以使用 [MiniCPMOcrImageProcessor](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrImageProcessor) 获取像素值。有关详细信息，请参阅 [MiniCPMOcrImageProcessor.__call__()](/docs/transformers/main/zh/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__)（[MiniCPMOcrProcessor](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrProcessor) 使用 [MiniCPMOcrImageProcessor](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrImageProcessor) 处理图像）。

target_sizes (`torch.IntTensor`，形状为 `(num_images, 2)`)：每张图片的高度和宽度（以 patch 为单位）。

downsample_mode (`str`, *可选*) : 当设置为 `"4x"` 时，会跳过中间的 `vit_merger`，使每张图像保留 `4×` 倍的视觉标记。默认的 `"16x"` 模式会应用完整的合并流程。

**返回：** [BaseModelOutputWithPooling](/docs/transformers/main/zh/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) 或 `tuple(torch.Tensor)`

一个 [BaseModelOutputWithPooling](/docs/transformers/main/zh/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) 或 `torch.Tensor` 元组（如果传入了 `return_dict=False` 或 `config.return_dict=False`），其包含的元素取决于配置（[MiniCPMOcrConfig](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrConfig)）和输入。

提取图像特征：视觉编码器，插入合并器，然后是 MLP 合并器。

- **last_hidden_state**（形状为 `(batch_size, sequence_length, hidden_size)` 的 `torch.Tensor`）-- 模型最后一层输出的隐藏状态序列。
- **pooler_output**（形状为 `(batch_size, hidden_size)` 的 `torch.Tensor`）-- 序列中第一个 token（分类 token）的最后一层隐藏状态，经过用于辅助预训练任务的层进一步处理后的结果。例如，对于 BERT 系列模型，这返回的是分类 token 经过线性层和 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 后的注意力权重，用于在自注意力头中计算加权平均值。

#### get_video_features[[transformers.MiniCPMOcrModel.get_video_features]]

```python
get_video_features(pixel_values_videos: Tensor, target_sizes_videos: IntTensor, downsample_mode: str | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/modeling_minicpm_ocr.py#L743)

**参数：**

pixel_values_videos (`torch.Tensor`，形状为 `(1, channels, patch_size, seq_len)`)：所有视频帧的 NaViT 打包像素块。视频处理器将每一帧的像素块沿最后一个维度拼接为一个单一序列，其中 dim-0 = 1，与图像打包格式完全相同。

target_sizes_videos (`torch.IntTensor`，形状为 `(num_patches, 2)`)：每个视觉单元的高度和宽度（以 patch 为单位）。

downsample_mode (`str`, *可选*) : 当设置为 `"4x"` 时，会跳过中间的 `vit_merger`，使每帧保留 `4×` 倍的视觉 token。默认的 `"16x"` 模式会应用完整的合并流程。

**返回：** [BaseModelOutputWithPooling](/docs/transformers/main/zh/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) 或 `tuple(torch.Tensor)`

一个 [BaseModelOutputWithPooling](/docs/transformers/main/zh/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) 或 `torch.Tensor` 元组（如果传入了 `return_dict=False` 或 `config.return_dict=False`），其包含的元素取决于配置（[MiniCPMOcrConfig](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrConfig)）和输入。

提取视频特征：将帧重新打包为 NaViT 格式，然后使用视觉编码器 + 合并器。

- **last_hidden_state**（形状为 `(batch_size, sequence_length, hidden_size)` 的 `torch.Tensor`）-- 模型最后一层输出的隐藏状态序列。
- **pooler_output**（形状为 `(batch_size, hidden_size)` 的 `torch.Tensor`）-- 序列中第一个 token（分类 token）的最后一层隐藏状态，经过用于辅助预训练任务的层进一步处理后的结果。例如，对于 BERT 系列模型，这返回的是分类 token 经过线性层和 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 后的注意力权重，用于在自注意力头中计算加权平均值。

## MiniCPMOcrForConditionalGeneration[[transformers.MiniCPMOcrForConditionalGeneration]]

#### transformers.MiniCPMOcrForConditionalGeneration[[transformers.MiniCPMOcrForConditionalGeneration]]

```python
transformers.MiniCPMOcrForConditionalGeneration(config: MiniCPMOcrConfig)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/modeling_minicpm_ocr.py#L779)

**参数：**

config ([MiniCPMOcrConfig](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrConfig))：模型配置类，包含模型的所有参数。通过配置文件进行初始化时，不会加载与模型关联的权重，仅加载配置。请查看 [from_pretrained()](/docs/transformers/main/zh/main_classes/model#transformers.PreTrainedModel.from_pretrained) 方法以加载模型权重。

用于在其他模态（例如图像-文本到文本生成）条件下进行 token 生成的 Minicpm Ocr 模型。

该模型继承自 [PreTrainedModel](/docs/transformers/main/zh/main_classes/model#transformers.PreTrainedModel)。请查阅父类文档，了解该库为所有模型实现的通用方法（例如下载或保存、调整输入嵌入大小、剪枝头等）。

该模型也是 PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) 的子类。请将其作为常规的 PyTorch Module 使用，有关通用用法和行为的所有事项，请参阅 PyTorch 文档。

#### forward[[transformers.MiniCPMOcrForConditionalGeneration.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, pixel_values: typing.Optional[torch.Tensor] = None, target_sizes: typing.Optional[torch.IntTensor] = None, pixel_values_videos: typing.Optional[torch.Tensor] = None, target_sizes_videos: typing.Optional[torch.IntTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: list[torch.Tensor] | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, use_cache: bool | None = None, downsample_mode: str | None = None, mm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/modeling_minicpm_ocr.py#L790)

**参数：**

input_ids (`torch.LongTensor`，形状为 `(batch_size, sequence_length)`，*可选*)：输入序列中 token 在词汇表中的索引。默认情况下，填充（padding）将被忽略。可以使用 [AutoTokenizer](/docs/transformers/main/zh/model_doc/auto#transformers.AutoTokenizer) 获取索引。有关详细信息，请参阅 [PreTrainedTokenizer.encode()](/docs/transformers/main/zh/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) 和 [PreTrainedTokenizer.__call__()](/docs/transformers/main/zh/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__)。[什么是输入 ID？](../glossary#input-ids)

pixel_values (`torch.Tensor`, *可选*) : 图像的像素值补丁，采用 NaViT 打包格式。

target_sizes (`torch.IntTensor`, *可选*) : 每张图像的高度和宽度（以 patch 为单位）。

pixel_values_videos (`torch.Tensor`, *可选*) : 视频帧的像素值补丁，采用 NaViT 打包格式。

target_sizes_videos (`torch.IntTensor`, *可选*) : 每个视频帧的高度和宽度（以 patch 为单位）。

attention_mask (`torch.Tensor`，形状为 `(batch_size, sequence_length)`，*可选*)：用于避免对填充（padding）标记索引执行注意力机制的掩码。掩码值取自 `[0, 1]`： - 1 表示**未掩码**的标记， - 0 表示**已掩码**的标记。 [什么是注意力掩码？](../glossary#attention-mask)

position_ids (`torch.LongTensor`，形状为 `(batch_size, sequence_length)`，*可选*)：输入序列中每个 token 在位置嵌入中的位置索引。取值范围为 `[0, config.n_positions - 1]`。[什么是位置 ID？](../glossary#position-ids)

past_key_values (`list[torch.Tensor]`, *可选*) : 预计算的隐藏状态（自注意力块和交叉注意力块中的键和值），可用于加速顺序解码。这通常由模型在解码的先前阶段返回的 `past_key_values` 组成，前提是 `use_cache=True` 或 `config.use_cache=True`。 仅允许 [Cache](/docs/transformers/main/zh/internal/generation_utils#transformers.Cache) 实例作为输入，请参阅我们的 [kv cache 指南](https://huggingface.co/docs/transformers/en/kv_cache)。如果未传入 `past_key_values`，则默认会初始化 [DynamicCache](/docs/transformers/main/zh/internal/generation_utils#transformers.DynamicCache)。 模型将输出与输入格式相同的缓存。 如果使用 `past_key_values`，则用户预期仅输入未处理的 `input_ids`（即未向此模型提供其过去键值状态的那些），其形状为 `(batch_size, unprocessed_length)`，而不是形状为 `(batch_size, sequence_length)` 的所有 `input_ids`。

inputs_embeds (`torch.Tensor`，形状为 `(batch_size, sequence_length, hidden_size)`，*可选*)：可选地，你可以选择直接传入嵌入表示，而不是传入 `input_ids`。如果你希望比模型内部的嵌入查找矩阵更精细地控制如何将 `input_ids` 索引转换为对应的向量，这将非常有用。

labels (`torch.LongTensor`，形状为 `(batch_size, sequence_length)`，*可选*)：用于计算掩码语言建模损失的标签。索引值应在 `[0, ..., config.vocab_size]` 范围内，或为 -100（参见 `input_ids` 的文档字符串）。索引值设为 `-100` 的 token 将被忽略（即被掩码），损失仅针对标签在 `[0, ..., config.vocab_size]` 范围内的 token 进行计算。

use_cache (`bool`，*可选*)：如果设置为 `True`，则会返回 `past_key_values` 键值状态，可用于加速解码（参见 `past_key_values`）。

downsample_mode (`str`, *可选*) : `"4x"` 保留 4 倍数量的视觉标记；默认值 `"16x"` 应用完全合并。

mm_encoder_outputs (`dict[str, ~modeling_outputs.BaseModelOutputWithPooling]`, *可选*) : 一个字典，其中键为支持的模态，值为该模态的编码输出。每个编码输出是一个元组，由 (`pooler_output`, *可选*: `last_hidden_states`, *可选*: `hidden_states`, *可选*: `attentions`) 组成，其中 `pooler_output` 的形状为 `(batch_size, sequence_length, hidden_size)`，*可选*)，表示编码器生成的多模态特征序列，并已融合到文本嵌入中。

**返回：** [CausalLMOutputWithPast](/docs/transformers/main/zh/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) 或 `tuple(torch.Tensor)`

一个 [CausalLMOutputWithPast](/docs/transformers/main/zh/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) 或 `torch.Tensor` 元组（如果传入了 `return_dict=False` 或 `config.return_dict=False`），其包含的元素取决于配置（[MiniCPMOcrConfig](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrConfig)）和输入。

[MiniCPMOcrForConditionalGeneration](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrForConditionalGeneration) 的 forward 方法重写了 `__call__` 特殊方法。

尽管前向传播的实现需要在此函数中定义，但之后应调用 `Module` 实例，而不是直接调用此函数，因为前者会负责执行预处理和后处理步骤，而后者会静默地忽略这些步骤。

- **loss** (`torch.Tensor`，形状为 `(1,)`，*可选*，当提供 `labels` 时返回) -- 语言建模损失（用于下一个 token 预测）。
- **logits**（形状为 `(batch_size, sequence_length, config.vocab_size)` 的 `torch.Tensor`）-- 语言建模头的预测分数（SoftMax 之前每个词汇表 token 的分数）。
- **past_key_values**（`Cache`，*可选*，在传入 `use_cache=True` 或 `config.use_cache=True` 时返回）—— 它是一个 [Cache](/docs/transformers/main/zh/internal/generation_utils#transformers.Cache) 实例。更多详情，请参阅我们的 [kv cache 指南](https://huggingface.co/docs/transformers/en/kv_cache)。

  包含预计算的隐藏状态（自注意力块中的键和值），可用于（参见 `past_key_values` 输入）加速顺序解码。
- **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 PIL import Image
>>> from transformers import AutoProcessor, MiniCPMOcrForConditionalGeneration

>>> model = MiniCPMOcrForConditionalGeneration.from_pretrained("openbmb/MiniCPM-OCR-1.0")
>>> processor = AutoProcessor.from_pretrained("openbmb/MiniCPM-OCR-1.0")

>>> messages = [
...     {
...         "role": "user", "content": [
...             {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
...             {"type": "text", "text": "Where is the cat standing?"},
...         ]
...     },
... ]

>>> inputs = processor.apply_chat_template(
...     messages,
...     tokenize=True,
...     return_dict=True,
...     return_tensors="pt",
...     add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True)[0]
```

#### get_image_features[[transformers.MiniCPMOcrForConditionalGeneration.get_image_features]]

```python
get_image_features(*args, **kwargs)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/modeling_minicpm_ocr.py#L854)

**返回：** [BaseModelOutputWithPooling](/docs/transformers/main/zh/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) 或 `tuple(torch.Tensor)`

一个 [BaseModelOutputWithPooling](/docs/transformers/main/zh/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) 或 `torch.Tensor` 元组（如果传入了 `return_dict=False` 或 `config.return_dict=False`），其包含的元素取决于配置（[MiniCPMOcrConfig](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrConfig)）和输入。

提取图像特征：视觉编码器，插入合并器，然后是 MLP 合并器。

- **last_hidden_state**（形状为 `(batch_size, sequence_length, hidden_size)` 的 `torch.Tensor`）-- 模型最后一层输出的隐藏状态序列。
- **pooler_output**（形状为 `(batch_size, hidden_size)` 的 `torch.Tensor`）-- 序列中第一个 token（分类 token）的最后一层隐藏状态，经过用于辅助预训练任务的层进一步处理后的结果。例如，对于 BERT 系列模型，这返回的是分类 token 经过线性层和 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 PIL import Image
>>> from transformers import AutoProcessor, MiniCPMOcrForConditionalGeneration

>>> model = MiniCPMOcrForConditionalGeneration.from_pretrained("openbmb/MiniCPM-OCR-1.0")
>>> processor = AutoProcessor.from_pretrained("openbmb/MiniCPM-OCR-1.0")

>>> messages = [
...     {
...         "role": "user", "content": [
...             {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
...             {"type": "text", "text": "Where is the cat standing?"},
...         ]
...     },
... ]

>>> inputs = processor.apply_chat_template(
...     messages,
...     tokenize=True,
...     return_dict=True,
...     return_tensors="pt",
...     add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True)[0]
```

#### get_video_features[[transformers.MiniCPMOcrForConditionalGeneration.get_video_features]]

```python
get_video_features(*args, **kwargs)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/modeling_minicpm_ocr.py#L858)

**返回：** [BaseModelOutputWithPooling](/docs/transformers/main/zh/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) 或 `tuple(torch.Tensor)`

一个 [BaseModelOutputWithPooling](/docs/transformers/main/zh/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) 或 `torch.Tensor` 元组（如果传入了 `return_dict=False` 或 `config.return_dict=False`），其包含的元素取决于配置（[MiniCPMOcrConfig](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrConfig)）和输入。

提取视频特征：将帧重新打包为 NaViT 格式，然后使用视觉编码器 + 合并器。

- **last_hidden_state**（形状为 `(batch_size, sequence_length, hidden_size)` 的 `torch.Tensor`）-- 模型最后一层输出的隐藏状态序列。
- **pooler_output**（形状为 `(batch_size, hidden_size)` 的 `torch.Tensor`）-- 序列中第一个 token（分类 token）的最后一层隐藏状态，经过用于辅助预训练任务的层进一步处理后的结果。例如，对于 BERT 系列模型，这返回的是分类 token 经过线性层和 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 PIL import Image
>>> from transformers import AutoProcessor, MiniCPMOcrForConditionalGeneration

>>> model = MiniCPMOcrForConditionalGeneration.from_pretrained("openbmb/MiniCPM-OCR-1.0")
>>> processor = AutoProcessor.from_pretrained("openbmb/MiniCPM-OCR-1.0")

>>> messages = [
...     {
...         "role": "user", "content": [
...             {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
...             {"type": "text", "text": "Where is the cat standing?"},
...         ]
...     },
... ]

>>> inputs = processor.apply_chat_template(
...     messages,
...     tokenize=True,
...     return_dict=True,
...     return_tensors="pt",
...     add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True)[0]
```

## MiniCPMOcrProcessor[[transformers.MiniCPMOcrProcessor]]

#### transformers.MiniCPMOcrProcessor[[transformers.MiniCPMOcrProcessor]]

```python
transformers.MiniCPMOcrProcessor(image_processor = None, video_processor = None, tokenizer = None, chat_template = None, **kwargs)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/processing_minicpm_ocr.py#L47)

**参数：**

image_processor (`MiniCPMOcrImageProcessor`)：图像处理器是必需的输入。

video_processor (`MiniCPMOcrVideoProcessor`)：视频处理器是必需的输入。

tokenizer (`TokenizersBackend`)：分词器是必需的输入。

chat_template (`str`) : 一个 Jinja 模板，用于将聊天中的消息列表转换为可分词的字符串。

构建一个 MiniCPMOcrProcessor，它将图像处理器、视频处理器和分词器封装为单一处理器。

[MiniCPMOcrProcessor](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrProcessor) 提供了 [MiniCPMOcrImageProcessor](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrImageProcessor)、[MiniCPMOcrVideoProcessor](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrVideoProcessor) 和 [TokenizersBackend](/docs/transformers/main/zh/main_classes/tokenizer#transformers.TokenizersBackend) 的全部功能。有关更多信息，请参阅 [~MiniCPMOcrImageProcessor](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrImageProcessor)、[~MiniCPMOcrVideoProcessor](/docs/transformers/main/zh/model_doc/minicpm_ocr#transformers.MiniCPMOcrVideoProcessor) 和 [~TokenizersBackend](/docs/transformers/main/zh/main_classes/tokenizer#transformers.TokenizersBackend)。

#### __调用__[[transformers.MiniCPMOcrProcessor.__call__]]

```python
__call__(images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None, text: str | list[str] | list[list[str]] | None = None, videos: typing.Union[list['PIL.Image.Image'], numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], list[list['PIL.Image.Image']], list[list[numpy.ndarray]], list[list['torch.Tensor']], transformers.video_utils.URL, list[transformers.video_utils.URL], list[list[transformers.video_utils.URL]], transformers.video_utils.Path, list[transformers.video_utils.Path], list[list[transformers.video_utils.Path]], NoneType] = None, **kwargs: *<class 'transformers.processing_utils.ProcessingKwargs'>)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/processing_minicpm_ocr.py#L70)

**参数：**

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

text (`Union[str, list[str], list[list[str]]]`，*可选*)：要编码的序列或序列批次。每个序列可以是字符串或字符串列表（预分词字符串）。如果传入预分词输入，请设置 `is_split_into_words=True` 以避免与批量输入产生歧义。

videos (`Union[list[PIL.Image.Image], numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor], list[list[PIL.Image.Image]], list[list[numpy.ndarray]], list[list[torch.Tensor]], ~video_utils.URL, list[~video_utils.URL], list[list[~video_utils.URL]], ~video_utils.Path, list[~video_utils.Path], list[list[~video_utils.Path]]]`，*可选*)：要预处理的视频。期望输入单个视频或一批视频，其像素值范围为 0 到 255。如果传入的像素值在 0 到 1 之间，请设置 `do_rescale=False`。

return_tensors (`str` 或 [TensorType](/docs/transformers/main/zh/internal/file_utils#transformers.TensorType)，*可选*)：如果设置，将返回特定框架的张量。可接受的值为： - `'pt'`：返回 PyTorch `torch.Tensor` 对象。 - `'np'`：返回 NumPy `np.ndarray` 对象。

- ****kwargs** ([ProcessingKwargs](/docs/transformers/main/zh/main_classes/processors#transformers.ProcessingKwargs), *可选*) : 针对每种模态（文本、图像、视频、音频）的额外处理选项。模型特定参数已在上方列出；有关支持参数的完整列表，请参阅 TypedDict 类。

## MiniCPMOcrImageProcessor[[transformers.MiniCPMOcrImageProcessor]]

#### transformers.MiniCPMOcrImageProcessor[[transformers.MiniCPMOcrImageProcessor]]

```python
transformers.MiniCPMOcrImageProcessor(**kwargs: *<class 'transformers.models.minicpm_ocr.image_processing_minicpm_ocr.MiniCPMOcrImageProcessorKwargs'>)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/image_processing_minicpm_ocr.py#L139)

**参数：**

do_convert_rgb (*bool*, *kwargs*, *optional*, 默认为 *True*) : 是否将图像转换为 RGB。

do_resize (*bool*, *kwargs*, *optional*, 默认为 *True*) : 是否调整图像大小。

size (*Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]*, *kwargs*)：描述模型的最大输入维度。

default_to_square (*bool*, *kwargs*, *optional*，默认为 *True*) : 当 size 为 int 时，是否在调整大小时默认使用正方形图像。

crop_size (*Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]*, *kwargs*) : 应用 *center_crop* 后输出图像的尺寸。

resample (*Annotated[Union[int, PILImageResampling, NoneType], None]*, *kwargs*，默认为 *3*) : 如果调整图像大小，则使用的重采样滤波器。它可以是枚举 *PILImageResampling* 中的一个值。仅当 *do_resize* 设置为 *True* 时才会生效。

do_rescale (*bool*, *kwargs*, *optional*, 默认为 *True*) : 是否对图像进行重新缩放。

rescale_factor (*float*, *kwargs*, *optional*, 默认为 *0.00392156862745098*) : 当 *do_rescale* 设置为 *True* 时，用于对图像进行缩放的缩放因子。

do_normalize (*bool*, *kwargs*, *optional*, 默认为 *True*) : 是否对图像进行归一化。

image_mean (*Union[float, list[float], tuple[float, ...]]*, *kwargs*, *可选*，默认为 *[0.5, 0.5, 0.5]*) : 用于归一化的图像均值。仅当 *do_normalize* 设置为 *True* 时生效。

image_std (*Union[float, list[float], tuple[float, ...]]*, *kwargs*, *可选*，默认为 *[0.5, 0.5, 0.5]*) : 用于归一化的图像标准差。仅当 *do_normalize* 设置为 *True* 时生效。

do_pad (*bool*, *kwargs*, *optional*) : 是否对图像进行填充。填充操作会将图像填充至批次中的最大尺寸，或填充至每张图像的固定正方形尺寸。具体的填充策略取决于模型。

pad_size (*Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]*, *kwargs*) : 将图像填充到的尺寸，格式为 *&amp;lcub;"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*, *optional*) : 是否禁用按尺寸对图像进行分组，从而逐个处理图像而非批量处理。如果为 None，则当图像位于 CPU 上时设置为 True，否则设置为 False。此选择基于经验观察，详情见此处：https://github.com/huggingface/transformers/pull/38157

image_seq_length (*int*, *kwargs*, *optional*) : 输入中每张图片所使用的图像 token 数量。为向后兼容而添加，但在未来的模型中，应将其设置为处理器的属性。

max_slice_nums (*int*, *kwargs*, *optional*, 默认为 9) : 分割高分辨率图像时的最大切片数。

scale_resolution (*int*, *kwargs*, *optional*，默认为 448)：单个切片的分辨率。

patch_size (*int*, *kwargs*, *optional*, 默认值为 14) : 视觉编码器的空间补丁大小。

slice_mode (*bool*, *kwargs*, *optional*, 默认为 *True*) : 是否将图像分割为多个切片以提高分辨率。

downsample_mode (*str*, *kwargs*, *optional*，默认为 *"4x"*)：视觉 token 下采样模式。*"4x"* 保留的 token 数量是 *"16x"* 的 4 倍，后者应用完整的合并。支持在每次调用时覆盖该设置。

use_image_id (*bool*, *kwargs*, *optional*，默认为 *True*) : 是否在每个图像占位符前添加图像 ID 标签（`<image_id>N</image_id>`）。该参数由 Processor 用于生成占位符，而非由图像处理流水线本身使用。

small_image_upsize (*str*, *kwargs*, *optional*，默认为 *"always"*)：指定如何调整尺寸不超过 *scale_resolution* 平方的图像和切片。*"always"* 会将它们上采样至 *scale_resolution*，*"never"* 会保持其原生分辨率并对齐到 patch 网格，而 *"adaptive"* 会根据字形大小和密度为每张图像和每个切片进行选择（需要 OpenCV，参见 [*adaptive_upsize_resolution*]）。

构建一个 MiniCPMOcrImageProcessor 图像处理器。

#### preprocess[[transformers.MiniCPMOcrImageProcessor.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.minicpm_ocr.image_processing_minicpm_ocr.MiniCPMOcrImageProcessorKwargs'>)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/image_processing_minicpm_ocr.py#L246)

**参数：**

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*, *optional*) : 是否调整图像大小。

size (*Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]*, *kwargs*)：描述模型的最大输入维度。

default_to_square (*bool*, *kwargs*, *可选*) : 当 size 为整数时，是否在调整大小时默认使用正方形图像。

crop_size (*Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]*, *kwargs*) : 应用 *center_crop* 后输出图像的尺寸。

resample (*Annotated[Union[int, PILImageResampling, NoneType], None]*, *kwargs*) : 如果调整图像大小，则使用的重采样滤波器。可以是枚举 *PILImageResampling* 中的一个值。仅当 *do_resize* 设置为 *True* 时生效。

do_rescale (*bool*, *kwargs*, *optional*) : 是否对图像进行重新缩放。

rescale_factor (*float*, *kwargs*, *optional*) : 如果 *do_rescale* 设置为 *True*，则用于对图像进行重新缩放的缩放因子。

do_normalize (*bool*, *kwargs*, *optional*) : 是否对图像进行归一化。

image_mean (*Union[float, list[float], tuple[float, ...]]*, *kwargs*, *optional*) : 用于归一化的图像均值。仅当 *do_normalize* 设置为 *True* 时生效。

image_std (*Union[float, list[float], tuple[float, ...]]*, *kwargs*, *optional*) : 用于归一化的图像标准差。仅当 *do_normalize* 设置为 *True* 时生效。

do_pad (*bool*, *kwargs*, *optional*) : 是否对图像进行填充。填充操作会将图像填充至批次中的最大尺寸，或填充至每张图像的固定正方形尺寸。具体的填充策略取决于模型。

pad_size (*Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]*, *kwargs*) : 将图像填充到的尺寸，格式为 *&amp;lcub;"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*, *optional*) : 是否禁用按尺寸对图像进行分组，从而逐个处理图像而非批量处理。如果为 None，则当图像位于 CPU 上时设置为 True，否则设置为 False。此选择基于经验观察，详情见此处：https://github.com/huggingface/transformers/pull/38157

image_seq_length (*int*, *kwargs*, *optional*) : 输入中每张图片所使用的图像 token 数量。为向后兼容而添加，但在未来的模型中，应将其设置为处理器的属性。

max_slice_nums (*int*, *kwargs*, *optional*, 默认为 9) : 分割高分辨率图像时的最大切片数。

scale_resolution (*int*, *kwargs*, *optional*，默认为 448)：单个切片的分辨率。

patch_size (*int*, *kwargs*, *optional*, 默认值为 14) : 视觉编码器的空间补丁大小。

slice_mode (*bool*, *kwargs*, *optional*, 默认为 *True*) : 是否将图像分割为多个切片以提高分辨率。

downsample_mode (*str*, *kwargs*, *optional*，默认为 *"4x"*)：视觉 token 下采样模式。*"4x"* 保留的 token 数量是 *"16x"* 的 4 倍，后者应用完整的合并。支持在每次调用时覆盖该设置。

use_image_id (*bool*, *kwargs*, *optional*，默认为 *True*) : 是否在每个图像占位符前添加图像 ID 标签（`<image_id>N</image_id>`）。该参数由 Processor 用于生成占位符，而非由图像处理流水线本身使用。

small_image_upsize (*str*, *kwargs*, *optional*，默认为 *"always"*)：指定如何调整尺寸不超过 *scale_resolution* 平方的图像和切片。*"always"* 会将它们上采样至 *scale_resolution*，*"never"* 会保持其原生分辨率并对齐到 patch 网格，而 *"adaptive"* 会根据字形大小和密度为每张图像和每个切片进行选择（需要 OpenCV，参见 [*adaptive_upsize_resolution*]）。

**返回：** `*~feature_extraction_utils.BatchFeature*`

- **data** (*dict*, *optional*) -- 由 __call__/pad 方法返回的列表/数组/张量字典（'input_values'、'attention_mask' 等）。
- **tensor_type** (*Union[None, str, TensorType]*, *可选*) -- 您可以在此处指定 tensor_type，以便在初始化时将 PyTorch/Numpy 张量中的整数列表进行转换。
- **skip_tensor_conversion** (*list[str]* 或 *set[str]*，*可选*) -- 不应转换为张量的键的列表或集合，即使指定了 *tensor_type*。

## MiniCPMOcrVideoProcessor[[transformers.MiniCPMOcrVideoProcessor]]

#### transformers.MiniCPMOcrVideoProcessor[[transformers.MiniCPMOcrVideoProcessor]]

```python
transformers.MiniCPMOcrVideoProcessor(**kwargs: *<class 'transformers.models.minicpm_ocr.video_processing_minicpm_ocr.MiniCPMOcrVideoProcessorKwargs'>)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/video_processing_minicpm_ocr.py#L77)

**参数：**

do_convert_rgb (*bool*, *kwargs*, *optional*, 默认为 *True*) : 是否将图像转换为 RGB。

do_resize (*bool*, *kwargs*, *optional*, 默认为 *True*) : 是否调整图像大小。

size (*Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]*, *kwargs*)：描述模型的最大输入维度。

default_to_square (*bool*, *kwargs*, *optional*，默认为 *True*) : 当 size 为 int 时，是否在调整大小时默认使用正方形图像。

resample (*Annotated[Union[int, PILImageResampling, NoneType], None]*, *kwargs*，默认为 *3*) : 如果调整图像大小，则使用的重采样滤波器。它可以是枚举 *PILImageResampling* 中的一个值。仅当 *do_resize* 设置为 *True* 时才会生效。

do_rescale (*bool*, *kwargs*, *optional*, 默认为 *True*) : 是否对图像进行重新缩放。

rescale_factor (*float*, *kwargs*, *optional*, 默认为 *0.00392156862745098*) : 当 *do_rescale* 设置为 *True* 时，用于对图像进行缩放的缩放因子。

do_normalize (*bool*, *kwargs*, *optional*, 默认为 *True*) : 是否对图像进行归一化。

image_mean (*Union[float, list[float], tuple[float, ...]]*, *kwargs*, *可选*，默认为 *[0.5, 0.5, 0.5]*) : 用于归一化的图像均值。仅当 *do_normalize* 设置为 *True* 时生效。

image_std (*Union[float, list[float], tuple[float, ...]]*, *kwargs*, *可选*，默认为 *[0.5, 0.5, 0.5]*) : 用于归一化的图像标准差。仅当 *do_normalize* 设置为 *True* 时生效。

do_center_crop (*bool*, *kwargs*, *可选*) : 是否对图像进行居中裁剪。

do_pad (*bool*, *kwargs*, *optional*) : 是否对图像进行填充。填充操作会将图像填充至批次中的最大尺寸，或填充至每张图像的固定正方形尺寸。具体的填充策略取决于模型。

crop_size (*Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]*, *kwargs*) : 应用 *center_crop* 后输出图像的尺寸。

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*)：用于处理视频的设备。如果未设置，则从输入视频中推断设备。

do_sample_frames (*bool*, *kwargs*, *optional*，默认为 *True*)：是否在处理前从视频中采样帧，还是处理整个视频。

video_metadata (*Annotated[~video_utils.VideoMetadata | dict | list[dict | ~video_utils.VideoMetadata] | list[list[dict | ~video_utils.VideoMetadata]] | None, None]*, *kwargs*) : 视频的元数据，包含总时长、帧率（fps）和总帧数等信息。该参数用于从视频中采样帧或计算时间戳。除非您打算在预处理之前手动解码视频，否则请勿传入任何元数据。

fps (*Annotated[int | float | None, None]*, *kwargs*) : 当 *do_sample_frames=True* 时，每秒采样的目标帧数。

num_frames (*Annotated[int | None, None]*, *kwargs*) : 当 *do_sample_frames=True* 时，采样的最大帧数。

return_metadata (*bool*, *kwargs*, *optional*，默认为 *False*) : 是否返回视频元数据。视频元数据是一个包含视频时长、帧率、解码后端等信息的对象。

return_tensors (*Annotated[str | ~utils.generic.TensorType | None, None]*, *kwargs*) : 如果设置，将返回特定框架的张量。可接受的值为： - *'pt'*：返回 PyTorch *torch.Tensor* 对象。 - *'np'*：返回 NumPy *np.ndarray* 对象。

max_num_frames (*int*, *kwargs*, *optional*，默认为 128)：每个视频采样的主帧最大数量。

stack_frames (*int*, *kwargs*, *optional*，默认为 1) : 每秒堆叠的子帧数。`1` 表示禁用堆叠。

max_slice_nums (*int*, *kwargs*, *optional*, 默认为 9) : 分割高分辨率图像时的最大切片数。

scale_resolution (*int*, *kwargs*, *optional*，默认为 448)：单个切片的分辨率。

patch_size (*int*, *kwargs*, *optional*, 默认值为 14) : 视觉编码器的空间补丁大小。

slice_mode (*bool*, *kwargs*, *optional*, 默认为 *True*) : 是否将图像分割为多个切片以提高分辨率。

downsample_mode (*str*, *kwargs*, *optional*, 默认为 *"4x"*)：视觉 token 下采样模式。*"4x"* 保留的 token 数量是 *"16x"* 的 4 倍，后者应用完整的合并。

use_image_id (*bool*, *kwargs*, *optional*，默认为 *True*) : 是否在每个图像占位符前添加图像 ID 标签（`<image_id>N</image_id>`）。该参数由 Processor 用于生成占位符，而非由图像处理流水线本身使用。

- ****kwargs** ([*ProcessingKwargs*]，*可选*)：每种模态（文本、图像、视频、音频）的额外处理选项。模型特定参数已在上方列出；有关支持参数的完整列表，请参阅 TypedDict 类。

构建一个 MiniCPMOcrVideoProcessor 视频处理器。

#### preprocess[[transformers.MiniCPMOcrVideoProcessor.preprocess]]

```python
preprocess(videos: typing.Union[list['PIL.Image.Image'], numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], list[list['PIL.Image.Image']], list[list[numpy.ndarray]], list[list['torch.Tensor']], transformers.video_utils.URL, list[transformers.video_utils.URL], list[list[transformers.video_utils.URL]], transformers.video_utils.Path, list[transformers.video_utils.Path], list[list[transformers.video_utils.Path]]], **kwargs: *<class 'transformers.processing_utils.VideosKwargs'>)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/minicpm_ocr/video_processing_minicpm_ocr.py#L292)

**参数：**

videos (`Union[list[PIL.Image.Image], numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor], list[list[PIL.Image.Image]], list[list[numpy.ndarray]], list[list[torch.Tensor]], ~video_utils.URL, list[~video_utils.URL], list[list[~video_utils.URL]], ~video_utils.Path, list[~video_utils.Path], list[list[~video_utils.Path]]]`) : 待预处理的视频。期望输入单个视频或一批视频，其像素值范围为 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*, *可选*) : 当 size 为 int 时，是否在调整大小时默认使用正方形图像。

resample (`Annotated[Union[int, PILImageResampling, NoneType], None]`, *kwargs*) : 如果调整图像大小，则使用的重采样滤波器。它可以是枚举 `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_center_crop (`bool`, *kwargs*, *可选*) : 是否对图像进行居中裁剪。

do_pad (`bool`, *kwargs*, *可选*) : 是否对图像进行填充。填充操作会将图像填充至批次中的最大尺寸，或填充至每张图像的固定正方形尺寸。具体的填充策略取决于模型。

crop_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : 应用 `center_crop` 后输出图像的尺寸。

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*)：用于处理视频的设备。如果未设置，则从输入视频中推断设备。

do_sample_frames (`bool`, *kwargs*, *可选*) : 是否在处理前从视频中采样帧，还是处理整个视频。

video_metadata (`Annotated[~video_utils.VideoMetadata | dict | list[dict | ~video_utils.VideoMetadata] | list[list[dict | ~video_utils.VideoMetadata]] | None, None]`, *kwargs*) : 视频的元数据，包含总时长、帧率（fps）和总帧数等信息。该元数据将用于从视频中采样帧或计算时间戳。除非您打算在预处理之前手动解码视频，否则请勿传入任何元数据。

fps (`Annotated[int | float | None, None]`, *kwargs*) : 当 `do_sample_frames=True` 时，每秒采样的目标帧数。

num_frames (`Annotated[int | None, None]`, *kwargs*) : 当 `do_sample_frames=True` 时，要采样的最大帧数。

return_metadata (`bool`, *kwargs*, *可选*) : 是否返回视频元数据。视频元数据是一个包含视频时长、帧率、解码后端等信息的对象。

return_tensors (`Annotated[str | ~utils.generic.TensorType | None, None]`, *kwargs*) : 如果设置为 `'pt'`，则返回堆叠的张量，否则返回张量列表。

**返回：** `~feature_extraction_utils.BatchFeature`

- **data** (`dict`, *可选*) -- 由 __call__/pad 方法返回的列表/数组/张量字典（'input_values'、'attention_mask' 等）。
- **tensor_type** (`Union[None, str, TensorType]`，*可选*) -- 您可以在此处指定 tensor_type，以便在初始化时将 PyTorch/Numpy 张量中的整数列表进行转换。
- **skip_tensor_conversion** (`list[str]` 或 `set[str]`，*可选*) -- 即使指定了 `tensor_type`，也不应转换为张量的键的列表或集合。

