Jak korzystać z kreatora filtrów w języku C# w celu uzyskania lepszych wyników OCR

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

Kreator filtrów IronOCR automatycznie testuje wszystkie kombinacje filtrów przetwarzania wstępnego na obrazie, aby znaleźć optymalne ustawienia OCR, zwracając zarówno najwyższy wynik pewności, jak i dokładny kod C# potrzebny do odtworzenia wyników.

Wstępne przetwarzanie obrazów do OCR może stanowić wyzwanie. Wiele filtrów może poprawić rozpoznawanie, ale znalezienie odpowiedniej kombinacji wymaga wielu prób i błędów. Każdy obrazek stanowi wyjątkowe wyzwanie, co sprawia, że ręczne testowanie jest czasochłonne. Dotyczy to w szczególności sytuacji, gdy pracujemy z niskiej jakości skanami lub obrazami o różnym poziomie szumów i zniekształceń.

IronOCR's OcrInputFilterWizard rozwiazuje ten problem. Kreator filtrów automatycznie ocenia kombinacje filtrów, aby zmaksymalizować pewność i dokładność OCR. Przeprowadza wyczerpujące testy w celu uzyskania optymalnych ustawień i zwraca najlepszą kombinację filtrów w postaci fragmentu kodu, umożliwiając łatwe odtworzenie wyników. Ta funkcja płynnie integruje się z klasą OcrInput, upraszczając stosowanie filtrów do obrazów.

Ten przewodnik pokazuje, jak działa Kreator filtrów, oraz przedstawia fragmenty kodu i parametry, których używa. Aby dowiedzieć się więcej o optymalizacji procesu OCR, zapoznaj się z naszym przewodnikiem dotyczącym korekcji jakości obrazu.

Szybki start: Automatycznie znajdź idealny łańcuch filtrów obrazu

Skorzystaj z Kreatora filtrów IronOCR, aby przetestować wszystkie kombinacje filtrów przetwarzania wstępnego i uzyskać fragment kodu o najlepszej wydajności. W jednym wierszu podaj najwyższy wynik pewności oraz dokładny łańcuch filtrów C# dla podobnych obrazów.

  1. Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr
  2. Skopiuj i uruchom ten fragment kodu.

    string code = OcrInputFilterWizard.Run("image.png", out double confidence, new IronTesseract());
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer

Jak działa Kreator filtrów?

Metoda OcrInputFilterWizard.Run przyjmuje trzy parametry: obraz wejsciowy, parametr wyjsciowy dla wynikowego poziomu pewnosci oraz instancje silnika Tesseract. Aby uzyskać informacje na temat zaawansowanego sterowania silnikiem, zapoznaj się z naszym przewodnikiem dotyczącym szczegółowej konfiguracji Tesseract.

Testuje wiele kombinacji filtrów przetwarzania wstępnego, aby uzyskać najlepszy wynik pewności. Najwyższy wynik zaufania określa, który zestaw filtrów należy zastosować do obrazu wejściowego. To podejście sprawdza się skutecznie w przypadku trudnych obrazów wymagających korekcji orientacji lub innych złożonych etapów przetwarzania wstępnego.

Kreator filtrów nie ma żadnych ustawień wstępnych ani ograniczeń dotyczących kombinacji. Skupia się na osiągnięciu jak najlepszego wyniku zaufania poprzez kompleksowe testy filtrów. Aby uzyskać informacje zwrotne w czasie rzeczywistym podczas przetwarzania, wdroż system śledzenia postępów w celu monitorowania działania kreatora.

Filtry dostępne w testowaniu kombinacji:

  • input.Contrast() - Dostosowuje kontrast dla wyrazistosci tekstu
  • input.Sharpen() - Zwieksza definicje krawedzi
  • input.Binarize() - Konwertuje na czarno-bialy
  • input.ToGrayScale() - Usuwa informacje o kolorze
  • input.Invert() - Odwraca kolory
  • input.Deskew() - Korekta przetraconego tekstu
  • input.Scale(...) - Zmieksza do optymalnych wymiarow
  • input.Denoise() - Usuwa szum pikselowy
  • input.DeepCleanBackgroundNoise() - Zaawansowane usuwanie szumow
  • input.EnhanceResolution() - Poprawia rozdzielczosc niskiej jakosci
  • input.Dilate(), input.Erode() - Operacje rafinacji tekstu

Szczegółowe informacje na temat filtrów można znaleźć w tym samouczku dotyczącym filtrów obrazu. Dodatkowe techniki przetwarzania wstępnego są dostępne w przewodniku po filtrach korekcji obrazu.

