Ir al contenido

OCR Extract Table

Tipo: ocr-extract-table  ·  Paquete: OCR Activities v1.2.5  ·  Salida: DataTable

Desde: v1.2.0

Detecta una tabla dentro de una imagen, agrupando las palabras reconocidas en filas y columnas según su posición, y la devuelve como una DataTable. Útil para extraer un listado tabular de un documento escaneado (un detalle de factura, un cuadro de datos).

Ejecuta OCR sobre la imagen (por defecto con preprocess = "auto") y, a partir de las coordenadas de cada palabra, reconstruye la tabla:

  1. Filas: cada línea reconocida es una fila.
  2. Columnas: busca las posiciones horizontales donde empiezan palabras de forma repetida en el documento (agrupando inicios a menos de 25 px entre sí) y las usa como columnas. Una posición cuenta como columna si al menos 2 palabras empiezan ahí (o tantas como la cuarta parte del número de líneas, en documentos largos).
  3. Cada palabra va a la columna que empieza justo antes de ella; varias palabras en la misma celda se unen con un espacio.
  4. Descarta las filas con menos celdas llenas que minColumns (títulos, pies, texto suelto).
  5. Con hasHeader = true, la primera fila que queda da los nombres de columna.
ParámetroTipoPor defectoDescripción
pathstring—Ruta del archivo de imagen (.png, .jpg, .bmp, .tiff).
ParámetroTipoPor defectoDescripción
languagestring"eng"Idioma del texto: código de Tesseract (eng, spa, eng+spa) o etiqueta regional (es-CO). Ver idioma.
preprocessstring"auto"Limpieza previa: none · auto · deskew · binarize. Ver preprocesado.
hasHeaderbooltrueTratar la primera fila detectada como nombres de columna.
minColumnsint2Descartar filas con menos celdas llenas que este número. Valores menores que 1 se tratan como 1.

Devuelve una DataTable con todas las celdas como texto:

  • Columnas: con hasHeader = true, los textos de la primera fila; un encabezado vacío se llama ColN y uno repetido recibe un sufijo (Valor, Valor_2). Con hasHeader = false, Col1, Col2…
  • Filas: las demás filas detectadas; las celdas sin palabra quedan vacías.
  • Sin texto o sin filas válidas: una DataTable vacía (sin columnas ni filas). Compruébalo con rowCount(tabla) == 0.
OCR Extract Table path = rutaEscaneo language = "spa" minColumns = 3 → output: tabla
If condition = rowCount(tabla) == 0
└─ then:
Throw message = "No se detectó ninguna tabla en la imagen"
For Each items = tabla itemVariable = fila
└─ activities:
Log message = str(fila["Descripción"]) + " — " + str(fila["Valor"])
MensajeCausa y solución
No se encontró el archivo.La ruta de path no existe en la máquina del robot.
'path' es obligatorio.Falta path.
No se encontró el idioma de Tesseract '…' en '…'. Disponibles: [eng, spa].El código de language no está instalado.
No se pudo leer la imagen.El archivo no es una imagen válida o está dañado (el preprocesado está activo por defecto).
Error al leer una columna inexistente en un paso siguienteLos nombres de columna salen del OCR y pueden variar (acentos, mayúsculas). Revisa tabla.Columns o usa hasHeader = false y accede por Col1, Col2.
  • OCR Get Lines — las líneas y coordenadas crudas, para un control fino.
  • DataTable — filtrar, ordenar y resumir la tabla extraída.
  • PDF Get Text — para documentos con texto real.