Comment extraire les articles de ligne de facture et les tables structurées

Comment extraire les articles de ligne de facture et les tables structurées

L’extraction des éléments de ligne et des tables des factures est la clé pour l’automatisation complète des comptes payables, les audits et les analyses de dépenses. Aspose.OCR Invoice to Text for .NET vous permet de parser des données détaillées, multi-rous, multicolumnes - même des documents scannés ou photographiés.

Problème du monde réel

Les factures contiennent des tables de produits/services – leur transcription manuelle est à temps et à erreur.L’automatisation complète nécessite une extraction robuste des détails éliminés.

Vue de la solution

Utilisez l’OCR pour reconnaître les régions de table, parsez chaque ligne et colonne et exportez à des formats structurés pour ERP, BI ou d’autres analyses.

Principaux

  • Visual Studio 2019 ou ultérieur
  • .NET 6.0 ou ultérieur (ou .Net Framework 4.6.2+)
  • Aspose.OCR pour .NET de NuGet
  • Images de facture d’échantillon ou PDF avec articles de ligne / tables
PM> Install-Package Aspose.OCR

La mise en œuvre étape par étape

Étape 1 : Préparer l’image de facture / PDF

string invoiceFile = "invoice_with_items.pdf";

Étape 2 : Reconnaître les régions d’éléments de table / ligne

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;

Étape 3 : Parsez le texte reconnu dans les roues de table / colonnes

  • Utilisez la logique régée ou personnalisée pour séparer les éléments de ligne par des délimitateurs de rang/colonne
// 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.
    }
}

Étape 4 : Exporter les éléments de ligne / tableau à CSV

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

Étape 5 : Exemple complet

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));
        }
    }
}

Utiliser les cas et les applications

Analyses de dépenses et AP Automation

Extrait des dépenses ciblées pour le rapport, la prévision et l’approbation.

L’audit et la révision des factures

Audit/approbation de la ligne de courant avec des détails exportables et lisibles par machine.

Intégration du système ERP/Finances

Télécharger directement les données de table structurée dans le logiciel financier ou ERP.

Défis communs et solutions

Défi 1 : Formats de table variés

Résolution: Tune la logique de régie et de partage pour chaque fournisseur/template.

Défi 2 : erreurs de reconnaissance OCR dans les colonnes

Résolution: Utilisez l’hyuristique de la colonne, demandez des scans de haute qualité ou le drapeau pour une révision manuelle.

Défi 3 : Les colonnes perdues ou manquantes

Solution: Normaliser, diviser ou réviser rapidement sur des cas ambiguels.

Considérations de performance

  • Batch procède à plusieurs factures en parallèle
  • Log/flag parsing problèmes pour l’analyse humaine

Migliori pratiche

  • Construire une bibliothèque de regex pour les modèles connus
  • Résultats de l’échantillon pour tune parsing
  • Fichiers originaux / traités sécurisés pour l’audit
  • Mise à jour de la logique d’extraction en changeant les fournisseurs/templates

Scénarios avancés

Scénario 1: Map Line Items to ERP/Database Directement

Utilisez des appels ORM ou API pour pousser les données de table extraites.

Scénario 2 : Travailler avec des tables multi-page

Étendre la logique à parcourir les ruptures de page PDF/image.

Conclusion

Aspose.OCR Invoice to Text for .NET permet d’extraire des éléments et des tables détaillés de la ligne de facture - permettant une automation complète de l’écran/photo à des données structurées et exploitables.

Voir plus de codes d’extraction structurés dans le Aspose.OCR pour la référence API .NET .

 Français