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 .