Wie man den Filter-Assistenten in C#35; für eine bessere OCR verwendet

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

Der IronOCR Filter Wizard testet automatisch alle Kombinationen von Vorverarbeitungsfiltern auf Ihrem Bild, um optimale OCR-Einstellungen zu finden, und gibt sowohl den höchsten Konfidenzwert als auch den genauen C#-Code zurück, der zur Reproduktion der Ergebnisse erforderlich ist.

Die Vorverarbeitung von Bildern für OCR kann eine Herausforderung sein. Mehrere Filter können die Erkennung verbessern, aber um die richtige Kombination zu finden, muss viel ausprobiert werden. Jedes Bild stellt eine besondere Herausforderung dar, was die manuelle Prüfung zeitaufwändig macht. Dies gilt insbesondere bei der Arbeit mit Scans niedriger Qualität oder Bildern mit unterschiedlichem Rausch- und Verzerrungsgrad.

Der OcrInputFilterWizard von IronOCR löst dieses Problem. Der Filter-Assistent wertet automatisch Filterkombinationen aus, um die OCR-Sicherheit und -Genauigkeit zu maximieren. Sie führt ausführliche Tests für optimale Einstellungen durch und gibt die beste Filterkombination als Codeschnipsel zurück, was eine einfache Reproduktion der Ergebnisse ermöglicht. Diese Funktion fügt sich nahtlos in die OcrInput-Klasse ein und vereinfacht die Filteranwendung für Ihre Bilder.

Dieser Leitfaden demonstriert die Funktionsweise des Filter-Assistenten und zeigt die verwendeten Codeschnipsel und Parameter. Weitere Informationen zur Optimierung des OCR-Workflows finden Sie in unserem Leitfaden zur Bildqualitätskorrektur.

Schnellstart: Ihre ideale Bildfilterkette automatisch entdecken

Verwenden Sie den Filter-Assistenten von IronOCR, um alle Kombinationen von Preprocessing-Filtern zu testen und den leistungsfähigsten Codeschnipsel zu erhalten. In einer Zeile werden der höchste Konfidenzwert und die genaue C#-Filterkette für ähnliche Bilder angezeigt.

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.

    string code = OcrInputFilterWizard.Run("image.png", out double confidence, new IronTesseract());
  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 funktioniert der Filter-Assistent?

Die Methode OcrInputFilterWizard.Run benötigt drei Parameter: das Eingabebild, einen Out-Parameter für das resultierende Konfidenzniveau und die Instanz der Tesseract Engine. Für fortgeschrittene Motorsteuerung siehe unseren Leitfaden zur Tesseract Detailkonfiguration.

Es werden mehrere Kombinationen von Preprocessing-Filtern getestet, um den besten Konfidenzwert zu erzielen. Der höchste Konfidenzwert bestimmt, welcher Filtersatz auf Ihr Eingabebild anzuwenden ist. Dieser Ansatz eignet sich gut für anspruchsvolle Bilder, die eine Bildausrichtungskorrektur oder andere komplexe Vorverarbeitungsschritte erfordern.

Der Filter-Assistent hat keine Voreinstellungen oder Kombinationsgrenzen. Der Schwerpunkt liegt auf dem Erreichen des bestmöglichen Vertrauenswertes durch umfassende Filtertests. Für Echtzeit-Feedback während der Verarbeitung implementieren Sie Fortschrittsverfolgung, um die Vorgänge des Assistenten zu überwachen.

Verfügbare Filter im Kombinationstest:

  • input.Contrast() - Passt den Kontrast an, damit der Text klarer wird
  • input.Sharpen() - Verbessert die Kantenschärfe
  • input.Binarize() - Konvertiert in Schwarz und Weiß
  • input.ToGrayScale() - Entfernt Farbinformationen
  • input.Invert() - Invertiert Farben
  • input.Deskew() - Korrigiert schiefen Text
  • input.Scale(...) - Ändert die Größe auf optimale Dimensionen
  • input.Denoise() - Entfernt Pixelrauschen
  • input.DeepCleanBackgroundNoise() - Erweiterte Rauschentfernung
  • input.EnhanceResolution() - Verbessert die Auflösung bei niedriger Qualität
  • input.Dilate(), input.Erode() - Textverfeinerungsoperationen

Ausführliche Informationen zu Filtern finden Sie in diesem Tutorial zu Bildfiltern. Weitere Vorverarbeitungstechniken sind im Bildkorrekturfilter-Leitfaden zu finden.

