Wie man Tesseract OCR Vertrauenswerte in C# verwendet | IronOCR

Wie man mit IronOcr C#35; OCR-Lesesicherheit erhält

This article was translated from English: Does it need improvement?
Translated
View the article in English

Das Lesevertrauen von IronOCR gibt an, wie sicher das OCR-System den erkannten Text erkennt. Die Werte reichen von 0 bis 100, wobei höhere Werte eine größere Zuverlässigkeit bedeuten - der Zugriff erfolgt über die Eigenschaft Confidence eines jeden OcrResult-Objekts.

Lesevertrauen in OCR (Optische Zeichenerkennung) bezieht sich auf das Maß an Sicherheit oder Zuverlässigkeit, das das OCR-System der Genauigkeit des erkannten Textes in einem Bild oder Dokument zuweist. Es ist ein Maß dafür, wie sicher das OCR-System ist, dass der erkannte Text korrekt ist. Diese Metrik ist besonders wichtig bei der Verarbeitung von gescannten Dokumenten, Fotos oder anderen Bildern, bei denen die Textqualität variieren kann.

Ein hoher Vertrauenswert zeigt eine hohe Sicherheit an, dass die Erkennung genau ist, während ein niedriger Vertrauenswert darauf hindeutet, dass die Erkennung weniger zuverlässig sein könnte. Das Verständnis dieser Vertrauensebenen hilft den Entwicklern, eine angemessene Validierungslogik und Fehlerbehandlung in ihren Anwendungen zu implementieren.

als-Überschrift:2(Kurzstart: OCR-Lesevertrauen in einer Zeile erhalten)

Verwenden Sie die Methode Read von IronTesseract mit einem Bilddateipfad und greifen Sie dann auf die Eigenschaft Confidence des zurückgegebenen OcrResult zu, um zu sehen, wie sicher IronOCR bei seiner Texterkennung ist. Dies ist eine einfache und zuverlässige Methode, um die Genauigkeit der OCR-Ausgabe zu bewerten.

Nuget IconLegen Sie jetzt mit NuGet los, um PDFs zu erstellen:

  1. Installieren Sie IronOCR mit dem NuGet-Paketmanager.

    PM > Install-Package IronOcr

  2. Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    double confidence = new IronOcr.IronTesseract().Read("input.png").Confidence;
  3. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute mit der Nutzung von IronOCR in Ihrem Projekt – mit einer kostenlosen Testversion.
    arrow pointer


Wie erhalte ich Lesevertrauen in C#?

Nach der Durchführung der OCR auf dem Eingabebild wird die Vertrauensstufe des Textes in der Confidence-Eigenschaft gespeichert. Verwenden Sie die 'using'-Anweisung, um Objekte nach Gebrauch automatisch zu entsorgen. Fügen Sie Dokumente wie Bilder und PDFs mit den Klassen OcrImageInput und OcrPdfInput hinzu. Die Methode Lesen gibt ein OcrResult-Objekt zurück, das den Zugriff auf die Confidence-Eigenschaft ermöglicht.

:path=/static-assets/ocr/content-code-examples/how-to/tesseract-result-confidence-get-confidence.cs
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("sample.tiff");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Get confidence level
double confidence = ocrResult.Confidence;
Imports IronOcr

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Add image
Private imageInput = New OcrImageInput("sample.tiff")
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)

' Get confidence level
Private confidence As Double = ocrResult.Confidence
$vbLabelText   $csharpLabel

Der zurückgegebene Konfidenzwert reicht von 0 bis 100, wobei:

  • 90-100: Ausgezeichnetes Vertrauen - Der Text ist sehr zuverlässig
  • 80-89: Gutes Vertrauen - Der Text ist im Allgemeinen genau mit kleinen Unsicherheiten
  • 70-79: Mäßiges Vertrauen - Text kann einige Fehler enthalten
  • Besser als 70: Geringes Vertrauen - Der Text sollte überarbeitet oder nachbearbeitet werden

Wie kann ich Vertrauen auf verschiedenen Ebenen gewinnen?

Sie können nicht nur die Vertrauensstufe des gesamten Dokuments abrufen, sondern auch die Vertrauensstufen jeder Seite, jedes Absatzes, jeder Zeile, jedes Wortes und jedes Zeichens. Darüber hinaus können Sie das Vertrauen in einen Block erhalten, der eine Sammlung von einem oder mehreren Absätzen darstellt, die eng beieinander liegen.

