Passer au contenu du pied de page
UTILISATION D'IRONOCR

Construire une API OCR de reçu en C# qui extrait réellement des données utiles

La saisie manuelle des données de reçus est le genre de travail fastidieux et sujet aux erreurs qui amène les développeurs à remettre en question leurs choix de carrière. Une API OCR pour reçus élimine la saisie manuelle de données en utilisant la reconnaissance optique de caractères pour extraire automatiquement le texte des images de reçus et le convertir en données structurées que les applications peuvent réellement utiliser. Que l'objectif soit l'automatisation de la gestion des dépenses, l'intégration de logiciels comptables ou la mise en place de programmes de fidélité, une solution OCR de reçus performante prend en charge les tâches les plus ardues.

Dans cet article, nous allons vous montrer comment créer une API OCR de reçus en C# à l'aide IronOCR, une bibliothèque .NET qui s'exécute entièrement sur site, traite les images de reçus localement et ne nécessite pas l'envoi de données sensibles de reçus à des services cloud tiers. Cela signifie une protection complète des données sans sacrifier la précision.

Commencez par un essai gratuit d' IronOCR pour suivre les exemples ci-dessous.

Comment fonctionne la technologie OCR pour les reçus ?

Créer une API OCR de reçus en C# qui extrait réellement des données utiles : Image 1 - Exemple de sortie de l'API OCR de reçus

La reconnaissance optique de caractères (OCR) des reçus automatise l'extraction de données à partir de reçus en convertissant le texte imprimé sur une image de reçu en texte lisible par machine. En coulisses, les technologies d'IA et les modèles d'apprentissage profond analysent la mise en page visuelle d'un reçu, identifient les zones de texte et reconnaissent les caractères avec une précision inégalée, atteignant souvent 99 % ou plus sur les numérisations nettes.

Les API OCR modernes pour les reçus utilisent l'apprentissage automatique pour analyser des informations clés telles que le nom du commerçant, la date, les lignes individuelles, les totaux et les montants des taxes à partir de formats et de mises en page de reçus variés. Les techniques d'apprentissage profond permettent à ces modèles de s'améliorer en continu grâce à l'analyse de vastes ensembles de données, s'adaptant ainsi aux nouveaux modèles de reçus et aux nouvelles langues. Il en résulte une extraction de données de reçus rapide et fiable, remplaçant la saisie manuelle, lente et sujette aux erreurs, dans de nombreux secteurs d'activité.

La technologie de numérisation des reçus peut gérer plusieurs langues, traiter des documents aux formats JPG, PNG et PDF, et fournir des résultats dans un format standardisé tel que le JSON structuré, ce qui simplifie l'intégration avec les systèmes existants.

Comment extraire les données d'un reçu en utilisant C# ?

Extraire des données à partir de reçus en C# ne nécessite que quelques lignes de code avec IronOCR. Le flux de travail principal charge un fichier image de reçu, exécute le moteur OCR et renvoie le texte extrait complet.

using IronOcr;
// Initialize the OCR engine for receipt scanning
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
// Load the receipt image for data extraction
using var input = new OcrInput();
input.LoadImage("receipt.jpg");
// Extract text from the receipt
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
// Initialize the OCR engine for receipt scanning
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
// Load the receipt image for data extraction
using var input = new OcrInput();
input.LoadImage("receipt.jpg");
// Extract text from the receipt
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr

' Initialize the OCR engine for receipt scanning
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English

' Load the receipt image for data extraction
Using input As New OcrInput()
    input.LoadImage("receipt.jpg")
    ' Extract text from the receipt
    Dim result As OcrResult = ocr.Read(input)
    Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

Sortie

Créer une API OCR de reçus en C# qui extrait des données utiles : Image 2 - Sortie du reçu de lecture IronOCR

La classe IronTesseract est le moteur OCR principal ; il s'agit d'une surcouche logicielle de Tesseract 5 qui simplifie l'interopérabilité avec le C++ natif et la configuration manuelle. Le paramètre OcrLanguage.English indique au moteur le modèle de langue à utiliser, bien qu'IronOCR prenne en charge plus de 125 langues pour le traitement des reçus du monde entier.