Diese ausführliche Testmethode erfordert Bearbeitungszeit. Für umfangreiche Operationen sollten Sie Multithreading-Unterstützung verwenden, um mehrere Bilder gleichzeitig zu verarbeiten.

Welche Art von Bild sollte ich für den Test verwenden?

In diesem Beispiel wird ein Screenshot mit starkem künstlichem Rauschen verwendet, um die Funktionalität des Filterassistenten zu demonstrieren. Der Filter-Assistent verarbeitet effektiv verschiedene Bildtypen, von gescannten Dokumenten bis zu Fotos mit Text.

Stark beschädigtes Testbild mit Rauschmuster, das degradierten Text zur Demonstration des Filterassistenten zeigt

Berücksichtigen Sie bei der Auswahl von Testbildern diese Faktoren:

  • Bildauflösung: Bilder mit höherem DPI-Wert liefern in der Regel bessere Ergebnisse. In unserem Leitfaden zu DPI-Einstellungen finden Sie Tipps zur Optimierung.
  • Dokumententyp: Verschiedene Dokumenttypen profitieren von bestimmten Filterkombinationen. Identitätsdokumente erfordern möglicherweise eine andere Vorverarbeitung als normale Textdokumente.
  • Quellenqualität: Der Filter-Assistent eignet sich hervorragend für problematische Bilder, aber er beginnt mit der höchstmöglichen Qualität der verfügbaren Quelle, wenn möglich.

Wie führe ich den Filter-Assistenten in meinem Code aus?

:path=/static-assets/ocr/content-code-examples/how-to/filter-wizard-process.cs
using IronOcr;
using System;

// Initialize the Tesseract engine
var ocr = new IronTesseract();

// 1. Pass the image path ("noise.png").
// 2. Pass an 'out' variable to store the best confidence score found.
// 3. Pass the tesseract instance to be used for testing.
string codeToRun = OcrInputFilterWizard.Run("noise.png", out double confidence, ocr);

// The 'confidence' variable is now populated with the highest score achieved.
Console.WriteLine($"Best Confidence Score: {confidence}");

// 'codeToRun' holds the exact C# code snippet that achieved this score.
// The returned string is the code you can use to filter similar images.
Console.WriteLine("Recommended Filter Code:");
Console.WriteLine(codeToRun);
Imports IronOcr
Imports System

' Initialize the Tesseract engine
Dim ocr As New IronTesseract()

' 1. Pass the image path ("noise.png").
' 2. Pass an 'out' variable to store the best confidence score found.
' 3. Pass the tesseract instance to be used for testing.
Dim confidence As Double
Dim codeToRun As String = OcrInputFilterWizard.Run("noise.png", confidence, ocr)

' The 'confidence' variable is now populated with the highest score achieved.
Console.WriteLine($"Best Confidence Score: {confidence}")

' 'codeToRun' holds the exact C# code snippet that achieved this score.
' The returned string is the code you can use to filter similar images.
Console.WriteLine("Recommended Filter Code:")
Console.WriteLine(codeToRun)
$vbLabelText   $csharpLabel

Der Filter-Assistent verarbeitet verschiedene Eingabeformate. Informationen zu unterstützten Formaten finden Sie in unserem Leitfaden zu Eingabebildern. Sie können auch PDF-Dateien verarbeiten oder direkt mit Streams für dynamische Bildquellen arbeiten.

Für Stapelverarbeitungsszenarien können Sie dieses erweiterte Beispiel verwenden:

/* :path=/static-assets/ocr/content-code-examples/how-to/filter-wizard-batch.cs */
using IronOcr;
using System;
using System.IO;

// Process multiple similar images
var ocr = new IronTesseract();
string[] imageFiles = Directory.GetFiles(@"C:\Images", "*.png");

// Run Filter Wizard on first image to discover optimal settings
string optimalCode = OcrInputFilterWizard.Run(imageFiles[0], out double baselineConfidence, ocr);
Console.WriteLine($"Baseline confidence: {baselineConfidence:P2}");
Console.WriteLine($"Optimal filter sequence discovered");

// Apply discovered filters to all images
foreach (string imagePath in imageFiles)
{
    using (var input = new OcrImageInput(imagePath))
    {
        // Apply the filter sequence discovered by the wizard
        // The actual filters would be applied here based on the wizard output
        var result = ocr.Read(input);
        Console.WriteLine($"Processed: {Path.GetFileName(imagePath)} - Confidence: {result.Confidence:P2}");
    }
}
/* :path=/static-assets/ocr/content-code-examples/how-to/filter-wizard-batch.cs */
using IronOcr;
using System;
using System.IO;

