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 .