Passer au contenu du pied de page
UTILISATION D'IRONOCR

API OCR pour les factures (Tutoriel pour développeurs)

L'API OCR de factures automatise l'extraction des données de factures grâce à l'apprentissage automatique, éliminant les erreurs de saisie manuelle tout en capturant avec précision les informations sur les fournisseurs, les numéros de factures et les prix à partir de documents numériques et numérisés. Ce tutoriel explique comment créer une solution OCR pour factures avec IronOCR.

En tirant parti de l'apprentissage automatique et de la vision par ordinateur, la technologie OCR de factures transforme les données des factures en formats prêts pour un traitement automatisé. Vous apprendrez à surmonter les difficultés courantes telles que les retards, les coûts et les erreurs liés à la saisie manuelle des données, tout en extrayant avec précision les informations sur les fournisseurs, les numéros de facture et les prix à partir de n'importe quel format de facture.

Cet article utilise IronOCR , une API OCR de pointe pour les factures destinée aux développeurs .NET.

Qu'est-ce qu'IronOCR ?

IronOCR, développé par Iron Software, fournit des outils OCR complets pour les développeurs. Il utilise l'apprentissage automatique et la vision par ordinateur pour extraire le texte de documents numérisés, d'images et de fichiers PDF, permettant ainsi un traitement automatisé. Ses API s'intègrent parfaitement à divers langages et plateformes, réduisant ainsi les erreurs de saisie manuelle de données et améliorant l'efficacité. Les données extraites sont directement intégrées aux systèmes existants pour analyse et prise de décision. Des fonctionnalités telles que le prétraitement d'images , la reconnaissance de codes-barres et l'analyse flexible des fichiers renforcent sa polyvalence. IronOCR permet aux développeurs d'intégrer une reconnaissance de texte robuste dans leurs applications.

La bibliothèque prend en charge 125 langues internationales grâce à des modules linguistiques spécialisés, ce qui la rend idéale pour le traitement des factures internationales. Parmi les fonctionnalités avancées, on trouve la vision par ordinateur pour la détection automatique de texte , particulièrement utile pour les factures aux mises en page variées. De plus, IronOCR offre des capacités de traitement multithread pour gérer efficacement le traitement de volumes importants de factures.

Pourquoi utiliser IronOCR pour le traitement des factures ?

IronOCR offre des avantages considérables pour les applications de traitement des factures. Tout d'abord, il offre une précision exceptionnelle grâce à son moteur Tesseract 5 optimisé, spécialement conçu pour les applications .NET. La bibliothèque prend en charge différents formats de factures, des documents numérisés aux fichiers PDF , et même les numérisations de faible qualité .

Les filtres d'optimisation d'image intégrés améliorent automatiquement la qualité de l'image avant traitement, ce qui permet une extraction de texte plus précise. Pour les factures présentant des exigences spécifiques, IronOCR prend en charge l'apprentissage linguistique personnalisé , permettant une optimisation pour les polices ou formats uniques couramment rencontrés dans vos types de factures.

Qu'est-ce qui différencie IronOCR des autres bibliothèques OCR ?

IronOCR se distingue par sa capacité de reconnaissance optique de caractères (OCR) simple sur une seule ligne, tout en conservant des fonctionnalités de niveau entreprise. Contrairement aux implémentations Tesseract brutes, IronOCR fournit une API .NET gérée qui gère les opérations complexes de manière transparente. La bibliothèque propose des méthodes de lecture de documents spécialisées pour différents types de documents, notamment une assistance dédiée à la lecture des tableaux dans les documents , essentielle pour les lignes de factures.

L' assistant de filtrage détermine automatiquement les meilleurs paramètres de prétraitement pour vos images de factures spécifiques, éliminant ainsi les conjectures en matière d'optimisation. IronOCR offre également des fonctionnalités de débogage complètes, permettant aux développeurs de visualiser ce que voit le moteur OCR et de résoudre efficacement les problèmes d'extraction.

Quels sont les prérequis ?

Avant d'utiliser IronOCR, assurez-vous que les prérequis suivants sont remplis :

  1. Un environnement de développement approprié, avec un EDI tel que Visual Studio, installé.
  2. Connaissance de base de la programmation C# pour comprendre et modifier efficacement les exemples de code.
  3. Bibliothèque IronOCR installée dans votre projet via le gestionnaire de packages NuGet ou en ligne de commande

Le respect de ces prérequis vous préparera à utiliser IronOCR avec succès.