// Process multiple similar images
var ocr = new IronTesseract();
string[] imageFiles = Directory.GetFiles(@"C:\Images", "*.png");

// Run Filter Wizard on first image to discover optimal settings
string optimalCode = OcrInputFilterWizard.Run(imageFiles[0], out double baselineConfidence, ocr);
Console.WriteLine($"Baseline confidence: {baselineConfidence:P2}");
Console.WriteLine($"Optimal filter sequence discovered");

// Apply discovered filters to all images
foreach (string imagePath in imageFiles)
{
    using (var input = new OcrImageInput(imagePath))
    {
        // Apply the filter sequence discovered by the wizard
        // The actual filters would be applied here based on the wizard output
        var result = ocr.Read(input);
        Console.WriteLine($"Processed: {Path.GetFileName(imagePath)} - Confidence: {result.Confidence:P2}");
    }
}
Imports IronOcr
Imports System
Imports System.IO

' Process multiple similar images
Dim ocr As New IronTesseract()
Dim imageFiles As String() = Directory.GetFiles("C:\Images", "*.png")

' Run Filter Wizard on first image to discover optimal settings
Dim baselineConfidence As Double
Dim optimalCode As String = OcrInputFilterWizard.Run(imageFiles(0), baselineConfidence, ocr)
Console.WriteLine($"Baseline confidence: {baselineConfidence:P2}")
Console.WriteLine("Optimal filter sequence discovered")

' Apply discovered filters to all images
For Each imagePath As String In imageFiles
    Using input As New OcrImageInput(imagePath)
        ' Apply the filter sequence discovered by the wizard
        ' The actual filters would be applied here based on the wizard output
        Dim result = ocr.Read(input)
        Console.WriteLine($"Processed: {Path.GetFileName(imagePath)} - Confidence: {result.Confidence:P2}")
    End Using
Next
$vbLabelText   $csharpLabel

Welche Ergebnisse liefert der Filter Wizard?

Konsolenausgabe des Filter-Assistenten mit 65 % Konfidenzniveau und generiertem C#-Code mit Bildverarbeitungsmethoden

Die Ausgabe des Filterassistenten zeigt 65 % Konfidenz als bestmögliches Ergebnis für dieses spezielle Bild an. Konfidenzwerte sind eine wichtige Kennzahl für die Bewertung der OCR-Genauigkeit. Erfahren Sie mehr über Ergebniszuverlässigkeit in unserem speziellen Leitfaden.

Das Eingabebild enthält extreme Verzerrungen und künstliches Rauschen. Dies demonstriert die Fähigkeiten des Filter-Assistenten in schwierigen Szenarien. Für die Verwendung in der Produktion sollten Sie nach Möglichkeit mit qualitativ hochwertigeren Quellbildern beginnen.

Das generierte Code-Snippet bietet:

  • Exakte Filterreihenfolge: Die Reihenfolge der Operationen ist entscheidend für optimale Ergebnisse
  • Methodenverkettung: Sauberer, lesbarer Code, der leicht zu implementieren ist
  • Keine Parameter zu erraten: Jeder Filter ist für die beste Leistung konfiguriert

Wie wende ich die empfohlene Filterkombination an?

Wenden Sie nach dem Ausführen des Filter-Assistenten die bereitgestellten Einstellungen für den Codeschnipsel auf Ihr Eingabebild an, um die Ergebnisse und die Zuverlässigkeit zu überprüfen. Dies gewährleistet reproduzierbare Ergebnisse bei ähnlichen Bildern in Ihrer Dokumentenverarbeitungspipeline.

Wie ist der empfohlene Code zu implementieren?

:path=/static-assets/ocr/content-code-examples/how-to/filter-wizard-best-combination.cs
using IronOcr;
using System;

// Initialize the Tesseract engine
var ocrTesseract = new IronTesseract();

// Load the image into an OcrInput object
using (var input = new OcrImageInput("noise.png"))
{
    // Apply the exact filter chain recommended by the Wizard's output
    input.Invert();
    input.DeNoise();
    input.Contrast();
    input.AdaptiveThreshold();

    // Run OCR on the pre-processed image
    OcrResult result = ocrTesseract.Read(input);

    // Print the final result and confidence
    Console.WriteLine($"Result: {result.Text}");
    Console.WriteLine($"Confidence: {result.Confidence}");
}
Imports IronOcr
Imports System

' Initialize the Tesseract engine
Dim ocrTesseract As New IronTesseract()