:path=/static-assets/ocr/content-code-examples/how-to/tesseract-result-confidence-confidence-level.cs
// Get page confidence level
double pageConfidence = ocrResult.Pages[0].Confidence;

// Get paragraph confidence level
double paragraphConfidence = ocrResult.Paragraphs[0].Confidence;

// Get line confidence level
double lineConfidence = ocrResult.Lines[0].Confidence;

// Get word confidence level
double wordConfidence = ocrResult.Words[0].Confidence;

// Get character confidence level
double characterConfidence = ocrResult.Characters[0].Confidence;

// Get block confidence level
double blockConfidence = ocrResult.Blocks[0].Confidence;
' Get page confidence level
Dim pageConfidence As Double = ocrResult.Pages(0).Confidence

' Get paragraph confidence level
Dim paragraphConfidence As Double = ocrResult.Paragraphs(0).Confidence

' Get line confidence level
Dim lineConfidence As Double = ocrResult.Lines(0).Confidence

' Get word confidence level
Dim wordConfidence As Double = ocrResult.Words(0).Confidence

' Get character confidence level
Dim characterConfidence As Double = ocrResult.Characters(0).Confidence

' Get block confidence level
Dim blockConfidence As Double = ocrResult.Blocks(0).Confidence
$vbLabelText   $csharpLabel

Praktisches Beispiel: Filtern nach Konfidenz

Bei der Verarbeitung von Dokumenten mit unterschiedlicher Qualität, wie z. B. Scans mit geringer Qualität, können Sie die Ergebnisse anhand von Vertrauenswerten filtern:

using IronOcr;
using System.Linq;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Configure for better accuracy
ocrTesseract.Configuration.ReadBarCodes = false;
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Add image
using var imageInput = new OcrImageInput("invoice.png");
// Apply filters to improve quality
imageInput.Deskew();
imageInput.DeNoise();

// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Filter words with confidence above 85%
var highConfidenceWords = ocrResult.Words
    .Where(word => word.Confidence >= 85)
    .Select(word => word.Text)
    .ToList();

// Process only high-confidence text
string reliableText = string.Join(" ", highConfidenceWords);
Console.WriteLine($"High confidence text: {reliableText}");

// Flag low-confidence words for manual review
var lowConfidenceWords = ocrResult.Words
    .Where(word => word.Confidence < 85)
    .Select(word => new { word.Text, word.Confidence })
    .ToList();

foreach (var word in lowConfidenceWords)
{
    Console.WriteLine($"Review needed: '{word.Text}' (Confidence: {word.Confidence:F2}%)");
}
using IronOcr;
using System.Linq;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Configure for better accuracy
ocrTesseract.Configuration.ReadBarCodes = false;
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Add image
using var imageInput = new OcrImageInput("invoice.png");
// Apply filters to improve quality
imageInput.Deskew();
imageInput.DeNoise();

// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Filter words with confidence above 85%
var highConfidenceWords = ocrResult.Words
    .Where(word => word.Confidence >= 85)
    .Select(word => word.Text)
    .ToList();

// Process only high-confidence text
string reliableText = string.Join(" ", highConfidenceWords);
Console.WriteLine($"High confidence text: {reliableText}");

// Flag low-confidence words for manual review
var lowConfidenceWords = ocrResult.Words
    .Where(word => word.Confidence < 85)
    .Select(word => new { word.Text, word.Confidence })
    .ToList();

foreach (var word in lowConfidenceWords)
{
    Console.WriteLine($"Review needed: '{word.Text}' (Confidence: {word.Confidence:F2}%)");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Was ist die Zeichenauswahl bei OCR?

Neben der Vertrauensstufe gibt es auch eine interessante Eigenschaft namens Choices. Choices enthalten eine Liste von alternativen Wortwahlen und deren statistische Relevanz. Diese Information ermöglicht es dem Benutzer, auf andere mögliche Zeichen zuzugreifen. Diese Funktion ist besonders nützlich, wenn mit mehreren Sprachen oder speziellen Schriftarten gearbeitet wird.

:path=/static-assets/ocr/content-code-examples/how-to/tesseract-result-confidence-get-choices.cs
using IronOcr;
using static IronOcr.OcrResult;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("Potter.tiff");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Get choices
Choice[] choices = ocrResult.Characters[0].Choices;
Imports IronOcr
Imports IronOcr.OcrResult

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Add image
Private imageInput = New OcrImageInput("Potter.tiff")
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)

