Transformers documentation

SLANeXt

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

该模型于 2026-03-21 贡献至 Hugging Face Transformers。

SLANeXt

概述

SLANeXt_wired 和 SLANeXt_wireless 是一系列专为表格结构识别设计的轻量级模型,专注于准确识别文档和自然场景中的表格结构。有关 SLANeXt 系列模型的更多详细信息,请参阅官方文档。

模型架构

SLANeXt 系列是由百度 PaddlePaddle 视觉团队自主研发的新一代表格结构识别模型。SLANeXt 专注于表格结构识别,并分别为有线表格和无线表格训练了专用权重。其对各类表格的识别能力均得到显著提升,尤其针对有线表格。

用法

单输入推理

以下示例演示了如何使用 AutoModel 通过 PP-OCRV5_Mobile_Det 检测文本。

AutoModel
import requests
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForTableRecognition


model_path="PaddlePaddle/SLANeXt_wired_safetensors"
model = AutoModelForTableRecognition.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_table_recognition.jpg", stream=True).raw)
inputs = image_processor(images=image, return_tensors="pt").to(model.device)
outputs = model(**inputs)

results = image_processor.post_process_table_recognition(outputs)

print(result['structure'])
print(result['structure_score'])

SLANeXtConfig

class transformers.SLANeXtConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevision_config: dict | transformers.models.slanext.configuration_slanext.SLANeXtVisionConfig | None = Nonepost_conv_in_channels: int = 256post_conv_out_channels: int = 512out_channels: int = 50hidden_size: int = 512max_text_length: int = 500 )

参数

  • vision_config (dict 或 SLANeXtVisionConfig,可选) — 视觉编码器的配置。如果为 None,则使用默认的 SLANeXtVisionConfig。
  • post_conv_in_channels (int,可选,默认为 256) — 编码器后卷积层的输入通道数。
  • post_conv_out_channels (int,可选,默认为 512) — 编码器后卷积层的输出通道数。
  • out_channels (int,可选,默认为 50) — 表格结构 token 预测头的词表大小,即模型可预测的不同结构 token 的数量。
  • hidden_size (int,可选,默认为 512) — 注意力 GRU 单元以及结构/位置预测头中隐藏状态的维度。
  • max_text_length (int,可选,默认值为 500) — 结构和位置解码器自回归解码步骤(token)的最大数量。

这是用于存储 SlanextModel 配置的类。它根据指定的参数实例化 Slanext 模型,并定义模型架构。使用默认值实例化配置,将得到与 PaddlePaddle/SLANeXt_wired_safetensors 类似的配置。

配置对象继承自 PreTrainedConfig,可用于控制模型输出。有关更多信息,请参阅 PreTrainedConfig 的文档。

SLANeXtVisionConfig

类 transformers.SLANeXtVisionConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 768output_channels: int = 256num_hidden_layers: int = 12num_attention_heads: int = 12num_channels: int = 3image_size: int = 512patch_size: int | list[int] | tuple[int, int] = 16hidden_act: str = 'gelu'layer_norm_eps: float = 1e-06attention_dropout: float | int = 0.0initializer_range: float = 1e-10qkv_bias: bool = Trueuse_abs_pos: bool = Trueuse_rel_pos: bool = Truewindow_size: int = 14global_attn_indexes: list[int] | tuple[int, ...] = (2, 5, 8, 11)mlp_dim: int = 3072 )

参数

  • hidden_size (int,可选,默认为 768) — 隐藏表示的维度。
  • output_channels (int, 可选,默认为 256) — Patch Encoder 中输出通道的维度。
  • num_hidden_layers (int, 可选, 默认为 12) — Transformer 解码器中的隐藏层数量。
  • num_attention_heads (int,可选,默认为 12) — Transformer 解码器中每个注意力层的注意力头数量。
  • num_channels (int,可选,默认为 3) — 输入通道的数量。
  • image_size (int,可选,默认为 512) — 每张图片的尺寸(分辨率)。
  • patch_size (Union[int, list[int], tuple[int, int]],可选,默认为 16) — 每个 patch 的大小(分辨率)。
  • hidden_act (str,可选,默认为 gelu) — 解码器中的非线性激活函数(函数或字符串)。例如,"gelu"、 "relu"、"silu" 等。
  • layer_norm_eps (float,可选,默认为 1e-06) — 层归一化层所使用的 epsilon 值。
  • attention_dropout (Union[float, int],可选,默认为 0.0) — 注意力概率的 dropout 比率。
  • initializer_range (float,可选,默认为 1e-10) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • qkv_bias (bool,可选,默认为 True) — 是否向查询、键和值添加偏置。
  • use_abs_pos (bool,可选,默认为 True) — 是否使用绝对位置嵌入。
  • use_rel_pos (bool,可选,默认为 True) — 是否使用相对位置嵌入。
  • window_size (int,可选,默认为 14) — 相对位置的窗口大小。
  • global_attn_indexes (list[int],可选,默认为 [2, 5, 8, 11]) — 全局注意力层的索引。
  • mlp_dim (int,可选,默认值为 3072) — Transformer 编码器中 MLP 层的维度。

这是用于存储 SlanextModel 配置的类。它根据指定的参数实例化 Slanext 模型,并定义模型架构。使用默认值实例化配置将得到与 PaddlePaddle/SLANeXt_wired_safetensors 类似的配置。

配置对象继承自 PreTrainedConfig,可用于控制模型输出。有关更多信息,请参阅 PreTrainedConfig 的文档。

SLANeXtForTableRecognition

class transformers.SLANeXtForTableRecognition

< >

( config: SLANeXtConfig )

