Cómo extraer artículos de línea de factura y tablas estructuradas

Cómo extraer artículos de línea de factura y tablas estructuradas

La extracción de artículos de línea y tablas de las facturas es clave para la completa automatización de cuentas pagables, auditorías y análisis de gastos. Aspose.OCR Invoice to Text for .NET le permite parse datos detallados, multi-ro, múltiples columnas, incluso de documentos escaneados o fotografiados.

Problemas del mundo real

Las facturas contienen tablas de productos/servicios—transcribiendo manualmente estos es tiempo-consumo y error-prote.La automatización completa requiere una robusta extracción de detalles itemizados.

Revisión de Soluciones

Utilice OCR para reconocer las regiones de la tabla, parse cada línea y columna, y exportar a formatos estructurados para ERP, BI, o análisis adicional.

Prerequisitos

  • Visual Studio 2019 o más tarde
  • .NET 6.0 o posterior (o .Net Framework 4.6.2+)
  • Aspose.OCR para .NET de NuGet
  • Imágenes de factura de muestra o PDFs con elementos de línea/tables
PM> Install-Package Aspose.OCR

Implementación paso a paso

Paso 1: Preparar la imagen de la factura/PDF

string invoiceFile = "invoice_with_items.pdf";

Paso 2: Reconocer las regiones de tabla / línea de elementos

using Aspose.OCR;
InvoiceRecognitionSettings settings = new InvoiceRecognitionSettings();
settings.Language = Language.English;
AsposeOcr ocr = new AsposeOcr();
OcrInput input = new OcrInput(InputType.PDF);
input.Add(invoiceFile);
List<RecognitionResult> results = ocr.RecognizeInvoice(input, settings);
string fullText = results[0].RecognitionText;

Paso 3: Parse el texto reconocido en las columnas de la tabla

  • Utilice la lógica regex o personalizada para dividir los elementos de línea por los delimitadores de la línea/columna
// Example: Split into lines, then columns (simplified)
string[] lines = fullText.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var line in lines)
{
    if (Regex.IsMatch(line, @"\d+\s+[A-Za-z].*\s+\d+[.,]\d{2}")) // crude line item match
    {
        string[] columns = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
        // Map columns: SKU, description, qty, price, total, etc.
    }
}

Paso 4: Exportación de los elementos de línea / tabla a CSV

using (var writer = new StreamWriter("invoice_lineitems.csv"))
{
    writer.WriteLine("SKU,Description,Qty,UnitPrice,Total");
    // Loop and write line items parsed above
}

Paso 5: El ejemplo completo

using Aspose.OCR;
using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        string invoiceFile = "invoice_with_items.pdf";
        InvoiceRecognitionSettings settings = new InvoiceRecognitionSettings();
        settings.Language = Language.English;
        AsposeOcr ocr = new AsposeOcr();
        OcrInput input = new OcrInput(InputType.PDF);
        input.Add(invoiceFile);
        List<RecognitionResult> results = ocr.RecognizeInvoice(input, settings);
        string fullText = results[0].RecognitionText;
        var lineItems = new List<string[]>();
        string[] lines = fullText.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
        foreach (var line in lines)
        {
            if (Regex.IsMatch(line, @"\d+\s+[A-Za-z].*\s+\d+[.,]\d{2}"))
                lineItems.Add(line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries));
        }
        using (var writer = new StreamWriter("invoice_lineitems.csv"))
        {
            writer.WriteLine("SKU,Description,Qty,UnitPrice,Total");
            foreach (var item in lineItems)
                writer.WriteLine(string.Join(",", item));
        }
    }
}

Usar Casos y Aplicaciones

Análisis y AP Automation

Extracto de los gastos apuntados para la información, la previsión y la aprobación.

Auditoría y revisión de facturas

Auditoría/aprobación de la línea de flujo con detalles exportables, leibles por máquina.

ERP/Integración del Sistema Financiero

Cargar directamente los datos de tabla estructurados en software financiero o ERP.

Desafíos y soluciones comunes

Desafío 1: Formatos de mesa variados

Solución: Tune la lógica de regex y parsing para cada proveedor/template.

Desafío 2: Errores de reconocimiento de OCR en columnas

Solución: Utilice heurísticas de columnas, solicite escaneos de alta calidad, o bandera para la revisión manual.

Desafío 3: Columnas perdidas o desaparecidas

**Solución: ** Normalizar, dividir o revisar rápidamente en casos ambiguos.

Consideraciones de rendimiento

  • Batch procesando múltiples facturas en paralelo
  • Log/flag parsing problemas para la revisión humana

Mejores Prácticas

  • Construcción de la biblioteca regex para los templos conocidos
  • Revisión de las muestras de salida para toner parsing
  • Archivos originales/procesados seguros para auditoría
  • Actualizar la lógica de extracción a medida que los proveedores/templates cambian

Escenarios avanzados

Escenario 1: Map Line Items to ERP/Database Directly

Utilice las llamadas ORM o API para pulsar los datos de tabla extraídos.

Escenario 2: Manejar tablas multipáginas

Extender la lógica a parse a través de las brechas de la página PDF/imagen.

Conclusión

Aspose.OCR Invoice to Text for .NET permite extraer elementos y tablas detallados de la línea de factura, lo que permite la automatización completa de escaneamiento/foto a datos estructurados y operables.

Ver más código de extracción estructurado en el Aspose.OCR para .NET API Referencia .

 Español