OcrInput accepte les images de reçus dans pratiquement tous les formats courants (JPG, PNG, BMP, TIFF, GIF, WEBP) ainsi que les PDF. La méthode Read effectue l'OCR proprement dite et renvoie un objet OcrResult, un modèle d'objet de document riche contenant non seulement du texte brut, mais aussi un accès structuré aux paragraphes, aux lignes, aux mots et aux caractères individuels avec des scores de confiance. C'est idéal pour les flux de travail d'analyse de reçus qui nécessitent l'extraction de données à un niveau granulaire.

Comment le prétraitement d'images peut-il réduire les erreurs de numérisation des reçus ?

Les images des reçus réels sont rarement parfaites. Le papier froissé, un éclairage insuffisant et une légère rotation introduisent tous des bruits parasites susceptibles de provoquer des erreurs lors de l'extraction des données. Le prétraitement de l'image avant l'exécution de la reconnaissance optique de caractères (OCR) améliore considérablement la précision et contribue à réduire les erreurs qui pourraient autrement corrompre les données de votre reçu.

using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("receipt.jpg");
// Preprocess the receipt image to improve OCR accuracy
input.DeNoise();    // Remove digital noise from the scanned receipt
input.Deskew();     // Straighten a tilted or rotated receipt capture
input.Sharpen();    // Enhance text clarity for better recognition
OcrResult result = ocr.Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");
Console.WriteLine(result.Text);
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("receipt.jpg");
// Preprocess the receipt image to improve OCR accuracy
input.DeNoise();    // Remove digital noise from the scanned receipt
input.Deskew();     // Straighten a tilted or rotated receipt capture
input.Sharpen();    // Enhance text clarity for better recognition
OcrResult result = ocr.Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");
Console.WriteLine(result.Text);
Imports IronOcr

Dim ocr As New IronTesseract()
Using input As New OcrInput()
    input.LoadImage("receipt.jpg")
    ' Preprocess the receipt image to improve OCR accuracy
    input.DeNoise()    ' Remove digital noise from the scanned receipt
    input.Deskew()     ' Straighten a tilted or rotated receipt capture
    input.Sharpen()    ' Enhance text clarity for better recognition
    Dim result As OcrResult = ocr.Read(input)
    Console.WriteLine($"Confidence: {result.Confidence}%")
    Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

Créer une API OCR de reçus en C# qui extrait réellement des données utiles : Image 3 - Exemple de résultat avec une image de reçu de mauvaise qualité

Fonctions de prétraitement d'images

Pour améliorer la précision de l'extraction, IronOCR propose plusieurs filtres intégrés pour nettoyer les images avant le début du processus OCR.

Fonction But
DeNoise() Élimine les taches et les artefacts numériques courants dans les documents numérisés.
Deskew() Détecte et corrige la rotation des images tordues ou inclinées.
Sharpen() Améliore la netteté des contours flous pour rendre les textes estompés plus lisibles.
Binarize() Convertit les images en noir et blanc pour augmenter le contraste.
ToGrayScale() Supprime les données de couleur pour simplifier l'image pour le moteur OCR.
EnhanceResolution() Augmente la résolution des images à faible résolution pour améliorer la reconnaissance des caractères.

Validation des données à l'aide de scores de confiance

Au-delà de la simple extraction de texte, la propriété Confidence sur OcrResult renvoie un score en pourcentage indiquant la fiabilité de la sortie.

Pour les chaînes de traitement automatisé des reçus gérant de gros volumes, ce score est inestimable. Il permet au système de définir un seuil, par exemple en traitant automatiquement tout ce qui est supérieur à 90 % tout en signalant les résultats peu fiables pour un examen manuel. Cela garantit une haute qualité des données sans nécessiter de vérification humaine pour chaque reçu.

Comment extraire des champs spécifiques d'un reçu à partir d'un texte issu de la reconnaissance optique de caractères (OCR) ?

Récupérer le texte brut grâce à un moteur OCR est un excellent début, mais ce n'est que le commencement. Si vous créez un outil de gestion des notes de frais ou un logiciel de comptabilité avec traitement en temps réel, vous n'avez pas seulement besoin d'un amas de texte, mais de champs de données spécifiques comme la date, le nom du commerçant et le total final.

