Transformers documentation
SLANeXt
该模型于 2026-03-21 贡献至 Hugging Face Transformers。
SLANeXt
概述
SLANeXt_wired 和 SLANeXt_wireless 是一系列专为表格结构识别设计的轻量级模型,专注于准确识别文档和自然场景中的表格结构。有关 SLANeXt 系列模型的更多详细信息,请参阅官方文档。
模型架构
SLANeXt 系列是由百度 PaddlePaddle 视觉团队自主研发的新一代表格结构识别模型。SLANeXt 专注于表格结构识别,并分别为有线表格和无线表格训练了专用权重。其对各类表格的识别能力均得到显著提升,尤其针对有线表格。
用法
单输入推理
以下示例演示了如何使用 AutoModel 通过 PP-OCRV5_Mobile_Det 检测文本。
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
< source >( 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
< source >( 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
< source >( config: SLANeXtConfig )
参数
- config (SLANeXtConfig) — 模型的配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。
用于表格识别任务的 SLANeXt 表格识别模型。封装了核心的 SLANeXtPreTrainedModel,并返回与 Transformers 表格识别 API 兼容的输出。
该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。
该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。
forward
< source >( pixel_values: FloatTensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SLANeXtForTableRecognitionOutput or tuple(torch.FloatTensor)
参数
- pixel_values (
torch.FloatTensor,形状为(batch_size, num_channels, image_size, image_size)) — 与输入图像对应的张量。可以使用 SLANeXtImageProcessor 获取像素值。有关详细信息,请参阅 SLANeXtImageProcessor.call()(processor_class使用 SLANeXtImageProcessor 处理图像)。
返回值
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
SLANeXtSLAHead
SLANeXtImageProcessor
class transformers.SLANeXtImageProcessor
< source >( **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 图像处理器。
初始化用于表格结构识别的解码器词汇表。
构建一个字符字典,将 HTML 表格结构标记(例如 <thead>、<tr>、<td>、colspan/
rowspan 属性)映射为整数索引。该字典包含特殊的 "sos"(序列开始)和 "eos"(序列结束)标记。在适用情况下,使用合并后的 <td></td> 标记替代独立的 <td> 标记。
post_process_table_recognition
< source >( 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 表格结构。