Ta wyczerpująca metoda testowania wymaga czasu przetwarzania. W przypadku operacji na dużą skalę należy skorzystać z obsługi wielowątkowości, aby przetwarzać wiele obrazów jednocześnie.

Jakiego rodzaju obrazu powinienem użyć do testowania?

W tym przykładzie wykorzystano zrzut ekranu z silnym sztucznym szumem, aby zademonstrować działanie kreatora filtrów. Kreator filtrów skutecznie obsługuje różne typy obrazów, od zeskanowanych dokumentów po zdjęcia z tekstem.

Silnie uszkodzony obraz testowy z wzorem szumu, przedstawiający zniekształcony tekst w ramach demonstracji Kreatora filtrów

Przy wyborze obrazów testowych należy wziąć pod uwagę następujące czynniki:

  • Rozdzielczość obrazu: Obrazy o wyższej rozdzielczości (DPI) zazwyczaj dają lepsze wyniki. Zapoznaj się z naszym przewodnikiem dotyczącym ustawień DPI, aby uzyskać wskazówki dotyczące optymalizacji.
  • Typ dokumentu: Różne typy dokumentów wymagają określonych kombinacji filtrów. Dokumenty tożsamości mogą wymagać innego przetwarzania wstępnego niż standardowe dokumenty tekstowe.
  • Jakość źródła: Kreator filtrów doskonale radzi sobie z problematycznymi obrazami, ale w miarę możliwości zaczyna od źródła o najwyższej dostępnej jakości.

Jak uruchomić kreatora filtrów w moim kodzie?

: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

Kreator filtrów obsługuje różne formaty danych wejściowych. Informacje na temat obsługiwanych formatów można znaleźć w naszym przewodniku dotyczącym obrazów wejściowych. Można również przetwarzać pliki PDF lub pracować bezpośrednio ze strumieniami dla dynamicznych źródeł obrazów.

W przypadku scenariuszy przetwarzania wsadowego proszę rozważyć ten rozszerzony przykład:

/* :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

Jakie wyniki zwróci Kreator filtrów?

Wynik działania kreatora filtrów w konsoli pokazujący 65% wskaźnik pewności oraz wygenerowany kod C# z metodami przetwarzania obrazu

Wynik kreatora filtrów wskazuje 65% pewności jako najlepszy możliwy wynik dla tego konkretnego obrazu. Wskaźniki pewności są kluczowymi miernikami służącymi do oceny dokładności OCR. Dowiedz się więcej o pewności wyników w naszym specjalnym przewodniku.

Obraz wejściowy zawiera znaczne zniekształcenia i sztuczny szum. Pokazuje to możliwości Kreatora filtrów w trudnych scenariuszach. W przypadku zastosowań produkcyjnych, w miarę możliwości należy korzystać z obrazów źródłowych o wyższej jakości.

Wygenerowany fragment kodu zawiera:

  • Dokładna sekwencja filtrów: Kolejność operacji ma znaczenie dla uzyskania optymalnych wyników
  • Łańcuchowanie metod: przejrzysty, czytelny kod, który jest łatwy do wdrożenia
  • Nie trzeba zgadywać parametrów: każdy filtr jest skonfigurowany tak, aby zapewnić najlepszą wydajność

Jak zastosować zalecaną kombinację filtrów?

Po uruchomieniu kreatora filtrów zastosuj podane ustawienia fragmentu kodu do obrazu wejściowego, aby zweryfikować wyniki i poziom pewności. Zapewnia to powtarzalne wyniki dla podobnych obrazów w procesie przetwarzania dokumentów.

Jak wdrożyć zalecany kod?

: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

Kolejność stosowania filtrów ma duże znaczenie. Kreator filtrów określa zarówno to, które filtry mają być użyte, jak i ich optymalną kolejność. Ta inteligentna sekwencja sprawia, że Kreator filtrów jest cennym narzędziem w złożonych scenariuszach przetwarzania wstępnego.

Aby uzyskać większą kontrolę nad procesem OCR, warto rozważyć wdrożenie obsługi błędów i walidacji:

/* :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

Jakie są ostateczne wyniki OCR po zastosowaniu filtrów?

Terminal wyświetlający wyniki OCR: wyodrębniony tekst

IronOCR wyodrębnia większość tekstu nawet w warunkach znacznego zniekształcenia. Poziom pewności odpowiada raportowi kreatora filtrów. Aby uzyskać szczegółowe informacje na temat obsługi wyników OCR, zapoznaj się z naszym przewodnikiem dotyczącym eksportu danych.

Jakie zaawansowane wskazówki dotyczące użytkowania należy wziąć pod uwagę?

Podczas korzystania z Kreatora filtrów w środowisku produkcyjnym należy uwzględnić następujące najlepsze praktyki:

  1. Przetwarzanie wsadowe: Przeprowadź testy na reprezentatywnych próbkach, a następnie zastosuj łańcuch filtrów do podobnych obrazów.

  2. Optymalizacja wydajności: Kreator filtrów jest dokładny, ale czasochłonny. Aby przyspieszyć działanie OCR, zapoznaj się z konfiguracją szybkiego OCR.

  3. Obsługa języków niestandardowych: W przypadku tekstów nieanglojęzycznych należy rozważyć wiele języków w celu optymalizacji rozpoznawania.

  4. Integracja API: Odwiedź naszą sekcję Dokumentacji API, aby uzyskać pełną dokumentację.

  5. Optymalizacja pod kątem konkretnych dokumentów: Różne typy dokumentów wymagają specjalistycznego podejścia:

  6. Zarządzanie pamięcią: Prawidłowo usunąć obiekty OcrInput używając instrukcji using.

  7. Odzyskiwanie po błędach: Wdrożenie strategii awaryjnych dla wyników o niskim poziomie pewności. W przypadku dokumentów o znaczeniu krytycznym warto rozważyć ręczną weryfikację.

Kreator filtrów zapewnia zaawansowane, zautomatyzowane wykrywanie przetwarzania wstępnego w celu uzyskania optymalnych wyników OCR. Dzięki automatycznemu wyszukiwaniu najlepszego procesu przetwarzania wstępnego dla konkretnych obrazów eliminuje ono zgadywanie podczas przygotowywania obrazów i zapewnia spójne, wysokiej jakości wyodrębnianie tekstu we wszystkich aplikacjach.

Często Zadawane Pytania

Czym jest OCR Filter Wizard i jak pomaga w przetwarzaniu wstępnym obrazu?

IronOCR Filter Wizard to zautomatyzowane narzędzie testujące wszystkie możliwe kombinacje filtrów przetwarzania wstępnego na Twoim obrazie, aby znaleźć optymalne ustawienia OCR. Eliminuje proces ręcznego próbowania i błędów, automatycznie oceniając różne kombinacje filtrów w celu maksymalizacji pewności i dokładności OCR, a następnie zwraca najlepszą kombinację filtrów jako gotowy do użycia fragment kodu C#.

Jak używać Filter Wizard w mojej aplikacji C#?

Używanie Filter Wizard IronOCR jest proste - wystarczy wywołać OcrInputFilterWizard.Run() z ścieżką do obrazu, parametrem wyjściowym dla poziomu pewności i instancją IronTesseract. Na przykład: `string code = OcrInputFilterWizard.Run("image.png", out double confidence, new IronTesseract());`

Jakie parametry przyjmuje metoda OcrInputFilterWizard.Run?

Metoda OcrInputFilterWizard.Run w IronOCR przyjmuje trzy parametry: obraz wejściowy (jako ścieżka pliku), parametr wyjściowy zwracający poziom pewności oraz instancję silnika IronTesseract do przetwarzania.

Dlaczego powinienem używać Filter Wizard zamiast ręcznie testować filtry?

Ręczne testowanie filtrów przetwarzania wstępnego jest czasochłonne i trudne, zwłaszcza przy skanach niskiej jakości lub obrazach o zróżnicowanym poziomie szumów. Filter Wizard IronOCR automatyzuje ten proces, wyczerpująco testując kombinacje filtrów i zwracając najwyższy wynik pewności wraz z potrzebnym dokładnym kodem C#, oszczędzając przy tym znacznie czas na rozwój.

Jak Filter Wizard określa najlepszą kombinację filtrów?

Filter Wizard IronOCR testuje wiele kombinacji filtrów przetwarzania wstępnego na Twoim obrazie i mierzy wynikowy wskaźnik pewności OCR dla każdej kombinacji. Następnie wybiera zestaw filtrów, który osiąga najwyższy wynik pewności i zwraca tę optymalną kombinację jako wykonalny kod C#.

Czy Filter Wizard może działać z obrazami niskiej jakości lub zawierającymi szumy?

Tak, Filter Wizard IronOCR jest szczególnie skuteczny przy obrazach problematycznych, w tym skanach niskiej jakości i obrazach o zróżnicowanym poziomie szumu i zniekształceń. Automatycznie znajduje optymalną kombinację przetwarzania wstępnego, aby zmaksymalizować dokładność OCR nawet przy trudnym materiale źródłowym.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 5,571,678 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronOcr
uruchom próbkę obserwuj, jak twój obraz staje się tekstem z możliwością wyszukiwania.