Transformers documentation
QianfanOCR
Este modelo se publicó en HF papers el 11 de marzo de 2026 y se contribuyó a Hugging Face Transformers el 17 de abril de 2026.
QianfanOCR
Resumen
Qianfan-OCR es un modelo de inteligencia de documentos de extremo a extremo con 4 mil millones de parámetros desarrollado por el equipo Baidu Qianfan. Fue propuesto en Qianfan-OCR: A Unified End-to-End Model for Document Intelligence por Daxiang Dong et al.
A diferencia de los pipelines de OCR multietapa tradicionales, Qianfan-OCR realiza conversión directa de imagen a texto y soporta una amplia gama de tareas impulsadas por prompts: desde el análisis estructurado de documentos y la extracción de tablas hasta la comprensión de gráficos, la respuesta a preguntas sobre documentos y la extracción de información clave, todo dentro de un solo modelo.
El modelo adopta una arquitectura de puente multimodal que consta de tres componentes:
- Codificador de visión: Qianfan-ViT con diseño AnyResolution (hasta 4K), 256 tokens visuales por mosaico de 448×448, máximo de 4.096 tokens por imagen
- Modelo de lenguaje: Qwen3-4B con contexto de 32K (ampliable a 131K)
- Adaptador entre modalidades: MLP de 2 capas con activación GELU
Una innovación clave es Layout-as-Thought: una fase de razonamiento opcional activada por los tokens <think>, en la que el modelo genera representaciones estructuradas del diseño (cajas delimitadoras, tipos de elementos, orden de lectura) antes de producir las salidas finales. Esto resulta especialmente útil para páginas heterogéneas con tipos de elementos mixtos (exámenes, informes técnicos, periódicos).
El modelo logra resultados de última generación en varios benchmarks:
- #1 modelo de extremo a extremo en OmniDocBench v1.5 con una puntuación general de 93.12
- #1 en el modelo de extremo a extremo en OlmOCR Bench con una puntuación de 79.8
- #1 en extracción de información clave con una puntuación media de 87,9 en cinco benchmarks públicos de KIE
Este modelo fue aportado por el Baidu Qianfan Team.
Ejemplo de uso
Análisis de documentos
from transformers import AutoModelForImageTextToText, AutoProcessor
model = AutoModelForImageTextToText.from_pretrained("baidu/Qianfan-OCR", device_map="auto")
processor = AutoProcessor.from_pretrained("baidu/Qianfan-OCR")
image = "https://huggingface.co/datasets/hf-internal-testing/fixtures_got_ocr/resolve/main/image_ocr.jpg"
messages = [{"role": "user", "content": [{"type": "image", "url": image}, {"type": "text", "text": "Parse this document to Markdown."}]}]
inputs = processor.apply_chat_template(messages, add_generation_prompt=True, tokenize=True, return_tensors="pt").to(model.device)
generate_ids = model.generate(**inputs, max_new_tokens=64)
processor.decode(generate_ids[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)Layout-as-Thought (modo de pensamiento)
Para documentos con diseños complejos, elementos desordenados o órdenes de lectura no estándar, active el modo de razonamiento estableciendo enable_thinking=True en apply_chat_template. El modelo primero generará un análisis estructurado del diseño (cajas delimitadoras, tipos de elementos, orden de lectura) y luego producirá la salida final.
from transformers import AutoModelForImageTextToText, AutoProcessor
model = AutoModelForImageTextToText.from_pretrained("baidu/Qianfan-OCR", device_map="auto")
processor = AutoProcessor.from_pretrained("baidu/Qianfan-OCR")
image = "https://huggingface.co/datasets/hf-internal-testing/fixtures_got_ocr/resolve/main/image_ocr.jpg"
messages = [{"role": "user", "content": [{"type": "image", "url": image}, {"type": "text", "text": "Parse this document to Markdown."}]}]
inputs = processor.apply_chat_template(messages, add_generation_prompt=True, tokenize=True, return_tensors="pt", enable_thinking=True).to(model.device)
generate_ids = model.generate(**inputs, max_new_tokens=128)
processor.decode(generate_ids[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)Inferencia por lotes
from transformers import AutoModelForImageTextToText, AutoProcessor
model = AutoModelForImageTextToText.from_pretrained("baidu/Qianfan-OCR", device_map="auto")
processor = AutoProcessor.from_pretrained("baidu/Qianfan-OCR")
image1 = "https://huggingface.co/datasets/hf-internal-testing/fixtures_got_ocr/resolve/main/image_ocr.jpg"
image2 = "https://huggingface.co/datasets/hf-internal-testing/fixtures_got_ocr/resolve/main/multi_box.png"
messages = [
[{"role": "user", "content": [{"type": "image", "url": image1}, {"type": "text", "text": "Parse this document to Markdown."}]}],
[{"role": "user", "content": [{"type": "image", "url": image2}, {"type": "text", "text": "OCR the text in the image."}]}],
]
inputs = processor.apply_chat_template(messages, add_generation_prompt=True, tokenize=True, return_tensors="pt", padding=True).to(model.device)
generate_ids = model.generate(**inputs, max_new_tokens=64)
processor.batch_decode(generate_ids[:, inputs["input_ids"].shape[1]:], skip_special_tokens=True)QianfanOCRConfig
clase transformers.QianfanOCRConfig
< 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.configuration_utils.PreTrainedConfig | None = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneimage_token_id: int = 151667image_seq_length: int = 256downsample_ratio: float = 0.5projector_hidden_act: str = 'gelu'vision_feature_layer: int | list[int] = -1vision_feature_select_strategy: str = 'default'tie_word_embeddings: bool = False )
Parámetros
- vision_config (
Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — El objeto de configuración o el diccionario del backbone de visión. - text_config (
Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — El objeto de configuración o el diccionario del backbone de texto. - image_token_id (
int, opcional, valor predeterminado151667) — El índice del token de imagen utilizado como marcador de posición para las imágenes de entrada. - image_seq_length (
int, opcional, valor predeterminado256) — Longitud de secuencia de un embedding de imagen. - downsample_ratio (
float, opcional, valor predeterminado 0.5) — Factor por el cual se reduce la imagen. - projector_hidden_act (
str, opcional, valor predeterminadogelu) — La función de activación utilizada por el proyector multimodal. - vision_feature_layer (
Union[int, list[int]], opcional, valor predeterminado-1) — El índice de la capa de la que se selecciona la característica visual. Si se proporcionan varios índices, las características visuales de los índices correspondientes se concatenarán para formar las características visuales. - vision_feature_select_strategy (
str, opcional, valor predeterminadodefault) — Estrategia de selección de características utilizada para seleccionar la característica visual del backbone visual. - tie_word_embeddings (
bool, opcional, valor predeterminadoFalse) — Si se deben vincular las matrices de pesos de embeddings según el mapeotied_weights_keysdel modelo.
Esta es la clase de configuración para almacenar la configuración de un QianfanOCRModel. Se utiliza para instanciar un modelo Qianfan Ocr según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de baidu/Qianfan-OCR
Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.
QianfanOCRVisionConfig
clase transformers.QianfanOCRVisionConfig
< 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 = 1024num_hidden_layers: int = 24num_attention_heads: int = 16attention_bias: bool = Trueuse_qk_norm: bool = Falseintermediate_size: int = 4096hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.0attention_dropout: float | int = 0.0projection_dropout: float | int = 0.0initializer_range: float = 0.02norm_type: str = 'layer_norm'layer_norm_eps: float = 1e-06image_size: int | list[int] | tuple[int, ...] = (448, 448)patch_size: int | list[int] | tuple[int, ...] = (14, 14)num_channels: int = 3use_mask_token: bool = Falseuse_absolute_position_embeddings: bool = Truelayer_scale_init_value: float = 0.1use_mean_pooling: bool = Truedrop_path_rate: float = 0.1 )
Parámetros
- hidden_size (
int, opcional, valor predeterminado1024) — Dimensión de las representaciones ocultas. - num_hidden_layers (
int, opcional, valor predeterminado24) — Número de capas ocultas en el decodificador del Transformer. - num_attention_heads (
int, opcional, valor predeterminado16) — Número de cabezas de atención para cada capa de atención en el decodificador Transformer. - attention_bias (
bool, opcional, valor predeterminadoTrue) — Si se debe usar un sesgo en las capas de proyección de consulta, clave, valor y salida durante la autoatención. - use_qk_norm (
bool, opcional, valor predeterminadoFalse) — Si se debe usar la normalización de consulta-clave en la atención. - intermediate_size (
int, opcional, valor predeterminado4096) — Dimensión de las representaciones del MLP. - hidden_act (
str, opcional, valor predeterminadogelu) — La función de activación no lineal (función o cadena) en el decodificador. Por ejemplo,"gelu","relu","silu", etc. - hidden_dropout_prob (
Union[float, int], opcional, valor predeterminado0.0) — La probabilidad de dropout para todas las capas totalmente conectadas en las incrustaciones, el codificador y el pooler. - attention_dropout (
Union[float, int], opcional, valor predeterminado0.0) — La proporción de dropout para las probabilidades de atención. - projection_dropout (
float, opcional, valor predeterminado 0.0) — Probabilidad de dropout para la capa de proyección. - initializer_range (
float, opcional, valor predeterminado0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos. - norm_type (
str, opcional, por defecto"layer_norm") — El tipo de normalización que se utilizará en el codificador. Puede ser"layer_norm"o"rms_norm". - layer_norm_eps (
float, opcional, valor predeterminado1e-06) — La epsilon utilizada por las capas de normalización de capa. - image_size (
Union[int, list[int], tuple[int, ...]], opcional, valor predeterminado(448, 448)) — El tamaño (resolución) de cada imagen. - patch_size (
Union[int, list[int], tuple[int, ...]], opcional, valor predeterminado(14, 14)) — El tamaño (resolución) de cada parche. - num_channels (
int, opcional, valor predeterminado3) — El número de canales de entrada. - use_mask_token (
bool, opcional, valor predeterminadoFalse) — Si se debe usar un token de máscara para el modelado de imágenes enmascaradas. - use_absolute_position_embeddings (
bool, opcional, valor predeterminadoTrue) — Si se deben usar embeddings de posición absoluta. - layer_scale_init_value (
float, opcional, valor predeterminado0.1) — Escala a utilizar en las capas de autoatención. 0.1 para base, 1e-6 para grande. Establezca 0 para deshabilitar la escala de capa. - use_mean_pooling (
bool, opcional, valor predeterminadoTrue) — Si se debe aplicar un promedio de los estados ocultos finales de los parches en lugar de usar el estado oculto final del token CLS, antes de aplicar la cabeza de clasificación. - drop_path_rate (
float, opcional, valor predeterminado 0.1) — Tasa de dropout para la profundidad estocástica.
Esta es la clase de configuración para almacenar la configuración de un QianfanOCRModel. Se utiliza para instanciar un modelo Qianfan Ocr según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de baidu/Qianfan-OCR
Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.
QianfanOCRProcessor
clase transformers.QianfanOCRProcessor
< source >( image_processor = Nonetokenizer = Noneimage_seq_length: int = 256chat_template = Noneimage_placeholder_token: str = '<image>'**kwargs )
Parámetros
- image_processor (GotOcr2ImageProcessor) — El procesador de imágenes es una entrada obligatoria.
- tokenizer (Qwen2Tokenizer) — El tokenizador es una entrada obligatoria.
- image_seq_length (int, opcional, valor predeterminado 256) — El número de tokens de imagen que se utilizarán para cada imagen en la entrada. Se añadió por compatibilidad con versiones anteriores, pero en los modelos futuros debería establecerse como un atributo del procesador.
- chat_template (str) — Una plantilla Jinja para convertir listas de mensajes de un chat en una cadena tokenizable.
- image_placeholder_token (str, opcional, valor predeterminado ”
” ) — El token emitido por la plantilla de chat para marcar las posiciones de las imágenes. Se reemplaza por la secuencia completa<img><IMG_CONTEXT>...<IMG_CONTEXT></img>durante el procesamiento.
Construye un QianfanOCRProcessor que envuelve un procesador de imágenes y un tokenizador en un único procesador.
[QianfanOCRProcessor] ofrece todas las funcionalidades de [GotOcr2ImageProcessor] y [Qwen2Tokenizer]. Consulte [~GotOcr2ImageProcessor] y [~Qwen2Tokenizer] para obtener más información.
__call__
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Nonetext: str | list[str] | list[list[str]] | None = None**kwargs: *<class 'transformers.models.qianfan_ocr.processing_qianfan_ocr.QianfanOCRProcessorKwargs'> ) → BatchFeature
Parámetros
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], opcional) — Imagen a preprocesar. Espera una imagen única o un lote de imágenes con valores de píxeles que van de 0 a 255. Si se pasan imágenes con valores de píxeles entre 0 y 1, establezcado_rescale=False. - text (
Union[str, list[str], list[list[str]]], opcional) — La secuencia o lote de secuencias que se codificarán. Cada secuencia puede ser una cadena de caracteres o una lista de cadenas de caracteres (cadenas pre-tokenizadas). Si se pasa una entrada pre-tokenizada, establezcais_split_into_words=Truepara evitar ambigüedad con las entradas por lotes. - return_tensors (
stro TensorType, opcional) — Si se establece, devolverá tensores de un marco de trabajo específico. Los valores aceptables son:'pt': Devuelve objetostorch.Tensorde PyTorch.'np': Devuelve objetosnp.ndarrayde NumPy.
- **kwargs (ProcessingKwargs, opcional) — Opciones de procesamiento adicionales para cada modalidad (texto, imágenes, videos, audio). Los parámetros específicos del modelo se enumeran arriba; consulte la clase TypedDict para obtener la lista completa de argumentos admitidos.
Devuelve
Un BatchFeature con los siguientes campos:
- input_ids — Lista de ids de tokens que se enviarán a un modelo. Se devuelve cuando
textno esNone. - attention_mask — Lista de índices que especifica qué tokens deben ser atendidos por el modelo (cuando
return_attention_mask=Trueo si “attention_mask” está enself.model_input_namesy sitextno esNone). - pixel_values — Valores de píxeles que se enviarán a un modelo. Se devuelve cuando
imagesno esNone.
QianfanOCRVisionModel
clase transformers.QianfanOCRVisionModel
< source >( config: QianfanOCRVisionConfig )
Parámetros
- config (QianfanOCRVisionConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
El modelo Qianfan Ocr básico que genera estados ocultos sin ninguna cabeza específica en la parte superior.
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
forward
< source >( pixel_values: Tensorbool_masked_pos: typing.Optional[torch.BoolTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → QianfanOCRVisionModelOutputWithPooling or tuple(torch.FloatTensor)
Parámetros
- pixel_values (
torch.Tensorde forma(batch_size, num_channels, image_size, image_size)) — Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener utilizando GotOcr2ImageProcessor. Consulte GotOcr2ImageProcessor.call() para obtener más detalles (QianfanOCRProcessor utiliza GotOcr2ImageProcessor para procesar las imágenes). - bool_masked_pos (
torch.BoolTensorde forma(batch_size, num_patches), opcional) — Posiciones enmascaradas booleanas. Indica qué parches están enmascarados (1) y cuáles no (0).
Devuelve
QianfanOCRVisionModelOutputWithPooling o tuple(torch.FloatTensor)
Un QianfanOCRVisionModelOutputWithPooling o una tupla de
torch.FloatTensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (QianfanOCRConfig) y las entradas.
El método forward de QianfanOCRVisionModel sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
- pooler_output (
torch.FloatTensorde forma(batch_size, hidden_size)) — Promedio de los estados ocultos de la última capa de los tokens de parche (excluyendo el token [CLS]) si config.use_mean_pooling está establecido en True. Si está establecido en False, se devolverá el estado oculto final del token [CLS].
QianfanOCRModel
clase transformers.QianfanOCRModel
< source >( config: QianfanOCRConfig )
Parámetros
- config (QianfanOCRConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
El modelo QianfanOCR, que consta de un backbone de visión y un modelo de lenguaje, sin una cabeza de modelado de lenguaje.
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.FloatTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonevision_feature_layer: int | list[int] | None = Nonevision_feature_select_strategy: str | None = Nonemm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → QianfanOCRModelOutputWithPast or tuple(torch.FloatTensor)
Parámetros
- input_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada.Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.
- pixel_values (
torch.FloatTensorde forma(batch_size, num_channels, image_size, image_size), opcional) — Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener utilizando GotOcr2ImageProcessor. Consulte GotOcr2ImageProcessor.call() para más detalles (QianfanOCRProcessor utiliza GotOcr2ImageProcessor para procesar las imágenes). - attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en[0, 1]:- 1 para los tokens que no están enmascarados,
- 0 para los tokens que están enmascarados.
- position_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de las posiciones de los tokens de cada secuencia de entrada en los embeddings de posición. Seleccionados en el rango[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opcional) — Estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que se pueden usar para acelerar la decodificación secuencial. Esto generalmente consiste en lapast_key_valuesdevuelta por el modelo en una etapa anterior de la decodificación, cuandouse_cache=Trueoconfig.use_cache=True.Solo se permite una instancia de Cache como entrada, consulte nuestra guía de caché kv. Si no se pasan
past_key_values, DynamicCache se inicializará de forma predeterminada.El modelo generará el mismo formato de caché que se proporciona como entrada.
Si se utilizan
past_key_values, se espera que el usuario introduzca únicamente losinput_idsno procesados (aquellos que no tienen sus estados de clave y valor pasados proporcionados a este modelo) con forma(batch_size, unprocessed_length)en lugar de todos losinput_idscon forma(batch_size, sequence_length). - inputs_embeds (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo. - vision_feature_layer (
Union[int, list[int]], opcional) — El índice de la capa de la que seleccionar la característica visual. Si se proporcionan varios índices, las características visuales de los índices correspondientes se concatenarán para formar las características visuales. - vision_feature_select_strategy (
str, opcional) — La estrategia de selección de características utilizada para seleccionar la característica visual del backbone visual. Puede ser"default"o"full". - mm_encoder_outputs (
dict[str, ~modeling_outputs.BaseModelOutputWithPooling], opcional) — Diccionario donde las claves son las modalidades admitidas y los valores son las salidas codificadas para esa modalidad. Cada salida codificada es una tupla que consiste en (pooler_output, opcional:last_hidden_states, opcional:hidden_states, opcional:attentions)pooler_outputde forma(batch_size, sequence_length, hidden_size), opcional) es una secuencia de características multimodales del codificador fusionadas en las incrustaciones de texto.
Devuelve
QianfanOCRModelOutputWithPast o tuple(torch.FloatTensor)
Un QianfanOCRModelOutputWithPast o una tupla de
torch.FloatTensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (QianfanOCRConfig) y las entradas.
El método forward de QianfanOCRModel sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
last_hidden_state (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del modelo.Si se utiliza
past_key_values, solo se genera el último hidden-state de las secuencias con forma(batch_size, 1, hidden_size).past_key_values (
Cache, opcional, se devuelve cuando se pasause_cache=Trueo cuandoconfig.use_cache=True) — Es una instancia de Cache. Para más detalles, consulta nuestra guía de caché kv.Contiene estados ocultos precalculados (claves y valores en los bloques de autoatención y, opcionalmente, si
config.is_encoder_decoder=True, en los bloques de atención cruzada) que pueden utilizarse (véase la entradapast_key_values) para acelerar la decodificación secuencial.hidden_states (
tuple(torch.FloatTensor), opcional, se devuelve cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
attentions (
tuple(torch.FloatTensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
image_hidden_states (
torch.FloatTensor, opcional) — Untorch.FloatTensorde tamaño(batch_size, num_images, sequence_length, hidden_size). image_hidden_states del modelo generado por el codificador de visión y después de proyectar el último estado oculto.
QianfanOCRForConditionalGeneration
clase transformers.QianfanOCRForConditionalGeneration
< source >( config: QianfanOCRConfig )
Parámetros
- config (QianfanOCRConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
El modelo QIANFAN_OCR, que consta de un backbone de visión y un modelo de lenguaje.
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.FloatTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonevision_feature_layer: int | list[int] | None = Nonevision_feature_select_strategy: str | None = Nonelabels: typing.Optional[torch.LongTensor] = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0image_sizes: typing.Optional[torch.Tensor] = Nonemm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → QianfanOCRCausalLMOutputWithPast or tuple(torch.FloatTensor)
Parámetros
- input_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada.Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.
- pixel_values (
torch.FloatTensorde forma(batch_size, num_channels, image_size, image_size), opcional) — Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener utilizando GotOcr2ImageProcessor. Consulte GotOcr2ImageProcessor.call() para más detalles (QianfanOCRProcessor utiliza GotOcr2ImageProcessor para procesar las imágenes). - attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en[0, 1]:- 1 para los tokens que no están enmascarados,
- 0 para los tokens que están enmascarados.
- position_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de las posiciones de los tokens de cada secuencia de entrada en los embeddings de posición. Seleccionados en el rango[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opcional) — Estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que se pueden usar para acelerar la decodificación secuencial. Esto generalmente consiste en lapast_key_valuesdevuelta por el modelo en una etapa anterior de la decodificación, cuandouse_cache=Trueoconfig.use_cache=True.Solo se permite una instancia de Cache como entrada, consulte nuestra guía de caché kv. Si no se pasan
past_key_values, DynamicCache se inicializará de forma predeterminada.El modelo generará el mismo formato de caché que se proporciona como entrada.
Si se utilizan
past_key_values, se espera que el usuario introduzca únicamente losinput_idsno procesados (aquellos que no tienen sus estados de clave y valor pasados proporcionados a este modelo) con forma(batch_size, unprocessed_length)en lugar de todos losinput_idscon forma(batch_size, sequence_length). - inputs_embeds (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo. - vision_feature_layer (
Union[int, list[int]], opcional) — El índice de la capa de la que seleccionar la característica visual. Si se proporcionan varios índices, las características visuales de los índices correspondientes se concatenarán para formar las características visuales. - vision_feature_select_strategy (
str, opcional) — La estrategia de selección de características utilizada para seleccionar la característica visual del backbone visual. Puede ser"default"o"full". - labels (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Etiquetas para calcular la pérdida de modelado de lenguaje enmascarado. Los índices deben estar en[0, ..., config.vocab_size]o ser -100 (ver la docstring deinput_ids). Los tokens con índices establecidos en-100se ignoran (enmascarados); la pérdida solo se calcula para los tokens con etiquetas en[0, ..., config.vocab_size]. - logits_to_keep (
Union[int, torch.Tensor], opcional, valor predeterminado0) — Si es unint, calcula los logits para los últimoslogits_to_keeptokens. Si es0, calcula los logits para todos losinput_ids(caso especial). Solo se necesitan los logits del último token para la generación, y calcularlos solo para ese token puede ahorrar memoria, lo cual se vuelve bastante significativo para secuencias largas o un tamaño de vocabulario grande. Si es untorch.Tensor, debe ser de 1D y corresponder a los índices a conservar en la dimensión de longitud de secuencia. Esto es útil al usar el formato de tensor empaquetado (una sola dimensión para el lote y la longitud de secuencia). - image_sizes (
torch.Tensorde forma(batch_size, 2), opcional) — Los tamaños de las imágenes del lote, siendo (altura, ancho) para cada imagen. - mm_encoder_outputs (
dict[str, ~modeling_outputs.BaseModelOutputWithPooling], opcional) — Diccionario donde las claves son las modalidades admitidas y los valores son las salidas codificadas para esa modalidad. Cada salida codificada es una tupla que consiste en (pooler_output, opcional:last_hidden_states, opcional:hidden_states, opcional:attentions)pooler_outputde forma(batch_size, sequence_length, hidden_size), opcional) es una secuencia de características multimodales del codificador fusionadas en las incrustaciones de texto.
Devuelve
QianfanOCRCausalLMOutputWithPast o tuple(torch.FloatTensor)
Un QianfanOCRCausalLMOutputWithPast o una tupla de
torch.FloatTensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (QianfanOCRConfig) y las entradas.
El método forward de QianfanOCRForConditionalGeneration sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
loss (
torch.FloatTensorde forma(1,), opcional, devuelta cuando se proporcionalabels) — Pérdida de modelado de lenguaje (para la predicción del siguiente token).logits (
torch.FloatTensorde forma(batch_size, sequence_length, config.vocab_size)) — Puntuaciones de predicción de la cabeza de modelado de lenguaje (puntuaciones para cada token del vocabulario antes de SoftMax).past_key_values (
Cache, opcional, se devuelve cuando se pasause_cache=Trueo cuandoconfig.use_cache=True) — Es una instancia de Cache. Para más detalles, consulta nuestra guía de caché kv.Contiene estados ocultos precalculados (claves y valores en los bloques de autoatención) que pueden utilizarse (véase la entrada
past_key_values) para acelerar la decodificación secuencial.hidden_states (
tuple[torch.FloatTensor], opcional, se devuelve cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
attentions (
tuple[torch.FloatTensor], opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
image_hidden_states (
torch.FloatTensor, opcional) — Untorch.FloatTensorde tamaño(batch_size, num_images, sequence_length, hidden_size). image_hidden_states del modelo generado por el codificador de visión y después de proyectar el último estado oculto.
Ejemplo:
>>> import torch
>>> from transformers import AutoProcessor, AutoModelForImageTextToText
>>> torch_device = "cuda"
>>> processor = AutoProcessor.from_pretrained("baidu/Qianfan-OCR")
>>> model = AutoModelForImageTextToText.from_pretrained(
... "baidu/Qianfan-OCR", dtype=torch.bfloat16, device_map=torch_device
... )
>>> messages = [
... {
... "role": "user",
... "content": [
... {"type": "image", "url": "https://example.com/image.jpg"},
... {"type": "text", "text": "Describe this image."},
... ],
... },
... ]
>>> inputs = processor.apply_chat_template(messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt").to(torch_device)
>>> generate_ids = model.generate(**inputs, max_new_tokens=200)
>>> print(processor.decode(generate_ids[0, inputs["input_ids"].shape[1] :], skip_special_tokens=True))