Une fois qu'IronOCR aura effectué le gros du travail de lecture de l'image, nous pourrons utiliser la logique C# standard et les expressions régulières (Regex) dans notre API de reçus pour extraire les champs spécifiques que nous recherchons.

using IronOcr;
using System.Text.RegularExpressions;

var ocr = new IronTesseract();
using var input = new OcrInput("receipt.jpg");
input.DeNoise();
OcrResult result = ocr.Read(input);
string ocrText = result.Text;

// Parse the date from receipt data
var dateMatch = Regex.Match(ocrText, @"\d{1,2}/\d{1,2}/\d{2,4}");
string receiptDate = dateMatch.Success ? dateMatch.Value : "Not found";

// Parse the total amount
var totalMatch = Regex.Match(ocrText, @"(?i)total[\s:$]*(\d+\.\d{2})");
string total = totalMatch.Success ? totalMatch.Groups[1].Value : "Not found";

Console.WriteLine($"Date: {receiptDate}");
Console.WriteLine($"Total: ${total}");
using IronOcr;
using System.Text.RegularExpressions;

var ocr = new IronTesseract();
using var input = new OcrInput("receipt.jpg");
input.DeNoise();
OcrResult result = ocr.Read(input);
string ocrText = result.Text;

// Parse the date from receipt data
var dateMatch = Regex.Match(ocrText, @"\d{1,2}/\d{1,2}/\d{2,4}");
string receiptDate = dateMatch.Success ? dateMatch.Value : "Not found";

// Parse the total amount
var totalMatch = Regex.Match(ocrText, @"(?i)total[\s:$]*(\d+\.\d{2})");
string total = totalMatch.Success ? totalMatch.Groups[1].Value : "Not found";

Console.WriteLine($"Date: {receiptDate}");
Console.WriteLine($"Total: ${total}");
Imports IronOcr
Imports System.Text.RegularExpressions

Dim ocr As New IronTesseract()
Using input As New OcrInput("receipt.jpg")
    input.DeNoise()
    Dim result As OcrResult = ocr.Read(input)
    Dim ocrText As String = result.Text

    ' Parse the date from receipt data
    Dim dateMatch As Match = Regex.Match(ocrText, "\d{1,2}/\d{1,2}/\d{2,4}")
    Dim receiptDate As String = If(dateMatch.Success, dateMatch.Value, "Not found")

    ' Parse the total amount
    Dim totalMatch As Match = Regex.Match(ocrText, "(?i)total[\s:$]*(\d+\.\d{2})")
    Dim total As String = If(totalMatch.Success, totalMatch.Groups(1).Value, "Not found")

    Console.WriteLine($"Date: {receiptDate}")
    Console.WriteLine($"Total: ${total}")
End Using
$vbLabelText   $csharpLabel

Créer une API OCR de reçus en C# qui extrait des données utiles : Image 4 - exemple de résultat avec IronOCR et des expressions régulières simples

Cet exemple utilise des expressions régulières simples pour extraire automatiquement la date et le total du texte brut d'un reçu OCR. Le format de date correspond aux formats de date de reçu courants tels que 03/15/2026, tandis que le format total recherche le mot " TOTAL " suivi d'un montant en dollars. Pour les systèmes de production, ces modèles doivent être adaptés aux formats de reçus spécifiques rencontrés.

Pour extraire les données des articles (noms de produits individuels, quantités et prix), divisez le texte OCR par ligne et appliquez des modèles qui identifient les lignes d'articles. Cette approche est particulièrement efficace pour convertir les images de reçus en données structurées compatibles avec le format JSON, les flux de travail de gestion des dépenses et l'intégration directe avec les logiciels comptables. Pour une analyse plus avancée des reçus sur des mises en page variées, envisagez de combiner la lecture OCR basée sur les régions (en utilisant des rectangles ContentArea) avec les fonctionnalités de structure de document d'IronOCR pour extraire les données des lignes de commande à partir de sections spécifiques du reçu.

Un regard critique d'un développeur sur les expressions régulières

