- Introducción
- Primeros pasos
- Modelado de procesos con BPMN
- Comprender el modelado del proceso
- Abrir el lienzo de modelado
- Modelar tu proceso
- Alinear y conectar elementos BPMN
- Autopilot para Maestro (vista previa)
- Repositorio de procesos
- Modelado de procesos con gestión de casos
- Diseñar un esquema de entidad de caso persistente
- Definir claves de caso (de sistema o externo)
- Establecer contratos de entrada/salida y de escritura diferida de tareas
- Reglas de salida y terminación temprana de etapas
- Modelar las etapas principal y secundaria
- Iniciar un caso desde Data Fabric
- Implementar perfiles y permisos a nivel de etapa
- Establecer SLA y reglas de escalado automatizadas
- Configurar un bucle de reprocesamiento (reingreso)
- Gestionar instancias de casos en ejecución: pausar, migrar y reintentar
- Diccionario de componentes de la gestión de casos de Maestro
- Modelado de procesos con Flow
- Nodos del conector
- Implementación del proceso
- Depuración
- Simular
- Publicar y actualizar procesos de agente
- Escenarios de implementación comunes
- Extracción y validación de documentos
- Operaciones de proceso
- Supervisión de procesos
- Optimización de procesos
- Información de referencia
Extrae campos estructurados de documentos utilizando modelos de extracción de Extracción y Procesamiento Inteligentes (IXP).
El nodo Extraer extrae campos estructurados de un documento (una factura, recibo, formulario o contrato) utilizando un modelo de UiPath Intelligent eXtraction Platform (IXP) y devuelve el resultado para que los nodos posteriores actúen. Úsalo cuando un paso de tu proceso necesite datos escritos extraídos de un archivo no estructurado.
Antes de empezar: implementar un modelo de Extracción y Procesamiento Inteligentes (IXP)
El nodo Extraer no tiene un extractor integrado propio. Muestra los modelos de Extracción y Procesamiento Inteligentes (IXP) implementados en tu organización, por lo que debes implementar al menos un modelo de extracción de Extracción y Procesamiento Inteligentes (IXP) antes de que aparezca cualquier opción en el nodo.
- Crea e implementa un modelo en Extracción y Procesamiento Inteligentes (IXP). Consulta la documentación de Extracción y Procesamiento Inteligentes (IXP) para obtener más información.
- El modelo debe implementarse en una carpeta a la que puedas acceder. Los modelos se enumeran por su nombre completo,
<Folder>/<ModelName>(por ejemplo,Shared/Finance/invoice-extraction). - Si no se implementa ningún modelo, la categoría Extraer aparece en la paleta, pero está vacía.
Tu tenant también debe tener habilitados tanto los servicios de Extracción y Procesamiento Inteligentes ( IXP) como los de Document Understanding (Admin → Tenant → Servicios). El nodo Extraer depende de que ambos estén aprovisionados, incluso cuando solo utilizas modelos de Extracción y Procesamiento Inteligentes (IXP).
Cómo funciona
Los modelos de extracción se cargan dinámicamente desde tu organización, de la misma manera que los nodos conectores se cargan desde Integration Service. En la paleta de nodos, los modelos implementados aparecen en Procesamiento de documentos → Extraer, cada uno como su propio nodo. Al añadir uno al lienzo se crea un nodo Extraer vinculado a ese modelo específico.
Cuando el nodo se ejecuta, Flow envía el documento al modelo de Extracción y Procesamiento Inteligentes (IXP), el modelo lo digitaliza y extrae, y el resultado estructurado se devuelve en el output del nodo. La extracción se ejecuta de forma asíncrona: el nodo espera a que el modelo finalice antes de continuar, así que deja tiempo para los documentos grandes.
Configuración
Configura el nodo Extraer en el panel de propiedades después de añadirlo al lienzo.
| Campo | Obligatorio | Predeterminado | Descripción |
|---|---|---|---|
| Modelo | Sí | Modelo seleccionado | Modelo de Extracción y Procesamiento Inteligentes (IXP) implementado para ejecutar. Esto se establece cuando añades el nodo desde la paleta, y la carpeta y la versión del modelo se vinculan automáticamente. |
| Documento | Sí | Ninguno | Archivo del que extraer. Vincúlalo a un archivo producido anteriormente en el flujo, como un archivo adjunto de un desencadenador o una salida de nodo anterior. |
| Intervalo de páginas | No | Vacío | Páginas de las que extraer, por ejemplo 1-3. Déjalo vacío para procesar todo el documento. |
Salida
El nodo Extraer devuelve su resultado en $vars.<nodeName>.output.
| Variable | Descripción |
|---|---|
output | Resultado de la extracción. Contiene un único objeto ExtractionResult con metadatos del documento, campos extraídos y puntuaciones de confianza por campo. La forma se detalla en Leer el resultado. |
error | Detalles del error cuando el nodo falla. Contiene code, message, detail, category y status. Disponible cuando el manejador de errores del nodo está conectado. |
Leer el resultado
El resultado de la extracción es una estructura anidada. Los campos extraídos se encuentran en ExtractionResult.ResultsDocument.Fields, y el valor de cada campo está en una matriz Values , no directamente en el campo:
$vars.<nodeName>.output = {
ExtractionResult: {
DocumentId: "<id>",
ResultsVersion: 0,
ResultsDocument: {
DocumentTypeField: { Value: "Invoice", Confidence: 1.0, OcrConfidence: -1.0 },
Fields: [
{
FieldId: "Test.Financial.Invoice.Total", // model-qualified id
FieldName: "Total", // leaf label, use this for lookups
FieldType: "Text",
IsMissing: false,
Values: [
{ Value: "12.57", Confidence: 0.604, OcrConfidence: 0.604, Components: [], Reference: {} }
]
}
// ...one entry per field in the model schema
]
}
}
}
$vars.<nodeName>.output = {
ExtractionResult: {
DocumentId: "<id>",
ResultsVersion: 0,
ResultsDocument: {
DocumentTypeField: { Value: "Invoice", Confidence: 1.0, OcrConfidence: -1.0 },
Fields: [
{
FieldId: "Test.Financial.Invoice.Total", // model-qualified id
FieldName: "Total", // leaf label, use this for lookups
FieldType: "Text",
IsMissing: false,
Values: [
{ Value: "12.57", Confidence: 0.604, OcrConfidence: 0.604, Components: [], Reference: {} }
]
}
// ...one entry per field in the model schema
]
}
}
}
Para leer el valor de un solo campo en un nodo de Script posterior, alcanza ExtractionResult.ResultsDocument.Fields, busca el campo por su FieldName y lee Values[0].Value:
const value =
$vars.extract1.output
?.ExtractionResult?.ResultsDocument?.Fields
?.find((f) => f.FieldName === "Total")
?.Values?.[0]?.Value;
const value =
$vars.extract1.output
?.ExtractionResult?.ResultsDocument?.Fields
?.find((f) => f.FieldName === "Total")
?.Values?.[0]?.Value;
Dado que los nombres de campo llevan espacios y mayúsculas y minúsculas del esquema del modelo (Invoice No., Vendor Name), una búsqueda normalizada es más sólida:
const fields = $vars.extract1.output?.ExtractionResult?.ResultsDocument?.Fields || [];
const norm = (s) => String(s || "").toLowerCase().replace(/\s+/g, "");
const get = (name) => {
const f = fields.find((x) => norm(x.FieldName) === norm(name));
return f && Array.isArray(f.Values) && f.Values[0] ? f.Values[0].Value : undefined;
};
const total = get("Total");
const vendor = get("Vendor Name");
const fields = $vars.extract1.output?.ExtractionResult?.ResultsDocument?.Fields || [];
const norm = (s) => String(s || "").toLowerCase().replace(/\s+/g, "");
const get = (name) => {
const f = fields.find((x) => norm(x.FieldName) === norm(name));
return f && Array.isArray(f.Values) && f.Values[0] ? f.Values[0].Value : undefined;
};
const total = get("Total");
const vendor = get("Vendor Name");
Error común: leer Fields.find((f) => f.FieldName === "Total").Value devuelve undefined. Los campos se encuentran debajo de ResultsDocument.Fields (un nivel más profundo que ExtractionResult), y el valor reside en la matriz Values , no en el campo directamente. Los ejemplos copiados de flujos de trabajo heredados de Document Understanding utilizan una forma más plana y no funcionarán aquí.
Campos faltantes
Un campo que el modelo no pudo encontrar tiene IsMissing: true y una matriz Values vacía o nula. Protege siempre con Values?.[0] (como hacen los fragmentos anteriores) para que un campo faltante se lea como undefined en lugar de arrojar.
Puntuaciones de confianza
Cada valor extraído lleva un Confidence y un OcrConfidence, ambos flotantes de 0 a 1 donde mayor es más seguro. Se encuentran en el objeto de valor, en Values[0].Confidence. Un valor de -1.0 es un centinela que significa "no aplicable" (por ejemplo, en las filas de encabezado de la tabla), así que fíltralos antes de comparar. Utiliza un nodo de decisión para enrutar extracciones de baja confianza a una tarea humana para su revisión.
Campos de la tabla
Un campo cuya FieldType es Table mantiene sus filas bajo Values, no la forma escalar de arriba. Cada valor de la tabla lleva una matriz Components (una fila Header y una fila Body ), y cada componente, a su vez, contiene los campos de la celda bajo su propio Components, cada uno con el familiar Values[0].Value. Camine Components de forma recursiva para llegar a las celdas individuales.
Administración de errores
El nodo Extraer admite un controlador de error. Si la extracción falla y el identificador de errores está conectado, la ejecución enruta a la ruta de error con el objeto de error en $vars.<nodeName>.error. Consulta Gestión de errores para obtener más información.
Notas
- La lista de modelos en la categoría Extraer refleja lo que se implementa en tu organización en tiempo de diseño. Implementa o vuelve a implementar un modelo en Extracción y Procesamiento Inteligentes (IXP) y luego vuelve a abrir la paleta para ver el cambio.
- Los valores de campo son siempre cadenas en
Values[0].Value, incluso para fechas y números. El modelo también puede devolver partes analizadas enDerivedFields(por ejemplo,Year,Month,Dayen una fecha, oCityyCountryen una dirección).