Transformers 文档

LayoutXLM

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

LayoutXLM

PyTorch

概述

LayoutXLM 是在 LayoutXLM: Multimodal Pre-training for Multilingual Visually-rich Document Understanding 中提出的,作者是 Yiheng Xu, Tengchao Lv, Lei Cui, Guoxin Wang, Yijuan Lu, Dinei Florencio, Cha Zhang, Furu Wei。 它是 LayoutLMv2 模型 的多语言扩展,在 53 种语言上进行了训练。

论文摘要如下:

最近,结合文本、布局和图像的多模态预训练在视觉丰富的文档理解任务中取得了 SOTA 性能,这证明了跨不同模态进行联合学习的巨大潜力。在本文中,我们提出了 LayoutXLM,一个用于多语言文档理解的多模态预训练模型,旨在消除视觉丰富文档理解的语言障碍。为了准确评估 LayoutXLM,我们还引入了一个名为 XFUN 的多语言表单理解基准数据集,其中包含 7 种语言(中文、日语、西班牙语、法语、意大利语、德语、葡萄牙语)的表单理解样本,并为每种语言手动标注了键值对。实验结果表明,LayoutXLM 模型在 XFUN 数据集上显著优于现有的 SOTA 跨语言预训练模型。

此模型由 nielsr 贡献。 原始代码可以在这里找到。

使用技巧和示例

可以将 LayoutXLM 的权重直接插入到 LayoutLMv2 模型中,如下所示:

from transformers import LayoutLMv2Model

model = LayoutLMv2Model.from_pretrained("microsoft/layoutxlm-base")

请注意,LayoutXLM 有其自己的 tokenizer,基于 LayoutXLMTokenizer/LayoutXLMTokenizerFast。 您可以按如下方式初始化它:

from transformers import LayoutXLMTokenizer

tokenizer = LayoutXLMTokenizer.from_pretrained("microsoft/layoutxlm-base")

与 LayoutLMv2 类似,您可以使用 LayoutXLMProcessor(在内部按顺序应用 LayoutLMv2ImageProcessorLayoutXLMTokenizer/LayoutXLMTokenizerFast )来准备模型的所有数据。

由于 LayoutXLM 的架构与 LayoutLMv2 的架构等效,因此可以参考 LayoutLMv2 的文档页面 以获取所有技巧、代码示例和 notebook。

LayoutXLMTokenizer

class transformers.LayoutXLMTokenizer

< >

( vocab_file bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' cls_token_box = [0, 0, 0, 0] sep_token_box = [1000, 1000, 1000, 1000] pad_token_box = [0, 0, 0, 0] pad_token_label = -100 only_label_first_subword = True sp_model_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None **kwargs )

参数

  • vocab_file (str) — 词汇表文件的路径。
  • bos_token (str, 可选, 默认为 "<s>") — 序列开始标记,在预训练期间使用。 可以用作序列分类器标记。

    当使用特殊标记构建序列时,这不是用于序列开始的标记。 使用的标记是 cls_token

  • eos_token (str, 可选, 默认为 "</s>") — 序列结束标记。

    当使用特殊标记构建序列时,这不是用于序列结束的标记。 使用的标记是 sep_token

  • sep_token (str, 可选, 默认为 "</s>") — 分隔符标记,用于从多个序列构建序列时,例如用于序列分类的两个序列,或者用于问答的文本和问题。 它也用作使用特殊标记构建的序列的最后一个标记。
  • cls_token (str, 可选, 默认为 "<s>") — 分类器标记,用于进行序列分类(对整个序列而不是每个标记进行分类)。 当使用特殊标记构建时,它是序列的第一个标记。
  • unk_token (str, 可选, 默认为 "<unk>") — 未知标记。 词汇表中不存在的标记无法转换为 ID,而是设置为此标记。
  • pad_token (str, 可选, 默认为 "<pad>") — 用于填充的标记,例如在对不同长度的序列进行批处理时。
  • mask_token (str, 可选, 默认为 "<mask>") — 用于遮盖值的 token。这是使用掩码语言建模训练此模型时使用的 token。这是模型将尝试预测的 token。
  • cls_token_box (List[int], 可选, 默认为 [0, 0, 0, 0]) — 用于特殊 [CLS] token 的边界框。
  • sep_token_box (List[int], 可选, 默认为 [1000, 1000, 1000, 1000]) — 用于特殊 [SEP] token 的边界框。
  • pad_token_box (List[int], 可选, 默认为 [0, 0, 0, 0]) — 用于特殊 [PAD] token 的边界框。
  • pad_token_label (int, 可选, 默认为 -100) — 用于 padding tokens 的标签。默认为 -100,这是 PyTorch 的 CrossEntropyLoss 的 ignore_index
  • only_label_first_subword (bool, 可选, 默认为 True) — 在提供 word labels 的情况下,是否仅标记第一个 subword。
  • sp_model_kwargs (dict, 可选) — 将传递给 SentencePieceProcessor.__init__() 方法。可以使用 SentencePiece 的 Python 封装器,以设置:

    • enable_sampling: 启用 subword regularization。

    • nbest_size: unigram 的采样参数。对 BPE-Dropout 无效。

      • nbest_size = {0,1}: 不执行采样。
      • nbest_size > 1: 从 nbest_size 结果中采样。
      • nbest_size < 0: 假设 nbest_size 是无限的,并使用前向过滤和后向采样算法从所有假设(格)中采样。
    • alpha: unigram 采样的平滑参数,以及 BPE-dropout 的 merge 操作的 dropout 概率。

  • sp_model (SentencePieceProcessor) — 用于每次转换(字符串、tokens 和 IDs)的 SentencePiece processor。

改编自 RobertaTokenizerXLNetTokenizer。基于 SentencePiece

此 tokenizer 继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。

__call__

< >

( text: typing.Union[str, typing.List[str], typing.List[typing.List[str]]] text_pair: typing.Union[typing.List[str], typing.List[typing.List[str]], NoneType] = None boxes: typing.Union[typing.List[typing.List[int]], typing.List[typing.List[typing.List[int]]]] = None word_labels: typing.Union[typing.List[int], typing.List[typing.List[int]], NoneType] = None add_special_tokens: bool = True padding: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = False truncation: typing.Union[bool, str, transformers.tokenization_utils_base.TruncationStrategy] = None max_length: typing.Optional[int] = None stride: int = 0 pad_to_multiple_of: typing.Optional[int] = None padding_side: typing.Optional[str] = None return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None return_token_type_ids: typing.Optional[bool] = None return_attention_mask: typing.Optional[bool] = None return_overflowing_tokens: bool = False return_special_tokens_mask: bool = False return_offsets_mapping: bool = False return_length: bool = False verbose: bool = True **kwargs ) BatchEncoding

参数

  • text (str, List[str], List[List[str]]) — 要编码的序列或批量序列。每个序列可以是字符串、字符串列表(单个示例的单词或一批示例的问题)或字符串列表的列表(单词批次)。
  • text_pair (List[str], List[List[str]]) — 要编码的序列或批量序列。每个序列都应该是字符串列表(预分词字符串)。
  • boxes (List[List[int]], List[List[List[int]]]) — 单词级边界框。每个边界框应标准化为 0-1000 范围。
  • word_labels (List[int], List[List[int]], 可选) — 单词级整数标签(用于 token 分类任务,例如 FUNSD、CORD)。
  • add_special_tokens (bool, 可选, 默认为 True) — 是否使用与其模型相关的特殊 tokens 对序列进行编码。
  • padding (bool, strPaddingStrategy, 可选, 默认为 False) — 激活并控制 padding。接受以下值:

    • True'longest': 填充到批次中最长的序列(如果仅提供单个序列,则不进行 padding)。
    • 'max_length': 填充到使用参数 max_length 指定的最大长度,或者如果未提供该参数,则填充到模型可接受的最大输入长度。
    • False'do_not_pad' (默认): 无 padding(即,可以输出具有不同长度序列的批次)。
  • truncation (bool, strTruncationStrategy, 可选, 默认为 False) — 激活并控制 truncation。接受以下值:

    • True'longest_first': 截断为使用参数 max_length 指定的最大长度,或者如果未提供该参数,则截断为模型可接受的最大输入长度。如果提供了一对序列(或一批对),这将逐个 token 截断,并从该对中最长的序列中删除一个 token。
    • 'only_first': 截断为使用参数 max_length 指定的最大长度,或者如果未提供该参数,则截断为模型可接受的最大输入长度。如果提供了一对序列(或一批对),这将仅截断该对的第一个序列。
    • 'only_second': 截断为使用参数 max_length 指定的最大长度,或者如果未提供该参数,则截断为模型可接受的最大输入长度。如果提供了一对序列(或一批对),这将仅截断该对的第二个序列。
    • False'do_not_truncate' (默认): 无 truncation(即,可以输出序列长度大于模型最大允许输入大小的批次)。
  • max_length (int, 可选) — 控制 truncation/padding 参数使用的最大长度。

    如果未设置或设置为 None,如果 truncation/padding 参数之一需要最大长度,则将使用预定义的模型最大长度。如果模型没有特定的最大输入长度(例如 XLNet),则 truncation/padding 到最大长度将被停用。

  • stride (int, 可选, 默认为 0) — 如果与 max_length 一起设置数字,则当 return_overflowing_tokens=True 时返回的溢出 tokens 将包含来自截断序列末尾的一些 tokens,以便在截断序列和溢出序列之间提供一些重叠。此参数的值定义了重叠 tokens 的数量。
  • pad_to_multiple_of (int, 可选) — 如果设置,则将序列 padding 到提供的值的倍数。这对于在计算能力 >= 7.5 (Volta) 的 NVIDIA 硬件上启用 Tensor Cores 的使用特别有用。
  • return_tensors (strTensorType, 可选) — 如果设置,将返回 tensors 而不是 python 整数列表。可接受的值为:

    • 'tf': 返回 TensorFlow tf.constant 对象。
    • 'pt': 返回 PyTorch torch.Tensor 对象。
    • 'np': 返回 Numpy np.ndarray 对象。
  • return_token_type_ids (bool, 可选) — 是否返回 token 类型 IDs。如果保留为默认值,将根据特定 tokenizer 的默认值(由 return_outputs 属性定义)返回 token 类型 IDs。

    什么是 token 类型 IDs?

  • return_attention_mask (bool, 可选) — 是否返回 attention mask。如果保留为默认值,将根据特定 tokenizer 的默认值(由 return_outputs 属性定义)返回 attention mask。

    什么是 attention masks?

  • return_overflowing_tokens (bool, 可选, 默认为 False) — 是否返回溢出的 token 序列。如果提供了一对输入 id 序列(或一批对)且 truncation_strategy = longest_firstTrue,则会引发错误,而不是返回溢出的 tokens。
  • return_special_tokens_mask (bool, 可选, 默认为 False) — 是否返回特殊 tokens 掩码信息。
  • return_offsets_mapping (bool, 可选, 默认为 False) — 是否为每个 token 返回 (char_start, char_end)

    这仅在继承自 PreTrainedTokenizerFast 的快速 tokenizers 上可用,如果使用 Python 的 tokenizer,此方法将引发 NotImplementedError

  • return_length (bool, optional, defaults to False) — 是否返回编码后输入的长度。
  • verbose (bool, optional, defaults to True) — 是否打印更多信息和警告。
  • **kwargs — 传递给 self.tokenize() 方法的参数

返回值

BatchEncoding

一个 BatchEncoding 对象,包含以下字段:

  • input_ids — 输入模型的 token id 列表。

    什么是输入 IDs?

  • bbox — 输入模型的 bounding box 列表。

  • token_type_ids — 输入模型的 token type id 列表 (当 return_token_type_ids=True“token_type_ids”self.model_input_names 中时)。

    什么是 token type IDs?

  • attention_mask — 索引列表,指定模型应注意哪些 token (当 return_attention_mask=True“attention_mask”self.model_input_names 中时)。

    什么是 attention masks?

  • labels — 输入模型的 label 列表。(当指定了 word_labels 时)。

  • overflowing_tokens — 溢出的 token 序列列表 (当指定了 max_lengthreturn_overflowing_tokens=True 时)。

  • num_truncated_tokens — 截断的 token 数量 (当指定了 max_lengthreturn_overflowing_tokens=True 时)。

  • special_tokens_mask — 0 和 1 的列表,其中 1 表示添加的特殊 token,0 表示常规序列 token (当 add_special_tokens=Truereturn_special_tokens_mask=True 时)。

  • length — 输入的长度 (当 return_length=True 时)。

用于对一个或多个序列或一对或多对序列进行 tokenization 并为模型准备输入的主要方法,输入包含词级别的归一化 bounding box 以及可选的 label。

build_inputs_with_special_tokens

< >

( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None ) List[int]

参数

  • token_ids_0 (List[int]) — 将被添加特殊 token 的 ID 列表。
  • token_ids_1 (List[int], optional) — 序列对的可选的第二个 ID 列表。

返回值

List[int]

包含适当特殊 token 的 input IDs 列表。

通过连接和添加特殊 token,从序列或序列对构建模型输入,用于序列分类任务。 XLM-RoBERTa 序列具有以下格式

  • 单个序列: <s> X </s>
  • 序列对: <s> A </s></s> B </s>

get_special_tokens_mask

< >

( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None already_has_special_tokens: bool = False ) List[int]

参数

  • token_ids_0 (List[int]) — ID 列表。
  • token_ids_1 (List[int], optional) — 序列对的可选的第二个 ID 列表。
  • already_has_special_tokens (bool, optional, defaults to False) — token 列表是否已经使用模型的特殊 token 格式化。

返回值

List[int]

一个整数列表,范围为 [0, 1]:1 表示特殊 token,0 表示序列 token。

从没有添加特殊 token 的 token 列表中检索序列 IDs。当使用 tokenizer 的 prepare_for_model 方法添加特殊 token 时,会调用此方法。

create_token_type_ids_from_sequences

< >

( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None ) List[int]

参数

  • token_ids_0 (List[int]) — ID 列表。
  • token_ids_1 (List[int], optional) — 序列对的可选的第二个 ID 列表。

返回值

List[int]

零列表。

从传递的两个序列创建一个 mask,用于序列对分类任务。 XLM-RoBERTa 不使用 token type id,因此返回一个零列表。

save_vocabulary

< >

( save_directory: str filename_prefix: typing.Optional[str] = None )

LayoutXLMTokenizerFast

class transformers.LayoutXLMTokenizerFast

< >

( vocab_file = None tokenizer_file = None bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' cls_token_box = [0, 0, 0, 0] sep_token_box = [1000, 1000, 1000, 1000] pad_token_box = [0, 0, 0, 0] pad_token_label = -100 only_label_first_subword = True **kwargs )

参数

  • vocab_file (str) — 词汇表文件的路径。
  • bos_token (str, optional, defaults to "<s>") — 预训练期间使用的序列开始 token。可以用作序列分类器 token。

    当使用特殊 token 构建序列时,这并非用于序列开始的 token。使用的 token 是 cls_token

  • eos_token (str, optional, defaults to "</s>") — 序列结束 token。

    当使用特殊 token 构建序列时,这并非用于序列结束的 token。使用的 token 是 sep_token

  • sep_token (str, optional, defaults to "</s>") — 分隔符 token,用于从多个序列构建序列时,例如用于序列分类的两个序列或用于问答的文本和问题。它也用作使用特殊 token 构建的序列的最后一个 token。
  • cls_token (str, optional, defaults to "<s>") — 分类器 token,用于进行序列分类(对整个序列而不是每个 token 进行分类)。当使用特殊 token 构建时,它是序列的第一个 token。
  • unk_token (str, optional, defaults to "<unk>") — 未知 token。词汇表中不存在的 token 无法转换为 ID,而是设置为此 token。
  • pad_token (str, optional, defaults to "<pad>") — 用于 padding 的 token,例如在对不同长度的序列进行 batch 处理时。
  • mask_token (str, optional, defaults to "<mask>") — 用于 masking 值的 token。这是在使用 masked language modeling 训练此模型时使用的 token。这是模型将尝试预测的 token。
  • cls_token_box (List[int], optional, defaults to [0, 0, 0, 0]) — 用于特殊 [CLS] token 的 bounding box。
  • sep_token_box (List[int], 可选, 默认为 [1000, 1000, 1000, 1000]) — 用于特殊 [SEP] 标记的边界框。
  • pad_token_box (List[int], 可选, 默认为 [0, 0, 0, 0]) — 用于特殊 [PAD] 标记的边界框。
  • pad_token_label (int, 可选, 默认为 -100) — 用于填充标记的标签。默认为 -100,这是 PyTorch 的 CrossEntropyLoss 的 ignore_index
  • only_label_first_subword (bool, 可选, 默认为 True) — 是否仅标记第一个子词,以防提供单词标签。
  • additional_special_tokens (List[str], 可选, 默认为 ["<s>NOTUSED", "</s>NOTUSED"]) — 分词器使用的其他特殊标记。

构建一个“快速” LayoutXLM 分词器(由 HuggingFace 的 tokenizers 库支持)。改编自 RobertaTokenizerXLNetTokenizer。基于 BPE

此分词器继承自 PreTrainedTokenizerFast,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。

__call__

< >

( text: typing.Union[str, typing.List[str], typing.List[typing.List[str]]] text_pair: typing.Union[typing.List[str], typing.List[typing.List[str]], NoneType] = None boxes: typing.Union[typing.List[typing.List[int]], typing.List[typing.List[typing.List[int]]]] = None word_labels: typing.Union[typing.List[int], typing.List[typing.List[int]], NoneType] = None add_special_tokens: bool = True padding: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = False truncation: typing.Union[bool, str, transformers.tokenization_utils_base.TruncationStrategy] = None max_length: typing.Optional[int] = None stride: int = 0 pad_to_multiple_of: typing.Optional[int] = None padding_side: typing.Optional[str] = None return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None return_token_type_ids: typing.Optional[bool] = None return_attention_mask: typing.Optional[bool] = None return_overflowing_tokens: bool = False return_special_tokens_mask: bool = False return_offsets_mapping: bool = False return_length: bool = False verbose: bool = True **kwargs ) BatchEncoding

参数

  • text (str, List[str], List[List[str]]) — 要编码的序列或序列批次。每个序列可以是字符串、字符串列表(单个示例的单词或示例批次的问题)或字符串列表的列表(单词批次)。
  • text_pair (List[str], List[List[str]]) — 要编码的序列或序列批次。每个序列应为字符串列表(预分词的字符串)。
  • boxes (List[List[int]], List[List[List[int]]]) — 单词级边界框。每个边界框应标准化为 0-1000 比例。
  • word_labels (List[int], List[List[int]], 可选) — 单词级整数标签(用于标记分类任务,例如 FUNSD、CORD)。
  • add_special_tokens (bool, 可选, 默认为 True) — 是否使用与其模型相关的特殊标记对序列进行编码。
  • padding (bool, strPaddingStrategy, 可选, 默认为 False) — 激活并控制填充。接受以下值:

    • True'longest':填充到批次中最长的序列(如果仅提供单个序列,则不填充)。
    • 'max_length':填充到由参数 max_length 指定的最大长度,如果未提供该参数,则填充到模型可接受的最大输入长度。
    • False'do_not_pad' (默认):不填充(即,可以输出具有不同长度序列的批次)。
  • truncation (bool, strTruncationStrategy, 可选, 默认为 False) — 激活并控制截断。接受以下值:

    • True'longest_first':截断为由参数 max_length 指定的最大长度,如果未提供该参数,则截断为模型可接受的最大输入长度。如果提供了一对序列(或一批对),这将逐个标记地截断,从对中最长的序列中删除标记。
    • 'only_first':截断为由参数 max_length 指定的最大长度,如果未提供该参数,则截断为模型可接受的最大输入长度。如果提供了一对序列(或一批对),这将仅截断对中的第一个序列。
    • 'only_second':截断为由参数 max_length 指定的最大长度,如果未提供该参数,则截断为模型可接受的最大输入长度。如果提供了一对序列(或一批对),这将仅截断对中的第二个序列。
    • False'do_not_truncate' (默认):不截断(即,可以输出序列长度大于模型最大允许输入大小的批次)。
  • max_length (int, 可选) — 控制截断/填充参数之一使用的最大长度。

    如果未设置或设置为 None,如果截断/填充参数之一需要最大长度,则将使用预定义的模型最大长度。如果模型没有特定的最大输入长度(如 XLNet),则将停用截断/填充到最大长度。

  • stride (int, 可选, 默认为 0) — 如果与 max_length 一起设置为数字,则当 return_overflowing_tokens=True 时返回的溢出标记将包含截断序列末尾的一些标记,以在截断序列和溢出序列之间提供一些重叠。此参数的值定义了重叠标记的数量。
  • pad_to_multiple_of (int, 可选) — 如果设置,将序列填充为提供值的倍数。这对于在计算能力 >= 7.5 (Volta) 的 NVIDIA 硬件上启用 Tensor Cores 的使用尤其有用。
  • return_tensors (strTensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:

    • 'tf':返回 TensorFlow tf.constant 对象。
    • 'pt':返回 PyTorch torch.Tensor 对象。
    • 'np':返回 Numpy np.ndarray 对象。
  • return_token_type_ids (bool, 可选) — 是否返回标记类型 ID。如果保留为默认值,将根据特定分词器的默认值返回标记类型 ID,由 return_outputs 属性定义。

    什么是标记类型 ID?

  • return_attention_mask (bool, 可选) — 是否返回注意力掩码。如果保留为默认值,将根据特定分词器的默认值返回注意力掩码,由 return_outputs 属性定义。

    什么是注意力掩码?

  • return_overflowing_tokens (bool, 可选, 默认为 False) — 是否返回溢出的标记序列。如果提供了一对输入 ID 序列(或一批对),且 truncation_strategy = longest_firstTrue,则会引发错误,而不是返回溢出标记。
  • return_special_tokens_mask (bool, 可选, 默认为 False) — 是否返回特殊标记掩码信息。
  • return_offsets_mapping (bool, 可选, 默认为 False) — 是否为每个标记返回 (char_start, char_end)

    这仅在继承自 PreTrainedTokenizerFast 的快速分词器上可用,如果使用 Python 的分词器,此方法将引发 NotImplementedError

  • return_length (bool, 可选, 默认为 False) — 是否返回编码输入的长度。
  • verbose (bool, 可选, 默认为 True) — 是否打印更多信息和警告。
  • ***kwargs — 传递给 self.tokenize() 方法

返回值

BatchEncoding

一个 BatchEncoding 对象,包含以下字段:

  • input_ids — 输入模型的 token id 列表。

    什么是输入 IDs?

  • bbox — 输入模型的 bounding box 列表。

  • token_type_ids — 输入模型的 token type id 列表 (当 return_token_type_ids=True“token_type_ids”self.model_input_names 中时)。

    什么是 token type IDs?

  • attention_mask — 索引列表,指定模型应注意哪些 token (当 return_attention_mask=True“attention_mask”self.model_input_names 中时)。

    什么是 attention masks?

  • labels — 输入模型的 label 列表。(当指定了 word_labels 时)。

  • overflowing_tokens — 溢出的 token 序列列表 (当指定了 max_lengthreturn_overflowing_tokens=True 时)。

  • num_truncated_tokens — 截断的 token 数量 (当指定了 max_lengthreturn_overflowing_tokens=True 时)。

  • special_tokens_mask — 0 和 1 的列表,其中 1 表示添加的特殊 token,0 表示常规序列 token (当 add_special_tokens=Truereturn_special_tokens_mask=True 时)。

  • length — 输入的长度 (当 return_length=True 时)。

用于对一个或多个序列或一对或多对序列进行 tokenization 并为模型准备输入的主要方法,输入包含词级别的归一化 bounding box 以及可选的 label。

LayoutXLMProcessor

class transformers.LayoutXLMProcessor

< >

( image_processor = None tokenizer = None **kwargs )

参数

构建一个 LayoutXLM 处理器,该处理器将 LayoutXLM 图像处理器和 LayoutXLM 分词器组合成一个单一的处理器。

LayoutXLMProcessor 提供了为模型准备数据所需的所有功能。

它首先使用 LayoutLMv2ImageProcessor 将文档图像调整到固定大小,并可以选择性地应用 OCR 以获取单词和标准化的边界框。 然后将这些提供给 LayoutXLMTokenizerLayoutXLMTokenizerFast,它们将单词和边界框转换为 token 级别的 input_idsattention_masktoken_type_idsbbox。 可选地,可以提供整数 word_labels,这些标签将被转换为 token 级别的 labels,用于 token 分类任务(例如 FUNSD、CORD)。

__call__

< >

( images text: typing.Union[str, typing.List[str], typing.List[typing.List[str]]] = None text_pair: typing.Union[typing.List[str], typing.List[typing.List[str]], NoneType] = None boxes: typing.Union[typing.List[typing.List[int]], typing.List[typing.List[typing.List[int]]]] = None word_labels: typing.Union[typing.List[int], typing.List[typing.List[int]], NoneType] = None add_special_tokens: bool = True padding: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = False truncation: typing.Union[bool, str, transformers.tokenization_utils_base.TruncationStrategy] = None max_length: typing.Optional[int] = None stride: int = 0 pad_to_multiple_of: typing.Optional[int] = None return_token_type_ids: typing.Optional[bool] = None return_attention_mask: typing.Optional[bool] = None return_overflowing_tokens: bool = False return_special_tokens_mask: bool = False return_offsets_mapping: bool = False return_length: bool = False verbose: bool = True return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None **kwargs )

此方法首先将 images 参数转发到 ~LayoutLMv2ImagePrpcessor.__call__。 如果 LayoutLMv2ImagePrpcessor 初始化时将 apply_ocr 设置为 True,它会将获取的单词和边界框以及其他参数传递给 call() 并返回输出,以及调整大小后的 images。 如果 LayoutLMv2ImagePrpcessor 初始化时将 apply_ocr 设置为 False,它会将用户指定的单词 (text/text_pair) 和 boxes 以及其他参数传递给 [__call__()](/docs/transformers/v4.50.0/en/model_doc/layoutxlm#transformers.LayoutXLMTokenizer.__call__) 并返回输出,以及调整大小后的 images

有关更多信息,请参阅上述两个方法的文档字符串。

< > 在 GitHub 上更新