Soyons réalistes : les expressions régulières sont une méthode " rapide et simple " pour débuter, mais elles ne sont pas infaillibles. Les reçus du monde réel sont désordonnés. Un commerçant pourrait imprimer " TOTAL ", un autre pourrait dire " Solde dû ", et un troisième pourrait avoir une tache de café juste au-dessus du symbole du dollar.

Si vous passez à la production, ne vous fiez pas à un seul modèle. Voici comment le rendre plus robuste :

  • Utilisez les scores de confiance : IronOCR vous donne un pourcentage de confiance pour chaque mot qu'il lit. Si le niveau de confiance concernant le montant " Total " est inférieur à 80 %, vous devriez probablement signaler ce reçu pour qu'une personne le vérifie.
  • Validez les données : ne vous fiez pas uniquement à la chaîne de caractères. Essayez de convertir ce " Total " en nombre décimal. Si cela échoue, votre système de reconnaissance optique de caractères (OCR) a peut-être mal interprété un " 5 " comme un " S ".
  • L'emplacement compte : Pour les mises en page complexes, utilisez IronOCR OcrResult.Blocks ou Lines pour trouver du texte en fonction de sa position sur la page. Si la mention " Total " figure toujours en bas à droite, cibler cette zone précise permet de réduire le " bruit " provenant des autres chiffres sur le reçu.

Comment une API OCR de reçus s'intègre-t-elle aux systèmes de gestion des dépenses ?

Une API OCR de reçus devient véritablement puissante lorsqu'elle intègre directement des données structurées de reçus dans les systèmes d'entreprise. IronOCR fournit une API conviviale pour les développeurs qui s'intègre parfaitement à toute application .NET , qu'il s'agisse d'un service Web ASP.NET , d'un logiciel de suivi des dépenses de bureau ou d'un processus en arrière-plan traitant les reçus par lots.

L'API renvoie le texte extrait sous forme d'objet OcrResult, qui donne accès aux pages, paragraphes et lignes individuels. Cela simplifie la mise en place d'un pipeline de traitement des reçus qui analyse le texte OCR en JSON structuré, valide les données (y compris la détection des doublons et la validation des achats) et les transmet aux logiciels comptables, aux systèmes ERP ou aux bases de données.

IronOCR effectue tout le traitement OCR localement, sans dépendance au cloud, sans carte de crédit requise pour l'essai gratuit et avec un contrôle total sur les documents financiers sensibles. Cette approche privilégiant le local signifie que l'API OCR des reçus peut traiter de grands volumes de reçus numériques sans problème de latence, et offre une protection des données intrinsèque aux organisations de divers secteurs soumises à des exigences de conformité strictes. La bibliothèque offre une documentation complète et s'intègre parfaitement aux systèmes existants via NuGet, ce qui en fait un choix pragmatique pour les équipes qui privilégient à la fois la performance et la simplicité.

Pour les développeurs souhaitant créer une solution complète de numérisation de reçus, IronOCR prend également en charge la lecture des codes-barres et des codes QR , la génération de PDF consultables et le traitement de documents multipages , le tout dans la même bibliothèque.

Commencez dès aujourd'hui à automatiser l'extraction des données de vos reçus.

Créer une API OCR de reçus en C# avec IronOCR élimine la difficulté de la saisie manuelle de données et la remplace par une extraction de données rapide, précise et automatisée. De la simple numérisation de reçus à l'analyse avancée de reçus avec extraction au niveau des champs, la bibliothèque fournit tout le nécessaire pour convertir les images de reçus en données structurées précieuses et exploitables, le tout sans envoyer de documents hors site.

La combinaison de puissants filtres de prétraitement, d'une API .NET claire, d'une reconnaissance améliorée par l'apprentissage automatique et d'un traitement local fait IronOCR une solution parfaitement adaptée à la gestion des dépenses, au traitement des reçus et à tout flux de travail nécessitant l'extraction de données de reçus de manière fiable et à grande échelle.

Prêt à éliminer la saisie manuelle de vos flux de travail de réception de reçus ? Explorez les options de licence IronOCR pour trouver le forfait adapté à votre équipe, ou commencez par un essai gratuit pour constater les résultats par vous-même.

Install-Package IronOcr
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

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi