IDP Classify
Lee un documento y dice de cuál de los tipos que le listas es. Devuelve el documento ya leído junto al veredicto, para que IDP Extract no tenga que releerlo. Y si el fichero trae varios documentos pegados, los parte en segmentos para extraer cada uno por separado.
IDP Classify path = = contenido["path"] projects = ["hoja-de-vida-equipo-biomedico", "reporte-mantenimiento"] credential = = credential("anthropic-key") → output: doc
If condition = = doc["recognized"] == false Log message = = "No es ninguno de los que conozco: " + doc["reason"]Los tipos son proyectos de extracción
Sección titulada «Los tipos son proyectos de extracción»El parámetro projects recibe los nombres de proyectos de extracción del entorno. Cada proyecto declara su tipo de documento y una descripción; eso es lo que el clasificador lee para distinguirlos. Así el mismo sitio donde configuras qué extraer define también qué tipos hay que distinguir — no se mantienen dos listas.
Parámetros
Sección titulada «Parámetros»| Parámetro | Tipo | Qué es |
|---|---|---|
path | texto | La ruta del documento. |
projects | lista | Los tipos a distinguir: nombres de proyectos de extracción del entorno. Uno solo es un caso legítimo. Para CI también acepta un JSON de resolución en línea. |
credential | credencial | Credencial de Zoan Cloud con la API key. Usa = credential("nombre"). |
model | texto | Clasificar es fácil comparado con extraer: un modelo pequeño sobra. |
mode | enum | auto, text o azure-di. |
dpi | int | El dpi en el que vendrán las cajas. Viaja con el documento hasta IDP Extract, así que se dice una vez. |
pages | texto | Qué páginas leer. Vacío = todas. |
endpoint / azureCredential | Azure Document Intelligence, solo para escaneos. |
La salida
Sección titulada «La salida»Es el documento entero —el mismo que devuelve IDP Load Document— más el veredicto y los segmentos:
| Campo | Qué es |
|---|---|
documentType | El tipo, o unknown. |
recognized | false cuando el tipo es unknown. La señal para tu If: si es false, no extraigas — a cuarentena/revisión. |
reason | Qué del documento le hizo decidir, citando el texto en el que se apoyó. |
segments | Los documentos lógicos que trae el fichero, cada uno { pageStart, pageEnd, type, recognized }. Cada segmento lleva su tipo real. |
splitNeedsReview | true cuando el troceo es de baja confianza (hay páginas sin reconocer, o se partió en varios sin ninguna marca impresa). Es la señal para mandar el bundle a la estación de clasificación. |
Pásaselo tal cual a IDP Extract en su parámetro document y el fichero no se vuelve a leer.
Parte los ficheros que traen varios documentos
Sección titulada «Parte los ficheros que traen varios documentos»Un cliente entrega un solo PDF con la hoja de vida, el reporte de mantenimiento, la calibración y anexos, todo pegado. IDP Classify clasifica cada página: su tipo y si inicia un documento nuevo. Una frontera se abre cuando cambia el tipo, cuando el modelo detecta un inicio (membrete, encabezado nuevo, un campo que solo sale en la página 1) o cuando aparece la marca impresa «página 1 de N». Con eso agrupa las páginas en segments contiguos, cada uno con su tipo real.
Un fichero de un solo documento sale como un único segmento — el caso normal no cambia.
For Each segmento in = doc["segments"] IDP Extract path = = archivo project = = segmento["type"] pages = = segmento["pageStart"] + "-" + segmento["pageEnd"]Cuando el troceo no está claro: la estación de clasificación
Sección titulada «Cuando el troceo no está claro: la estación de clasificación»Partir varios documentos del mismo tipo pegados sin marca es ambiguo. Cuando la confianza es baja, IDP Classify lo señala con splitNeedsReview = true. En ese caso, en vez de extraer a ciegas, envías el bundle a la estación de clasificación con Documents Classify Bundle, una persona confirma las fronteras/tipos, y Documents Take Confirmed los extrae.
If condition = = doc["splitNeedsReview"] == true then: Documents Classify Bundle path = = archivo, reference = = archivo, segments = = doc["segments"], pages = = doc["pages"], dpi = 200 ContinueSiempre puede decir unknown
Sección titulada «Siempre puede decir unknown»El enum del clasificador incluye siempre ese valor, y no es un detalle.
Sin una salida honesta, el modelo elige el tipo menos malo de la lista — porque el esquema le obliga a elegir uno. Y un documento equivocado clasificado como bueno es el fallo caro: el grounding no lo detecta, porque verifica que el texto esté en el documento, no que el documento sea el que crees. Una factura tiene números que parecen números de serie, y saldrían localizados y con confianza alta.
Un solo proyecto es un caso normal
Sección titulada «Un solo proyecto es un caso normal»«¿Esto es una hoja de vida, sí o no?» es la pregunta más común en una cola de un solo tipo. Con un proyecto, el enum es ["hoja-de-vida-equipo-biomedico", "unknown"] — y esa segunda opción es la que hace que la pregunta tenga sentido.
Por qué va aparte de la extracción
Sección titulada «Por qué va aparte de la extracción»Porque qué hacer con un documento que no toca es una decisión del playbook. Una actividad que decide sola no hacer su trabajo esconde el control de flujo, y además impide clasificar una vez y enrutar al proyecto que corresponda — que es el caso real de una cola con documentos mezclados.
Es el mismo diseño que UiPath (Classify Document → Extract Document Data), y por la misma razón.
Lo que ahorra
Sección titulada «Lo que ahorra»Clasificar cuesta una llamada corta: entran las páginas, salen el veredicto y los segmentos. Extraer cuesta una sola llamada por documento (todos los campos de una).
Sobre una hoja de vida de 3 páginas, clasificar cuesta unos $0,003 y extraer unos $0,041. Descartar antes de extraer ahorra el 95 % del coste de un documento equivocado — y evita meter datos plausibles y falsos en tu sistema.
Actividades relacionadas
Sección titulada «Actividades relacionadas»- IDP Extract — extraer, una vez sabes que es el que toca
- IDP Build Classifier — el esquema suelto, si montas el pipeline a mano