' Load the image into an OcrInput object
Using input As New OcrImageInput("noise.png")
    ' Apply the exact filter chain recommended by the Wizard's output
    input.Invert()
    input.DeNoise()
    input.Contrast()
    input.AdaptiveThreshold()

    ' Run OCR on the pre-processed image
    Dim result As OcrResult = ocrTesseract.Read(input)

    ' Print the final result and confidence
    Console.WriteLine($"Result: {result.Text}")
    Console.WriteLine($"Confidence: {result.Confidence}")
End Using
$vbLabelText   $csharpLabel

Die Reihenfolge der Filteranwendungen ist von großer Bedeutung. Der Filter-Assistent bestimmt sowohl die zu verwendenden Filter als auch deren optimale Reihenfolge. Diese intelligente Abfolge macht den Filter-Assistenten zu einem wertvollen Werkzeug für komplexe Preprocessing-Szenarien.

Um die Kontrolle über den OCR-Prozess zu verbessern, sollten Sie die Implementierung von Fehlerbehandlung und Validierung in Betracht ziehen:

/* :path=/static-assets/ocr/content-code-examples/how-to/filter-wizard-validation.cs */
using IronOcr;
using System;

var ocrEngine = new IronTesseract();

try
{
    using (var input = new OcrImageInput(@"C:\Images\document.png"))
    {
        // Apply Filter Wizard recommended sequence
        input.Invert();
        input.DeNoise();
        input.Contrast();
        input.AdaptiveThreshold();

        // Configure additional OCR settings
        ocrEngine.Configuration.ReadBarCodes = false;
        ocrEngine.Configuration.RenderSearchablePdf = true;

        // Perform OCR with timeout protection
        var result = ocrEngine.Read(input);

        // Validate results
        if (result.Confidence >= 0.6)
        {
            Console.WriteLine("OCR successful with high confidence");
            // Process the extracted text
        }
        else
        {
            Console.WriteLine("Low confidence result - consider manual review");
        }
    }
}
catch (Exception ex)
{
    Console.WriteLine($"OCR processing error: {ex.Message}");
}
/* :path=/static-assets/ocr/content-code-examples/how-to/filter-wizard-validation.cs */
using IronOcr;
using System;

var ocrEngine = new IronTesseract();

try
{
    using (var input = new OcrImageInput(@"C:\Images\document.png"))
    {
        // Apply Filter Wizard recommended sequence
        input.Invert();
        input.DeNoise();
        input.Contrast();
        input.AdaptiveThreshold();

        // Configure additional OCR settings
        ocrEngine.Configuration.ReadBarCodes = false;
        ocrEngine.Configuration.RenderSearchablePdf = true;

        // Perform OCR with timeout protection
        var result = ocrEngine.Read(input);

        // Validate results
        if (result.Confidence >= 0.6)
        {
            Console.WriteLine("OCR successful with high confidence");
            // Process the extracted text
        }
        else
        {
            Console.WriteLine("Low confidence result - consider manual review");
        }
    }
}
catch (Exception ex)
{
    Console.WriteLine($"OCR processing error: {ex.Message}");
}
Imports IronOcr
Imports System

Dim ocrEngine As New IronTesseract()

Try
    Using input As New OcrImageInput("C:\Images\document.png")
        ' Apply Filter Wizard recommended sequence
        input.Invert()
        input.DeNoise()
        input.Contrast()
        input.AdaptiveThreshold()

        ' Configure additional OCR settings
        ocrEngine.Configuration.ReadBarCodes = False
        ocrEngine.Configuration.RenderSearchablePdf = True

        ' Perform OCR with timeout protection
        Dim result = ocrEngine.Read(input)

        ' Validate results
        If result.Confidence >= 0.6 Then
            Console.WriteLine("OCR successful with high confidence")
            ' Process the extracted text
        Else
            Console.WriteLine("Low confidence result - consider manual review")
        End If
    End Using