' Get choices
Private choices() As Choice = ocrResult.Characters(0).Choices
$vbLabelText   $csharpLabel

Wie helfen alternative Zeichenwahlen?

Die Auswahl alternativer Zeichen bietet mehrere Vorteile:

  1. Ambiguity Resolution: Wenn Zeichen wie 'O' und '0', oder 'l' und '1' verwechselt werden
  2. Schriftvariationen: Unterschiedliche Interpretationen für stilisierte oder dekorative Schriftarten
  3. Qualitätsaspekte: Mehrere Möglichkeiten beim Umgang mit minderwertigem Text
  4. Sprachlicher Kontext: Alternative Interpretationen auf der Grundlage von Sprachregeln
OCR-Zeichenauswahl-Debug-Ansicht mit Vertrauenswerten und Texterkennungsergebnissen für 'Kapitel 8'

Arbeiten mit Zeichenauswahl

Hier finden Sie ein umfassendes Beispiel, das zeigt, wie Sie die Zeichenauswahl zur Verbesserung der Genauigkeit nutzen können:

using IronOcr;
using System;
using System.Linq;
using static IronOcr.OcrResult;

// Configure IronTesseract for detailed results
IronTesseract ocrTesseract = new IronTesseract();

// Process image with potential ambiguities
using var imageInput = new OcrImageInput("ambiguous_text.png");
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Analyze character choices for each word
foreach (var word in ocrResult.Words)
{
    Console.WriteLine($"\nWord: '{word.Text}' (Confidence: {word.Confidence:F2}%)");

    // Check each character in the word
    foreach (var character in word.Characters)
    {
        if (character.Choices != null && character.Choices.Length > 1)
        {
            Console.WriteLine($"  Character '{character.Text}' has alternatives:");

            // Display all choices sorted by confidence
            foreach (var choice in character.Choices.OrderByDescending(c => c.Confidence))
            {
                Console.WriteLine($"    - '{choice.Text}': {choice.Confidence:F2}%");
            }
        }
    }
}
using IronOcr;
using System;
using System.Linq;
using static IronOcr.OcrResult;

// Configure IronTesseract for detailed results
IronTesseract ocrTesseract = new IronTesseract();