IronOCR fournit des guides d'installation complets pour Windows , Linux et macOS . La bibliothèque prend en charge le déploiement dans le cloud avec des tutoriels spécifiques pour AWS Lambda et Azure Functions .

Quelle version de Visual Studio dois-je utiliser ?

IronOCR prend en charge les versions de Visual Studio de 2017 jusqu'aux versions les plus récentes. Pour une compatibilité optimale et un accès aux fonctionnalités C# les plus récentes, Visual Studio 2019 ou 2022 est recommandé. La bibliothèque est entièrement compatible avec .NET Framework, .NET Core et .NET 5+ , garantissant ainsi une grande flexibilité dans votre environnement de développement.

Pour le développement multiplateforme, Visual Studio Code avec l'extension C# fonctionne bien. Les développeurs mobiles peuvent tirer parti des conseils d'IronOCR pour les implémentations Android et iOS , ce qui le rend adapté aux applications .NET MAUI .

Quel niveau de connaissance en C# me faut-il ?

Une connaissance intermédiaire du C# suffit pour la mise en œuvre de base de la reconnaissance optique de caractères (OCR) sur les factures. Vous devriez être à l'aise avec :

La conception intuitive de l'API d'IronOCR signifie qu'une expertise approfondie en traitement d'images ou en apprentissage automatique n'est pas nécessaire. La bibliothèque gère en interne les opérations complexes, vous permettant ainsi de vous concentrer sur la logique métier. Les débutants peuvent commencer par des exemples OCR simples .

Comment créer un nouveau projet Visual Studio ?

Pour commencer avec IronOCR, créez d'abord un nouveau projet Visual Studio.

Ouvrez Visual Studio, allez dans Fichiers, survolez Nouveau et cliquez sur Projet.

! L'environnement de développement intégré Visual Studio affiche le menu Fichier ouvert avec les options " Nouveau " et " Projet " mises en évidence, illustrant la première étape de la création d'un nouveau projet d'API OCR pour factures. Nouveau Projet

Dans la nouvelle fenêtre, sélectionnez Application console et cliquez sur Suivant.

La boîte de dialogue " Créer un projet " de Visual Studio affiche différents modèles de projet, l'option " Application console " étant mise en évidence pour la création d'une application en ligne de commande .NET Core adaptée au traitement OCR des factures. Application Console

Une nouvelle fenêtre apparaît. Saisissez le nom et l'emplacement de votre projet, puis cliquez sur Suivant.

! Fenêtre de configuration d'un nouveau projet Visual Studio affichant la configuration d'un projet d'application console nommée " IronOCR " avec la sélection du langage C# et de la plateforme cible Windows pour l'implémentation de l'API OCR de factures Configuration du Projet

Enfin, sélectionnez le framework cible et cliquez sur Créer.

L'assistant de création de projet Visual Studio affiche l'étape " Informations supplémentaires " avec le framework .NET 5.0 sélectionné pour une compatibilité optimale avec IronOCR dans l'application de traitement des factures. Framework Cible

Votre nouveau projet Visual Studio est prêt. Installons IronOCR.

Quel type de projet convient le mieux aux applications OCR ?

Bien que ce tutoriel utilise une application console par souci de simplicité, IronOCR prend en charge différents types de projets :

  • Applications console : Idéales pour le traitement par lots ou les outils en ligne de commande
  • Applications Web : Idéales pour créer des API ou des services Web
  • Windows Forms/WPF : Convient aux applications de bureau avec interface graphique.
  • Applications .NET MAUI : Pour des solutions multiplateformes

Pour le traitement de volumes importants, envisagez d'implémenter IronOCR dans une architecture de service Windows ou de microservices. Les fonctionnalités de suivi des progrès de la bibliothèque facilitent la surveillance des opérations de longue durée.

Quelle version du .NET Framework dois-je cibler ?

IronOCR offre une large compatibilité avec les versions .NET . Pour les nouveaux projets, visez .NET 6.0 ou une version supérieure pour des performances optimales et l'accès aux dernières fonctionnalités. La bibliothèque maintient une excellente compatibilité ascendante :

  • .NET Framework 4.6.2+ : Pour les applications d'entreprise existantes
  • .NET Core 3.1 : Prise en charge à long terme des déploiements stables
  • .NET 5.0+ : Framework moderne avec des performances améliorées
  • .NET Standard 2.0 : Compatibilité maximale entre les plateformes

Lors du déploiement sur des conteneurs Docker , .NET 6.0 ou version ultérieure offre des images plus petites et de meilleures performances. Pour Azure Functions , .NET 6.0 et .NET Framework sont tous deux pris en charge.

Comment installer IronOCR ?

Il existe deux méthodes simples pour télécharger et installer IronOCR :

  1. Utilisation du gestionnaire de packages NuGet de Visual Studio
  2. Utilisation de la ligne de commande de Visual Studio

Quand dois-je utiliser le gestionnaire de packages NuGet plutôt que la ligne de commande ?

Choisissez entre l'interface graphique et la ligne de commande du gestionnaire de packages NuGet en fonction de votre flux de travail :

L'interface graphique du gestionnaire de packages NuGet fonctionne de manière optimale lorsque :

  • Vous débutez avec les packages NuGet
  • Vous souhaitez parcourir les packs de langue IronOCR
  • Vous préférez une confirmation visuelle Vous gérez plusieurs colis.

La ligne de commande (console du gestionnaire de paquets) excelle lorsque :

  • Vous êtes à l'aise avec les interfaces de commande
  • Vous suivez des déploiements scriptés
  • Vous avez besoin de versions spécifiques rapidement
  • Vous utilisez des options d'installation avancées

Les deux méthodes aboutissent à des résultats identiques ; choisissez en fonction de votre confort et de vos besoins.

De quels packs de langue supplémentaires pourrais-je avoir besoin ?

IronOCR prend en charge 125 langues internationales grâce à des packs spécialisés. Pour le traitement des factures, tenez compte des points suivants :

Les modules linguistiques s'installent en même temps que le package principal IronOCR et améliorent considérablement la précision pour les textes non anglais.

Utilisation du Gestionnaire de Paquets NuGet de Visual Studio

Intégrez IronOCR à votre projet C# à l'aide du gestionnaire de packages NuGet de Visual Studio.

Accédez à Outils > Gestionnaire de packages NuGet > Gérer les packages NuGet pour la solution

L'environnement de développement intégré Visual Studio affiche l'interface du gestionnaire de packages NuGet avec les résultats de la recherche du package IronOCR, présentant les options d'installation et les détails du package pour la configuration des fonctionnalités de reconnaissance optique de caractères (OCR) des factures. Gestionnaire de paquets NuGet

Recherchez IronOCR et installez le package dans votre projet.

L'interface du gestionnaire de packages NuGet affiche IronOCR v2022.1.0 et les modules linguistiques associés, notamment les fonctionnalités OCR pour l'arabe, l'hébreu et l'espagnol, avec les numéros de version et les descriptions de chaque module de reconnaissance spécialisé. Sélectionnez le package IronOCR dans l'interface utilisateur du gestionnaire de packages NuGet.

Installez les modules linguistiques supplémentaires en utilisant la même méthode.

Utilisation de la ligne de commande Visual Studio

  1. Dans Visual Studio, accédez à Outils > Gestionnaire de packages NuGet > Console du gestionnaire de packages
  2. Saisissez cette commande dans la console du gestionnaire de packages :

    Install-Package IronOcr

La console du gestionnaire de packages de Visual Studio affiche l'exécution réussie de la commande " Install-Package IronOCR ", illustrant la méthode d'installation en ligne de commande de la bibliothèque OCR. Console du Gestionnaire de Packages

Le package se télécharge et s'installe dans votre projet actuel, prêt à l'emploi.

Comment extraire des données de factures à l'aide d'IronOCR ?

Extrayez facilement les données de vos factures avec IronOCR en utilisant seulement quelques lignes de code. Cela remplace la saisie manuelle des données et rationalise votre flux de travail.

Voici un exemple de facture pour l'extraction de texte :

Exemple de facture (INV/2023/00039) présentant les coordonnées du client, trois lignes de factures pour des services de nettoyage totalisant 80,50 $, illustrant un format de facture typique pour l'extraction par reconnaissance optique de caractères (OCR). La facture d'exemple

Extrayons toutes les données de cette facture :

using IronOcr;
using System;

// Initialize a new instance of the IronTesseract class
// This is the main OCR engine that will process our invoice
var ocr = new IronTesseract();

// Configure OCR settings for better invoice processing
ocr.Configuration.BlackListCharacters = "~`$#^*_}{]___PROTECTED_LINK_48___ method from ___PROTECTED_LINK_49___ class. Key enhancements include:

- **Image preprocessing**: ___PROTECTED_LINK_50___ corrects tilted scans; ___PROTECTED_LINK_51___ removes artifacts
- **Resolution enhancement**: Setting ___PROTECTED_LINK_52___ improves recognition
- **Character blacklisting**: Prevents common OCR misinterpretations
- **Confidence scoring**: Assesses extraction reliability