Catch ex As Exception
    Console.WriteLine($"OCR processing error: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

Was sind die endgültigen OCR-Ergebnisse nach Anwendung von Filtern?

Terminal zeigt OCR-Ergebnisse: extrahierter Text 'Testing: Testin' mit 65,61% Konfidenz nach Anwendung des Filterassistenten

IronOCR extrahiert den meisten Text selbst unter stark verzerrten Bedingungen. Die Vertrauensstufe entspricht dem Bericht des Filterassistenten. Detaillierte Informationen zur Behandlung von OCR-Ergebnissen finden Sie in unserem Leitfaden zur Datenausgabe.

Welche Tipps für Fortgeschrittene sollte ich beachten?

Beachten Sie diese Best Practices, wenn Sie den Filter Wizard in der Produktion verwenden:

  1. Stapelverarbeitung: Testen Sie an repräsentativen Beispielen und wenden Sie die Filterkette dann auf ähnliche Bilder an.

  2. Leistungsoptimierung: Der Filter-Assistent ist gründlich, aber zeitaufwändig. Für eine schnellere OCR, siehe schnelle OCR-Konfiguration.

  3. Benutzerdefinierte Sprachunterstützung: Für nicht-englische Texte können Sie mehrere Sprachen verwenden, um die Erkennung zu optimieren.

  4. API-Integration: Besuchen Sie unsere API-Referenz für eine vollständige Dokumentation.

  5. Dokumentenspezifische Optimierung: Verschiedene Dokumenttypen profitieren von speziellen Ansätzen:

  6. Speichermanagement: Ordnungsgemäßes Entsorgen von OcrInput-Objekten mit der using-Anweisung.

  7. Fehlerbehebung: Implementierung von Ausweichstrategien für Ergebnisse mit geringer Zuverlässigkeit. Ziehen Sie für kritische Dokumente eine manuelle Überprüfung in Betracht.

Der Filter-Assistent bietet eine leistungsstarke automatische Vorverarbeitungserkennung für optimale OCR-Ergebnisse. Durch die automatische Ermittlung der besten Vorverarbeitungspipeline für Ihre spezifischen Bilder wird das Rätselraten bei der Bildvorbereitung eliminiert und eine konsistente, qualitativ hochwertige Textextraktion in Ihren Anwendungen gewährleistet.

Häufig gestellte Fragen

Was ist der OCR-Filter-Assistent und wie hilft er bei der Bildvorverarbeitung?

Der IronOCR Filter Wizard ist ein automatisiertes Tool, das alle möglichen Kombinationen von Vorverarbeitungsfiltern für Ihr Bild testet, um optimale OCR-Einstellungen zu finden. Er macht das manuelle Ausprobieren überflüssig, indem er automatisch verschiedene Filterkombinationen evaluiert, um die OCR-Sicherheit und -Genauigkeit zu maximieren, und gibt dann die beste Filterkombination als einsatzbereites C#-Codefragment zurück.

Wie verwende ich den Filter Wizard in meiner C#-Anwendung?

Die Verwendung des IronOCR-Filterassistenten ist einfach - rufen Sie einfach OcrInputFilterWizard.Run() mit Ihrem Bildpfad, einem Out-Parameter für die Konfidenzbewertung und einer IronTesseract-Instanz auf. Zum Beispiel: string code = OcrInputFilterWizard.Run("image.png", out double confidence, new IronTesseract());

Welche Parameter akzeptiert die Methode OcrInputFilterWizard.Run?

Die Methode OcrInputFilterWizard.Run in IronOCR benötigt drei Parameter: das Eingabebild (als Dateipfad), einen Out-Parameter, der die resultierende Konfidenzstufe zurückgibt, und eine Instanz der IronTesseract Engine für die Verarbeitung.

Warum sollte ich den Filter-Assistenten verwenden, anstatt Filter manuell zu testen?

Die manuelle Vorverarbeitung von Filtertests ist zeitaufwändig und anspruchsvoll, insbesondere bei Scans von geringer Qualität oder Bildern mit unterschiedlichem Rauschpegel. Der Filterassistent von IronOCR automatisiert diesen Prozess, indem er Filterkombinationen umfassend testet und die höchste Konfidenzstufe mit dem exakt benötigten C#-Code zurückgibt, was erhebliche Entwicklungszeit spart.

Wie ermittelt der Filter-Assistent die beste Filterkombination?

Der Filter-Assistent von IronOCR testet mehrere Kombinationen von Vorverarbeitungsfiltern auf Ihrem Bild und misst den OCR-Konfidenzwert für jede Kombination. Anschließend wählt er den Filtersatz aus, der den höchsten Konfidenzwert erzielt, und gibt diese optimale Kombination als ausführbaren C#-Code zurück.

Kann der Filter-Assistent auch mit qualitativ schlechten oder verrauschten Bildern arbeiten?

Ja, der Filterassistent von IronOCR ist besonders effektiv bei schwierigen Bildern, einschließlich Scans von geringer Qualität und Bildern mit unterschiedlichen Rausch- und Verzerrungswerten. Er findet automatisch die optimale Vorverarbeitungskombination, um die OCR-Genauigkeit auch bei schwierigem Ausgangsmaterial zu maximieren.

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
Bereit anzufangen?
Nuget Downloads 5,384,824 | Version: 2026.2 gerade veröffentlicht