// Process image with potential ambiguities
using var imageInput = new OcrImageInput("ambiguous_text.png");
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Analyze character choices for each word
foreach (var word in ocrResult.Words)
{
    Console.WriteLine($"\nWord: '{word.Text}' (Confidence: {word.Confidence:F2}%)");

    // Check each character in the word
    foreach (var character in word.Characters)
    {
        if (character.Choices != null && character.Choices.Length > 1)
        {
            Console.WriteLine($"  Character '{character.Text}' has alternatives:");

            // Display all choices sorted by confidence
            foreach (var choice in character.Choices.OrderByDescending(c => c.Confidence))
            {
                Console.WriteLine($"    - '{choice.Text}': {choice.Confidence:F2}%");
            }
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Vertrauensstrategien für Fortgeschrittene

Bei der Arbeit mit spezialisierten Dokumenten wie Reisepässen, Lizenzschildern oder MICR-Schecks sind Vertrauenswerte für die Validierung entscheidend:

using IronOcr;

public class DocumentValidator
{
    private readonly IronTesseract ocr = new IronTesseract();

    public bool ValidatePassportNumber(string imagePath, double minConfidence = 95.0)
    {
        using var input = new OcrImageInput(imagePath);

        // Configure for passport reading
        ocr.Configuration.ReadBarCodes = true;
        ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleLine;

        // Apply preprocessing
        input.Deskew();
        input.Scale(200); // Upscale for better accuracy

        var result = ocr.Read(input);

        // Find passport number pattern
        var passportLine = result.Lines
            .Where(line => line.Text.Contains("P<") || IsPassportNumberFormat(line.Text))
            .FirstOrDefault();

        if (passportLine != null)
        {
            Console.WriteLine($"Passport line found: {passportLine.Text}");
            Console.WriteLine($"Confidence: {passportLine.Confidence:F2}%");

            // Only accept if confidence meets threshold
            return passportLine.Confidence >= minConfidence;
        }

        return false;
    }

    private bool IsPassportNumberFormat(string text)
    {
        // Simple passport number validation
        return System.Text.RegularExpressions.Regex.IsMatch(text, @"^[A-Z]\d{7,9}$");
    }
}
using IronOcr;

public class DocumentValidator
{
    private readonly IronTesseract ocr = new IronTesseract();

    public bool ValidatePassportNumber(string imagePath, double minConfidence = 95.0)
    {
        using var input = new OcrImageInput(imagePath);

        // Configure for passport reading
        ocr.Configuration.ReadBarCodes = true;
        ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleLine;

        // Apply preprocessing
        input.Deskew();
        input.Scale(200); // Upscale for better accuracy

        var result = ocr.Read(input);

        // Find passport number pattern
        var passportLine = result.Lines
            .Where(line => line.Text.Contains("P<") || IsPassportNumberFormat(line.Text))
            .FirstOrDefault();

        if (passportLine != null)
        {
            Console.WriteLine($"Passport line found: {passportLine.Text}");
            Console.WriteLine($"Confidence: {passportLine.Confidence:F2}%");

            // Only accept if confidence meets threshold
            return passportLine.Confidence >= minConfidence;
        }

        return false;
    }

    private bool IsPassportNumberFormat(string text)
    {
        // Simple passport number validation
        return System.Text.RegularExpressions.Regex.IsMatch(text, @"^[A-Z]\d{7,9}$");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Optimierung für mehr Vertrauen

Um höhere Konfidenzwerte zu erzielen, sollten Sie Bildfilter und Vorverarbeitungstechniken verwenden:

using IronOcr;

// Create an optimized OCR workflow
IronTesseract ocr = new IronTesseract();

using var input = new OcrImageInput("low_quality_scan.jpg");

// Apply multiple filters to improve confidence
input.Deskew();           // Correct rotation
input.DeNoise();          // Remove noise
input.Sharpen();          // Enhance edges
input.Dilate();           // Thicken text
input.Scale(150);         // Upscale for clarity

// Configure for accuracy over speed
ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
ocr.Configuration.EngineMode = TesseractEngineMode.TesseractOnly;

var result = ocr.Read(input);

Console.WriteLine($"Document confidence: {result.Confidence:F2}%");

// Generate confidence report
var confidenceReport = result.Pages
    .Select((page, index) => new
    {
        PageNumber = index + 1,
        Confidence = page.Confidence,
        WordCount = page.Words.Length,
        LowConfidenceWords = page.Words.Count(w => w.Confidence < 80)
    });

foreach (var page in confidenceReport)
{
    Console.WriteLine($"Page {page.PageNumber}: {page.Confidence:F2}% confidence");
    Console.WriteLine($"  Total words: {page.WordCount}");
    Console.WriteLine($"  Low confidence words: {page.LowConfidenceWords}");
}
using IronOcr;

// Create an optimized OCR workflow
IronTesseract ocr = new IronTesseract();

using var input = new OcrImageInput("low_quality_scan.jpg");

// Apply multiple filters to improve confidence
input.Deskew();           // Correct rotation
input.DeNoise();          // Remove noise
input.Sharpen();          // Enhance edges
input.Dilate();           // Thicken text
input.Scale(150);         // Upscale for clarity

// Configure for accuracy over speed
ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
ocr.Configuration.EngineMode = TesseractEngineMode.TesseractOnly;

var result = ocr.Read(input);

Console.WriteLine($"Document confidence: {result.Confidence:F2}%");

// Generate confidence report
var confidenceReport = result.Pages
    .Select((page, index) => new
    {
        PageNumber = index + 1,
        Confidence = page.Confidence,
        WordCount = page.Words.Length,
        LowConfidenceWords = page.Words.Count(w => w.Confidence < 80)
    });

foreach (var page in confidenceReport)
{
    Console.WriteLine($"Page {page.PageNumber}: {page.Confidence:F2}% confidence");
    Console.WriteLine($"  Total words: {page.WordCount}");
    Console.WriteLine($"  Low confidence words: {page.LowConfidenceWords}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Zusammenfassung

Das Verständnis und die Verwendung von OCR-Konfidenzwerten ist für die Entwicklung robuster Anwendungen zur Dokumentenverarbeitung unerlässlich. Durch die Nutzung der Konfidenz-Eigenschaften von IronOCR und der Zeichenauswahl können Entwickler intelligente Validierungs-, Fehlerbehandlungs- und Qualitätssicherungsmechanismen in ihre OCR-Workflows implementieren. Unabhängig davon, ob Sie Screenshots, Tabellen oder spezialisierte Dokumente verarbeiten, liefern Konfidenzwerte die notwendigen Metriken, um eine genaue Textextraktion zu gewährleisten.

Häufig gestellte Fragen

Was ist OCR-Vertrauen und warum ist es wichtig?

OCR-Konfidenz ist ein Maß von 0 bis 100, das angibt, wie sicher das OCR-System bei der Texterkennungsgenauigkeit ist. IronOCR stellt diese Metrik über die Confidence-Eigenschaft jedes OcrResult-Objekts zur Verfügung und hilft Entwicklern, die Zuverlässigkeit des erkannten Texts zu bewerten, insbesondere bei der Verarbeitung von gescannten Dokumenten, Fotos oder Bildern mit unterschiedlicher Textqualität.

Wie kann ich die OCR-Sicherheit in C# schnell überprüfen?

Mit IronOCR können Sie die OCR-Vertrauenswürdigkeit in nur einer Codezeile ermitteln: double confidence = new IronOcr.IronTesseract().Read("input.png").Confidence; Dies liefert einen Vertrauenswert zwischen 0-100, der angibt, wie sicher IronOCR bei der Texterkennung ist.

Was bedeuten die verschiedenen Vertrauensbereiche?

Die IronOCR-Konfidenzwerte zeigen an: 90-100 (Exzellent) bedeutet, dass der Text sehr zuverlässig ist; 80-89 (Gut) bedeutet, dass der Text im Allgemeinen genau ist, mit kleinen Unsicherheiten; 70-79 (Mäßig) bedeutet, dass der Text einige Fehler enthalten kann; unter 70 (Niedrig) bedeutet, dass der Text überarbeitet oder neu bearbeitet werden sollte.

Wie erhalte ich Zugriff auf die Konfidenzstufen für verschiedene Textelemente?

IronOCR ermöglicht es Ihnen, Konfidenzniveaus auf verschiedenen Ebenen abzurufen - Seiten, Absätze, Zeilen, Wörter und einzelne Zeichen. Nach der OCR können Sie auf die Confidence-Eigenschaft auf jeder Ebene über die OcrResult-Objektstruktur zugreifen.

Kann ich alternative Wortvorschläge mit Vertrauenswerten erhalten?

Ja, IronOCR bietet eine Choices-Eigenschaft, die alternative Wortwahlmöglichkeiten zusammen mit ihren Konfidenzwerten anbietet. Diese Funktion ist hilfreich, wenn die OCR-Engine mehrere mögliche Interpretationen desselben Textes identifiziert, so dass Sie eine intelligente Validierungslogik implementieren können.

Wie implementiere ich die vertrauensbasierte Validierung in meiner Anwendung?

Überprüfen Sie nach der Verwendung der Read-Methode von IronOCR die Confidence-Eigenschaft des OcrResult. Implementieren Sie eine bedingte Logik, die auf Konfidenzschwellen basiert - z. B. automatische Annahme von Ergebnissen über 90, Kennzeichnung von Ergebnissen zwischen 70-90 zur Überprüfung und erneute Verarbeitung oder manuelle Überprüfung von Ergebnissen unter 70.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Rezensiert von
Jeff Fritz
Jeffrey T. Fritz
Principal Program Manager - .NET Community Team
Jeff ist außerdem Principal Program Manager für das .NET- und Visual Studio-Team. Er ist der ausführende Produzent der .NET Conf Virtual Conference Series und moderiert ‚Fritz and Friends‘, einen Livestream für Entwickler, der zweimal wöchentlich ausgestrahlt wird. Dort spricht er über Technik und schreibt gemeinsam mit den Zuschauern Code. Jeff schreibt Workshops, Präsentationen und plant Inhalte für die größten Microsoft-Entwicklerveranstaltungen, einschließlich Microsoft Build, Microsoft Ignite, .NET Conf und dem Microsoft MVP Summit.
Bereit anzufangen?
Nuget Downloads 5,246,844 | Version: 2025.12 gerade veröffentlicht