!___PROTECTED_LINK_53___
**Invoice Parser**

### How Do I Handle Different Invoice Formats?

Invoice formats vary between vendors, but IronOCR provides flexible solutions:

1. **Template-based**: Define ___PROTECTED_LINK_54___
2. **Computer vision**: Use ___PROTECTED_LINK_55___ to locate text
3. **Table extraction**: Leverage ___PROTECTED_LINK_56___ for line items
4. **Multi-format**: Process ___PROTECTED_LINK_57___, ___PROTECTED_LINK_58___, and ___PROTECTED_LINK_59___

For complex layouts, implement the ___PROTECTED_LINK_60___ which uses machine learning to identify structures automatically.

### What Are Common Extraction Patterns for Invoice Data?

Invoice data follows recognizable patterns extractable using regular expressions with OCR results:

```csharp
using IronOcr;
using System;
using System.Text.`RegularExpressions`;
using System.Collections.Generic;

public class `InvoiceDataExtractor`
{
    private readonly `IronTesseract` ocr;

    public `InvoiceDataExtractor`()
    {
        ocr = new `IronTesseract`();
        // Configure for optimal invoice reading
        `ocr.Configuration`.`ReadBarcodes` = true; // Many invoices include barcodes
        `ocr.Configuration`.`TesseractVersion` = `TesseractVersion`.Tesseract5;
    }

    public `InvoiceData` `ExtractInvoiceData`(string imagePath)
    {
        var invoiceData = new `InvoiceData`();

        using (var input = new `OcrInput`(imagePath))
        {
            // Apply filters for better accuracy
            input.`EnhanceResolution`(300);
            `input.Sharpen`();

            var result = `ocr.Read`(input);
            var text = `result.Text`;

            // Extract invoice number
            invoiceData.`InvoiceNumber` = `ExtractPattern`(text, 
                @"INV[/-]?\d{4}[/-]?\d{5}|Invoice\s*#?\s*:?\s*(\d+)");

            // Extract dates
            invoiceData.`InvoiceDate` = `ExtractDate`(text, 
                @"Invoice\s*Date\s*:?\s*(\d{1,2}[/-]\d{1,2}[/-]\d{2,4})");
            invoiceData.`DueDate` = `ExtractDate`(text, 
                @"Due\s*Date\s*:?\s*(\d{1,2}[/-]\d{1,2}[/-]\d{2,4})");

            // Extract amounts
            `invoiceData.Total` = `ExtractAmount`(text, 
                @"Total\s*:?\s*\$?\s*([\d,]+\.?\d*)");
            `invoiceData.Tax` = `ExtractAmount`(text, 
                @"Tax\s*:?\s*\$?\s*([\d,]+\.?\d*)");

            // Extract vendor information
            invoiceData.`VendorName` = `ExtractVendorName`(text);

            // Extract line items using table detection
            invoiceData.`LineItems` = `ExtractLineItems`(result);

            // Extract any barcodes found
            if (`result.Barcodes`.Length > 0)
            {
                invoiceData.`BarcodeValues` = new List<string>();
                foreach (var barcode in `result.Barcodes`)
                {
                    invoiceData.`BarcodeValues`.Add(`barcode.Value`);
                }
            }
        }

        return invoiceData;
    }

    private string `ExtractPattern`(string text, string pattern)
    {
        var match = Regex.Match(text, pattern, `RegexOptions`.`IgnoreCase`);
        return `match.Success` ? `match.Value` : `string.Empty`;
    }

    private `DateTime`? `ExtractDate`(string text, string pattern)
    {
        var match = Regex.Match(text, pattern, `RegexOptions`.`IgnoreCase`);
        if (`match.Success` && `match.Groups`.Count > 1)
        {
            if (`DateTime`.`TryParse`(`match.Groups`[1].Value, out `DateTime` date))
                return date;
        }
        return null;
    }

    private decimal `ExtractAmount`(string text, string pattern)
    {
        var match = Regex.Match(text, pattern, `RegexOptions`.`IgnoreCase`);
        if (`match.Success` && `match.Groups`.Count > 1)
        {
            var amountStr = `match.Groups`[1].Value.Replace(",", "");
            if (decimal.`TryParse`(amountStr, out decimal amount))
                return amount;
        }
        return 0;
    }

    private string `ExtractVendorName`(string text)
    {
        // Usually the vendor name appears in the first few lines
        var lines = `text.Split`('\n');
        if (`lines.Length` > 0)
        {
            // Simple heuristic: first non-empty line that's not a common header
            foreach (var line in lines)
            {
                var trimmed = `line.Trim`();
                if (!string.`IsNullOrEmpty`(trimmed) && 
                    !trimmed.`ToLower`().Contains("invoice") &&
                    `trimmed.Length` > 3)
                {
                    return trimmed;
                }
            }
        }
        return `string.Empty`;
    }

    private List<`LineItem`> `ExtractLineItems`(`OcrResult` result)
    {
        var lineItems = new List<`LineItem`>();

        // Use IronOCR's table detection capabilities
        if (`result.Tables` != null && `result.Tables`.Count > 0)
        {
            foreach (var table in `result.Tables`)
            {
                // Process each row as a potential line item
                for (int i = 1; i < table.`RowCount`; i++) // Skip header row
                {
                    var item = new `LineItem`
                    {
                        Description = table[i, 0]?.Text ?? "",
                        Quantity = `ParseQuantity`(table[i, 1]?.Text),
                        `UnitPrice` = `ParseAmount`(table[i, 2]?.Text),
                        Total = `ParseAmount`(table[i, 3]?.Text)
                    };

                    if (!string.`IsNullOrEmpty`(`item.Description`))
                        `lineItems.Add`(item);
                }
            }
        }

        return lineItems;
    }

    private int `ParseQuantity`(string text)
    {
        if (string.`IsNullOrEmpty`(text)) return 0;
        var cleaned = Regex.Replace(text, @"[^\d]", "");
        return int.`TryParse`(cleaned, out int qty) ? qty : 0;
    }

    private decimal `ParseAmount`(string text)
    {
        if (string.`IsNullOrEmpty`(text)) return 0;
        var cleaned = Regex.Replace(text, @"[^\d.]", "");
        return decimal.`TryParse`(cleaned, out decimal amt) ? amt : 0;
    }
}

// Data classes for structured invoice information
public class `InvoiceData`
{
    public string `InvoiceNumber` { get; set; }
    public `DateTime`? `InvoiceDate` { get; set; }
    public `DateTime`? `DueDate` { get; set; }
    public string `VendorName` { get; set; }
    public decimal Total { get; set; }
    public decimal Tax { get; set; }
    public List<`LineItem`> `LineItems` { get; set; }
    public List<string> `BarcodeValues` { get; set; }
}

public class `LineItem`
{
    public string Description { get; set; }
    public int Quantity { get; set; }
    public decimal `UnitPrice` { get; set; }
    public decimal Total { get; set; }
}
using IronOcr;
using System;

// Initialize a new instance of the IronTesseract class
// This is the main OCR engine that will process our invoice
var ocr = new IronTesseract();

// Configure OCR settings for better invoice processing
ocr.Configuration.BlackListCharacters = "~`$#^*_}{]___PROTECTED_LINK_48___ method from ___PROTECTED_LINK_49___ class. Key enhancements include:

- **Image preprocessing**: ___PROTECTED_LINK_50___ corrects tilted scans; ___PROTECTED_LINK_51___ removes artifacts
- **Resolution enhancement**: Setting ___PROTECTED_LINK_52___ improves recognition
- **Character blacklisting**: Prevents common OCR misinterpretations
- **Confidence scoring**: Assesses extraction reliability

!___PROTECTED_LINK_53___
**Invoice Parser**

### How Do I Handle Different Invoice Formats?

Invoice formats vary between vendors, but IronOCR provides flexible solutions:

1. **Template-based**: Define ___PROTECTED_LINK_54___
2. **Computer vision**: Use ___PROTECTED_LINK_55___ to locate text
3. **Table extraction**: Leverage ___PROTECTED_LINK_56___ for line items
4. **Multi-format**: Process ___PROTECTED_LINK_57___, ___PROTECTED_LINK_58___, and ___PROTECTED_LINK_59___

For complex layouts, implement the ___PROTECTED_LINK_60___ which uses machine learning to identify structures automatically.

### What Are Common Extraction Patterns for Invoice Data?

Invoice data follows recognizable patterns extractable using regular expressions with OCR results:

```csharp
using IronOcr;
using System;
using System.Text.`RegularExpressions`;
using System.Collections.Generic;

public class `InvoiceDataExtractor`
{
    private readonly `IronTesseract` ocr;

    public `InvoiceDataExtractor`()
    {
        ocr = new `IronTesseract`();
        // Configure for optimal invoice reading
        `ocr.Configuration`.`ReadBarcodes` = true; // Many invoices include barcodes
        `ocr.Configuration`.`TesseractVersion` = `TesseractVersion`.Tesseract5;
    }

    public `InvoiceData` `ExtractInvoiceData`(string imagePath)
    {
        var invoiceData = new `InvoiceData`();

        using (var input = new `OcrInput`(imagePath))
        {
            // Apply filters for better accuracy
            input.`EnhanceResolution`(300);
            `input.Sharpen`();

            var result = `ocr.Read`(input);
            var text = `result.Text`;

            // Extract invoice number
            invoiceData.`InvoiceNumber` = `ExtractPattern`(text, 
                @"INV[/-]?\d{4}[/-]?\d{5}|Invoice\s*#?\s*:?\s*(\d+)");

            // Extract dates
            invoiceData.`InvoiceDate` = `ExtractDate`(text, 
                @"Invoice\s*Date\s*:?\s*(\d{1,2}[/-]\d{1,2}[/-]\d{2,4})");
            invoiceData.`DueDate` = `ExtractDate`(text, 
                @"Due\s*Date\s*:?\s*(\d{1,2}[/-]\d{1,2}[/-]\d{2,4})");

            // Extract amounts
            `invoiceData.Total` = `ExtractAmount`(text, 
                @"Total\s*:?\s*\$?\s*([\d,]+\.?\d*)");
            `invoiceData.Tax` = `ExtractAmount`(text, 
                @"Tax\s*:?\s*\$?\s*([\d,]+\.?\d*)");

            // Extract vendor information
            invoiceData.`VendorName` = `ExtractVendorName`(text);

            // Extract line items using table detection
            invoiceData.`LineItems` = `ExtractLineItems`(result);

            // Extract any barcodes found
            if (`result.Barcodes`.Length > 0)
            {
                invoiceData.`BarcodeValues` = new List<string>();
                foreach (var barcode in `result.Barcodes`)
                {
                    invoiceData.`BarcodeValues`.Add(`barcode.Value`);
                }
            }
        }

        return invoiceData;
    }

    private string `ExtractPattern`(string text, string pattern)
    {
        var match = Regex.Match(text, pattern, `RegexOptions`.`IgnoreCase`);
        return `match.Success` ? `match.Value` : `string.Empty`;
    }

    private `DateTime`? `ExtractDate`(string text, string pattern)
    {
        var match = Regex.Match(text, pattern, `RegexOptions`.`IgnoreCase`);
        if (`match.Success` && `match.Groups`.Count > 1)
        {
            if (`DateTime`.`TryParse`(`match.Groups`[1].Value, out `DateTime` date))
                return date;
        }
        return null;
    }

    private decimal `ExtractAmount`(string text, string pattern)
    {
        var match = Regex.Match(text, pattern, `RegexOptions`.`IgnoreCase`);
        if (`match.Success` && `match.Groups`.Count > 1)
        {
            var amountStr = `match.Groups`[1].Value.Replace(",", "");
            if (decimal.`TryParse`(amountStr, out decimal amount))
                return amount;
        }
        return 0;
    }

    private string `ExtractVendorName`(string text)
    {
        // Usually the vendor name appears in the first few lines
        var lines = `text.Split`('\n');
        if (`lines.Length` > 0)
        {
            // Simple heuristic: first non-empty line that's not a common header
            foreach (var line in lines)
            {
                var trimmed = `line.Trim`();
                if (!string.`IsNullOrEmpty`(trimmed) && 
                    !trimmed.`ToLower`().Contains("invoice") &&
                    `trimmed.Length` > 3)
                {
                    return trimmed;
                }
            }
        }
        return `string.Empty`;
    }

    private List<`LineItem`> `ExtractLineItems`(`OcrResult` result)
    {
        var lineItems = new List<`LineItem`>();

        // Use IronOCR's table detection capabilities
        if (`result.Tables` != null && `result.Tables`.Count > 0)
        {
            foreach (var table in `result.Tables`)
            {
                // Process each row as a potential line item
                for (int i = 1; i < table.`RowCount`; i++) // Skip header row
                {
                    var item = new `LineItem`
                    {
                        Description = table[i, 0]?.Text ?? "",
                        Quantity = `ParseQuantity`(table[i, 1]?.Text),
                        `UnitPrice` = `ParseAmount`(table[i, 2]?.Text),
                        Total = `ParseAmount`(table[i, 3]?.Text)
                    };

                    if (!string.`IsNullOrEmpty`(`item.Description`))
                        `lineItems.Add`(item);
                }
            }
        }

        return lineItems;
    }

    private int `ParseQuantity`(string text)
    {
        if (string.`IsNullOrEmpty`(text)) return 0;
        var cleaned = Regex.Replace(text, @"[^\d]", "");
        return int.`TryParse`(cleaned, out int qty) ? qty : 0;
    }

    private decimal `ParseAmount`(string text)
    {
        if (string.`IsNullOrEmpty`(text)) return 0;
        var cleaned = Regex.Replace(text, @"[^\d.]", "");
        return decimal.`TryParse`(cleaned, out decimal amt) ? amt : 0;
    }
}

// Data classes for structured invoice information
public class `InvoiceData`
{
    public string `InvoiceNumber` { get; set; }
    public `DateTime`? `InvoiceDate` { get; set; }
    public `DateTime`? `DueDate` { get; set; }
    public string `VendorName` { get; set; }
    public decimal Total { get; set; }
    public decimal Tax { get; set; }
    public List<`LineItem`> `LineItems` { get; set; }
    public List<string> `BarcodeValues` { get; set; }
}

public class `LineItem`
{
    public string Description { get; set; }
    public int Quantity { get; set; }
    public decimal `UnitPrice` { get; set; }
    public decimal Total { get; set; }
}
$vbLabelText   $csharpLabel

Traitement des factures pour extraire des données spécifiques des factures

Extrayez des données spécifiques de factures, telles que les numéros de factures clients, avec ce code :

using IronOcr;
using System;
using System.Text.`RegularExpressions`;

// Initialize a new instance of the `IronTesseract` class
var ocr = new `IronTesseract`();

// Use the `OcrInput` object to load the image file
using (var input = new `OcrInput`(@"`r2.png`"))
{
    // Perform OCR on the image
    var result = `ocr.Read`(input);

    // Define a regular expression pattern for the invoice number
    var linePattern = @"INV\/\d{4}\/\d{5}";

    // Match the pattern in the extracted text
    var lineMatch = Regex.Match(`result.Text`, linePattern);

    // Check if the pattern matches any part of the text
    if (`lineMatch.Success`)
    {
        // If a match is found, print the invoice number
        var lineValue = `lineMatch.Value`;
        Console.`WriteLine`("Customer Invoice number: " + lineValue);
    }
}
using IronOcr;
using System;
using System.Text.`RegularExpressions`;

// Initialize a new instance of the `IronTesseract` class
var ocr = new `IronTesseract`();

// Use the `OcrInput` object to load the image file
using (var input = new `OcrInput`(@"`r2.png`"))
{
    // Perform OCR on the image
    var result = `ocr.Read`(input);

    // Define a regular expression pattern for the invoice number
    var linePattern = @"INV\/\d{4}\/\d{5}";

    // Match the pattern in the extracted text
    var lineMatch = Regex.Match(`result.Text`, linePattern);

    // Check if the pattern matches any part of the text
    if (`lineMatch.Success`)
    {
        // If a match is found, print the invoice number
        var lineValue = `lineMatch.Value`;
        Console.`WriteLine`("Customer Invoice number: " + lineValue);
    }
}
$vbLabelText   $csharpLabel

La console de débogage de Visual Studio affiche la création réussie du PDF avec le numéro de facture client INV/2023/00039 extrait à l'aide d'IronOCR, confirmant ainsi que le processus d'OCR s'est déroulé sans erreur. Numérisation des factures

Pour les scénarios d'extraction complexes, utilisez des configurations OCR spécialisées afin d'optimiser le traitement pour vos types de factures. La classe OcrResult fournit des informations détaillées sur chaque élément reconnu, notamment ses coordonnées et son score de confiance pour la validation.

Quels sont les principaux avantages d'une API OCR pour factures ?

L'API OCR pour factures d'IronOCR transforme le traitement des factures grâce à l'apprentissage automatique et à la vision par ordinateur. Cette technologie convertit le texte des factures en formats lisibles par machine, simplifiant ainsi l'extraction des données pour l'analyse, l'intégration et l'amélioration des processus. Il offre une automatisation robuste du traitement des factures, améliorant la précision et optimisant les flux de travail tels que la comptabilité fournisseurs.

IronOCR offre une précision exceptionnelle grâce à l'utilisation de résultats Tesseract optimisés sans configuration supplémentaire. Il prend en charge les fichiers TIFF multipages , les fichiers PDF et tous les formats d'image courants. La lecture des codes-barres à partir d'images ajoute une dimension d'extraction supplémentaire.

Principaux avantages du traitement des factures :

  1. Gain de temps : Réduire des heures à quelques secondes
  2. Précision : Minimiser les erreurs grâce à un système de notation par niveau de confiance
  3. Évolutivité : Traitement de milliers de données grâce au multithreading
  4. Intégration : Exportation vers des PDF interrogeables ou des formats structurés
  5. Réduction des coûts : Diminution des coûts opérationnels

La flexibilité de déploiement de la bibliothèque permet son intégration dans les systèmes existants, qu'ils soient sur site, dans le cloud ou hybrides. Grâce à sa compatibilité avec Docker , Azure et AWS , IronOCR s'adapte à vos besoins.

Les environnements de production bénéficient des options de licence d'IronOCR, notamment d'un support dédié et de mises à jour régulières . Les guides de dépannage et le support technique de la bibliothèque garantissent une mise en œuvre sans accroc.

Consultez la page d'accueil pour plus d'informations sur IronOCR. Pour plus de tutoriels sur la reconnaissance optique de caractères (OCR) des factures, consultez ce guide détaillé sur l'OCR des factures . Pour en savoir plus sur l'utilisation de la vision par ordinateur pour les champs de factures, consultez ce tutoriel sur la vision par ordinateur .

Questions Fréquemment Posées

Comment puis-je automatiser le traitement des données de factures à l'aide de l'OCR?

Vous pouvez utiliser IronOCR pour automatiser le traitement des données de factures en utilisant ses algorithmes d'apprentissage automatique. IronOCR extrait des détails tels que les informations du fournisseur, les numéros de facture et les prix à partir de factures numériques et numérisées, réduisant ainsi les erreurs de saisie manuelle et améliorant l'efficacité.

Quelles sont les étapes impliquées dans la mise en place d'une API OCR de factures ?

Pour mettre en place une API OCR de factures à l'aide d'IronOCR, commencez par télécharger et installer la bibliothèque via le gestionnaire de packages NuGet de Visual Studio. Ensuite, créez un nouveau projet C#, intégrez IronOCR, et utilisez ses méthodes pour charger et lire les fichiers image pour l'extraction de texte.

IronOCR peut-il extraire des données spécifiques comme les numéros de facture?

Oui, IronOCR peut extraire des données spécifiques comme les numéros de facture. Il utilise des expressions régulières pour faire correspondre les motifs dans le texte extrait, vous permettant de récupérer des informations spécifiques des factures.

Quelles sont les caractéristiques d'IronOCR qui bénéficient au traitement des factures?

IronOCR comprend des caractéristiques comme le prétraitement d'images, la reconnaissance de codes-barres et l'analyse de fichiers. Celles-ci améliorent sa capacité à extraire et traiter précisément le texte provenant de divers formats de factures, améliorant la capture de données et l'efficacité du flux de travail.

Comment le prétraitement des images peut-il améliorer les résultats de l'OCR?

Le prétraitement des images dans IronOCR aide à améliorer les résultats de l'OCR en optimisant la qualité de l'image avant l'extraction du texte. Cela comprend des opérations comme l'ajustement du contraste et la réduction du bruit, ce qui peut conduire à une extraction de données plus précise depuis les factures.

Est-il possible d'utiliser IronOCR pour les factures numériques et numérisées?

Oui, IronOCR est capable de traiter à la fois les factures numériques et numérisées. Il utilise des techniques avancées d'apprentissage automatique et de vision par ordinateur pour extraire précisément le texte de divers formats et qualités d'image.

Comment IronOCR gère-t-il les formats de pages multiples et les types de fichiers?

IronOCR prend en charge plusieurs formats de pages ainsi que les types de fichiers d'image et PDF populaires. Il peut extraire efficacement du texte de documents complexes, ce qui le rend polyvalent pour diverses applications de traitement de factures.

Où les développeurs peuvent-ils trouver des tutoriels pour utiliser IronOCR?

Les développeurs peuvent trouver des tutoriels et des ressources supplémentaires sur le site Web d'IronOCR. Le site offre une gamme de matériels d'apprentissage, y compris des guides pratiques et des articles de blog pour appliquer IronOCR dans différents scénarios.

Kannaopat Udonpant
Ingénieur logiciel
Avant de devenir ingénieur logiciel, Kannapat a obtenu un doctorat en ressources environnementales à l'université d'Hokkaido au Japon. Pendant qu'il poursuivait son diplôme, Kannapat est également devenu membre du laboratoire de robotique de véhicules, qui fait partie du département de bioproduction. En 2022, il a utilisé ses compé...
Lire la suite