参数

  • config (SLANeXtConfig) — 模型的配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

用于表格识别任务的 SLANeXt 表格识别模型。封装了核心的 SLANeXtPreTrainedModel,并返回与 Transformers 表格识别 API 兼容的输出。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( pixel_values: FloatTensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SLANeXtForTableRecognitionOutput or tuple(torch.FloatTensor)

参数

返回值

SLANeXtForTableRecognitionOutput 或 tuple(torch.FloatTensor)

SLANeXtForTableRecognitionOutput 或 torch.FloatTensor 元组(如果传入 return_dict=False 或 config.return_dict=False),其包含的元素取决于配置(SLANeXtConfig)和输入。

SLANeXtForTableRecognition 的 forward 方法重写了 __call__ 特殊方法。

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

  • last_hidden_state(形状为 (batch_size, sequence_length, hidden_size) 的 torch.FloatTensor)— 模型最后一层输出的隐藏状态序列。

  • hidden_states (tuple(torch.FloatTensor),可选,在传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.FloatTensor 元组(如果模型具有嵌入层,则包含嵌入层的输出,以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions(tuple(torch.FloatTensor),可选,在传入 output_attentions=True 或 config.output_attentions=True 时返回)—— 一个 torch.FloatTensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

  • head_hidden_states (tuple(torch.FloatTensor),可选,在传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — SLANeXtSLAHead 在每个预测步骤的隐藏状态,最多可包含 self.config.max_text_length 个状态(取决于提前退出)。

  • head_attentions(tuple(torch.FloatTensor),可选,在传入 output_attentions=True 或 config.output_attentions=True 时返回)— SLANeXtSLAHead 在每个预测步骤的注意力,最多可包含 self.config.max_text_length 个注意力(取决于提前退出)。

SLANeXtBackbone

class transformers.SLANeXtBackbone

< >

( config: dict | None = None**kwargs )

SLANeXtSLAHead

class transformers.SLANeXtSLAHead

< >

( config: dict | None = None**kwargs )

SLANeXtImageProcessor

class transformers.SLANeXtImageProcessor

< >

( **kwargs: *<class 'transformers.processing_utils.ImagesKwargs'> )

参数

  • do_convert_rgb (bool,kwargs,可选,默认为 True) — 是否将图像转换为 RGB。
  • do_resize (bool,kwargs,可选,默认为 True) — 是否调整图像大小。
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs,默认为 {'height' -- 512, 'width': 512}): 描述输入到模型的最大尺寸。
  • default_to_square (bool,kwargs,可选,默认为 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,默认为 2) — 如果调整图像大小,则使用的重采样滤波器。它可以是枚举 PILImageResampling 中的一个值。仅当 do_resize 设置为 True 时才会生效。
  • do_rescale (bool,kwargs,可选,默认为 True) — 是否对图像进行重新缩放。
  • rescale_factor (float,kwargs,可选,默认为 0.00392156862745098) — 当 do_rescale 设置为 True 时,用于对图像进行缩放的缩放因子。
  • do_normalize (bool,kwargs,可选,默认为 True) — 是否对图像进行归一化。
  • image_mean (Union[float, list[float], tuple[float, ...]],kwargs,可选,默认为 [0.485, 0.456, 0.406]) — 用于归一化的图像均值。仅当 do_normalize 设置为 True 时生效。
  • image_std (Union[float, list[float], tuple[float, ...]],kwargs,可选,默认为 [0.229, 0.224, 0.225]) — 用于归一化的图像标准差。仅当 do_normalize 设置为 True 时生效。
  • do_pad (bool,kwargs,可选,默认为 True) — 是否对图像进行填充。填充操作会将图像填充至批次中的最大尺寸,或填充至每张图像的固定正方形尺寸。具体的填充策略取决于模型。
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs,默认为 {'height' -- 512, 'width': 512}): 用于填充图像的 {"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,可选) — 是否禁用按尺寸对图像进行分组,从而逐个处理图像而非批量处理。 如果为 None,则当图像位于 CPU 上时设置为 True,否则设置为 False。此选择基于经验观察,详见此处:https://github.com/huggingface/transformers/pull/38157
  • image_seq_length (int,kwargs,可选) — 输入中每张图片所使用的图像 token 数量。 为向后兼容而添加,但在未来的模型中,应将其设置为处理器的属性。

构建一个 SLANeXtImageProcessor 图像处理器。

init_decoder

< >

( )

初始化用于表格结构识别的解码器词汇表。

构建一个字符字典,将 HTML 表格结构标记(例如 <thead>、<tr>、<td>、colspan/ rowspan 属性)映射为整数索引。该字典包含特殊的 "sos"(序列开始)和 "eos"(序列结束)标记。在适用情况下,使用合并后的 <td></td> 标记替代独立的 <td> 标记。

post_process_table_recognition

< >

( outputs ) → dict

参数

  • outputs (SLANeXtForTableRecognitionOutput) — SLANeXt 模型的原始输出。last_hidden_state 字段包含每个解码步骤中结构词汇表上的预测概率分布,其形状为 (batch_size, max_text_length, num_classes)。

返回值

dict

包含以下内容的字典:

  • structure (list[str]):以 <html>、<body> 和 <table> 标签包裹的预测 HTML 表格结构,表示为 token 列表。
  • structure_score (float):所有预测 token 的平均置信度分数。

对原始模型输出进行后处理,将预测的表格结构解码为 HTML 标记序列。

将模型在结构词表上预测的概率分布转换为表示表格结构的 HTML 标记序列。解码后的标记会被 <html>、<body> 和 <table> 标签包裹,以构成完整的 HTML 表格结构。

Update on GitHub