Jak poprawić kolory obrazów do czytania w języku C# | IronOCR

Jak naprawić kolory obrazu do odczytu w C

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

Napraw kolory obrazu w C# używając metod binarizacji, skali szarości, inwersji oraz zamiany kolorów IronOCR, aby poprawić czytelność tekstu i dokładność OCR. Odczytaj specyficzne kolory tekstu dla ukierunkowanej ekstrakcji.

Szybki start: Izoluj specjalne kolory tekstu

Użyj metody SelectTextColor IronOCR, aby skupić OCR na określonych kolorach tekstu bez potrzeby skomplikowanej manipulacji obrazem. Załaduj obraz, wybierz kolor tekstu i tolerancję, a następnie wyciągnij tylko ten tekst dla dokładnych wyników OCR.

  1. Install IronOCR with NuGet Package Manager

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

    new IronTesseract().Read(new IronOcr.OcrImageInput("sample.jpg").SelectTextColor(new IronSoftware.Drawing.Color("#DB645C"), 60));
  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 zbinarizować obraz, aby poprawić OCR?

Binarizacja konwertuje obrazy do formatu dwukolorowego, zazwyczaj czarno-białego. Dzięki temu oddziela tekst od tła oraz redukuje szumy, co sprawia, że tekst jest bardziej wyrazisty i łatwiejszy do odczytu.

Dlaczego binarizacja poprawia dokładność OCR?

Zastosuj binaryzację używając metody Binarize. OCR działa najlepiej z obrazami o wysokim kontraście, które mają czarny tekst na białym tle. Ta metoda tworzy wyraźne rozgraniczenie między tłem a znakami.

Binarizacja doskonale sprawdza się w przypadku skanowanych dokumentów mających nierówne oświetlenie lub szumy tła. Algorytm analizuje obrazy i określa optymalne progi dla oddzielenia tekstu na pierwszym planie od tła. Dla zaawansowanych technik przetwarzania wstępnego zobacz Przewodnik Optymalizacji Obrazów OCR.

Jaka jest implementacja kodu dla binarizacji?

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-binarize-image.cs
using IronOcr;

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

// Add image
using var imageInput = new OcrImageInput("sample.jpg");
// Apply binarize affect
imageInput.Binarize();

// Export the modified image
imageInput.SaveAsImages("binarize.jpg");
Imports IronOcr

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Add image
Private imageInput = New OcrImageInput("sample.jpg")
' Apply binarize affect
imageInput.Binarize()

' Export the modified image
imageInput.SaveAsImages("binarize.jpg")
$vbLabelText   $csharpLabel

Do przetwarzania zbiorczego, połącz binarizację z innymi filtrami. Użyj Kreatora Filtrów, aby określić najlepszą kombinację filtrów dla swoich obrazów.

Jak mogę eksportować i porównać wyniki?

Eksportuj zmodyfikowane obrazy używając metody SaveAsImages. Porównaj obrazy przed i po binarizacji poniżej.

Sample image with red and black text on blue-gray background showing OCR challenges before binarization
Binarized version showing clear black text on pure white background for optimal OCR processing

Jak konwertować obrazy na skalę szarości dla lepszego czytania?

Konwertowanie obrazów na skalę szarości redukuje wizualny chaos i poprawia czytelność. To pomaga, gdy oryginalne kolory odrywają uwagę od treści.

Kiedy powinienem użyć skali szarości zamiast innych metod?

Zastosuj skalę szarości używając metody ToGrayScale. Proces uśrednia wartości R, G i B.

Skala szarości dobrze działa z kolorowymi tłami lub znakami wodnymi, które zakłócają rozpoznawanie tekstu. W przeciwieństwie do binarizacji, skala szarości zachowuje detale w obrazach z subtelnymi wariantami. Użyj jej do fotografii z osadzonym tekstem lub złożonych układów. Dla skanów niskiej jakości zobacz Poprawa Skanów i Obrazów Niskiej Jakości.

Jaki jest prosty kod dla konwersji na skalę szarości?

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-grayscale-image.cs
// Apply grayscale affect
imageInput.ToGrayScale();
' Apply grayscale affect
imageInput.ToGrayScale()
$vbLabelText   $csharpLabel

Dla zróżnicowanej jakości obrazów, połącz skalę szarości z innymi krokami przetwarzania wstępnego. Dokumentacja Klasa OcrInput wyjaśnia łączenie wielu filtrów.

Jak skala szarości wypada w porównaniu z oryginałem?

Sample text with red headers and black body text showing multiple colors before grayscale conversion
Grayscale document with clear text about tech executives, demonstrating improved readability after conversion

Kiedy powinienem odwracać kolory obrazu?

Odwracanie kolorów poprawia kontrast. Konwersja białego tekstu na czarnym tle na czarny tekst na białym tle poprawia czytelność.

Jak wdrożyć inwersję kolorów?

Użyj metody Invert, aby odwrócić kolory. Przekaż wartość boolean, aby usunąć kanały kolorów i zwrócić obraz w prostych odcieniach szarości.

Inwersja kolorów radzi sobie z negatywami obrazami lub zrzutami ekranu z ciemnymi motywami. Współczesne aplikacje używają interfejsów trybu ciemnego, co stanowi wyzwanie dla tradycyjnego OCR. Odwracanie tych obrazów zapewnia optymalne rozpoznawanie. Dla różnych typów obrazów zobacz Przewodnik Konfiguracji Szybkiego OCR.

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-invert-image.cs
// Apply invert affect
imageInput.Invert();
' Apply invert affect
imageInput.Invert()
$vbLabelText   $csharpLabel

Dla przetwarzania zbiorczego z mieszanymi rodzajami dokumentów, wdroż automatyczne wykrywanie ciemnego tła. Funkcje Wizji Komputerowej w IronOCR rozpoznają, kiedy potrzebna jest inwersja.

Jaka jest różnica pomiędzy opcjami inwersji?

Porównaj metodę Invert z wykorzystaniem i bez wykorzystania skali szarości:

Color-inverted document maintaining original color channels with reversed values
Business text with inverted colors showing white text on dark background demonstrating color inversion effect

Jak mogę zastąpić konkretny kolor w obrazie?

Zamieniaj specyficzne kolory, aby podkreślić lub zminimalizować elementy. Użyj tego, aby poprawić wyrazistość tekstu lub skorygować problematyczne kontrasty.

Dlaczego tolerancja jest ważna w zamianie koloru?

Metoda ReplaceColor wymaga aktualnego koloru, nowego koloru i wartości tolerancji. Wyższa tolerancja lepiej radzi sobie z zamazanymi obrazami.

Tolerancja określa, jak ściśle piksele muszą pasować do koloru docelowego. Niskie wartości (0-50) pasują do jednolitych kolorów. Wyższe wartości (100-200) radzą sobie z wygładzanym tekstem lub artefaktami kompresji. To pomaga przy skanowanych dokumentach, gdzie rozmycie tuszu lub tekstura papieru tworzą wariacje.

Jak wdrożyć zamianę kolorów?

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-replace-color.cs
using IronOcr;

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

// Add image
using var imageInput = new OcrImageInput("sample.jpg");
IronSoftware.Drawing.Color currentColor = new IronSoftware.Drawing.Color("#DB645C");
IronSoftware.Drawing.Color newColor = IronSoftware.Drawing.Color.DarkCyan;

// Replace color
imageInput.ReplaceColor(currentColor, newColor, 80);

// Export the modified image
imageInput.SaveAsImages("replaceColor");
Imports IronOcr

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Add image
Private imageInput = New OcrImageInput("sample.jpg")
Private currentColor As New IronSoftware.Drawing.Color("#DB645C")
Private newColor As IronSoftware.Drawing.Color = IronSoftware.Drawing.Color.DarkCyan

' Replace color
imageInput.ReplaceColor(currentColor, newColor, 80)

' Export the modified image
imageInput.SaveAsImages("replaceColor")
$vbLabelText   $csharpLabel

Jak obsłużyć zaawansowane scenariusze zamiany kolorów?

Połącz wiele zamian w złożonych scenariuszach:

/* :path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-multiple-replacements.cs */
// Replace multiple colors in sequence
using var imageInput = new OcrImageInput("multi-color-document.jpg");

// Replace red text with black
imageInput.ReplaceColor(IronSoftware.Drawing.Color.Red, IronSoftware.Drawing.Color.Black, 70);

// Replace blue headers with dark gray
imageInput.ReplaceColor(IronSoftware.Drawing.Color.Blue, IronSoftware.Drawing.Color.DarkGray, 60);

// Replace light yellow background with white
imageInput.ReplaceColor(new IronSoftware.Drawing.Color("#FFFACD"), IronSoftware.Drawing.Color.White, 40);

// Perform OCR on the cleaned image
var result = ocrTesseract.Read(imageInput);
/* :path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-multiple-replacements.cs */
// Replace multiple colors in sequence
using var imageInput = new OcrImageInput("multi-color-document.jpg");

// Replace red text with black
imageInput.ReplaceColor(IronSoftware.Drawing.Color.Red, IronSoftware.Drawing.Color.Black, 70);

// Replace blue headers with dark gray
imageInput.ReplaceColor(IronSoftware.Drawing.Color.Blue, IronSoftware.Drawing.Color.DarkGray, 60);

// Replace light yellow background with white
imageInput.ReplaceColor(new IronSoftware.Drawing.Color("#FFFACD"), IronSoftware.Drawing.Color.White, 40);

// Perform OCR on the cleaned image
var result = ocrTesseract.Read(imageInput);
Imports IronSoftware.Drawing

' Replace multiple colors in sequence
Using imageInput As New OcrImageInput("multi-color-document.jpg")

    ' Replace red text with black
    imageInput.ReplaceColor(Color.Red, Color.Black, 70)

    ' Replace blue headers with dark gray
    imageInput.ReplaceColor(Color.Blue, Color.DarkGray, 60)

    ' Replace light yellow background with white
    imageInput.ReplaceColor(New Color("#FFFACD"), Color.White, 40)

    ' Perform OCR on the cleaned image
    Dim result = ocrTesseract.Read(imageInput)

End Using
$vbLabelText   $csharpLabel

Do zaawansowanej zamiany kolorów zobacz Filtry Korekcji Jakości Obrazu dla dodatkowych technik przetwarzania wstępnego.

Jakie są wizualne wyniki zamiany kolorów?

Text sample with orange-red colored names and content on blue background showing original colors before replacement
Document after color replacement showing dark cyan headers replacing original orange-red text

Jak odczytać tylko określone kolory tekstu?

Odczytaj określone kolory tekstu za pomocą metody SelectTextColor. Określ docelowy kolor i tolerancję (0-255). Tolerancja oznacza dopuszczalne różnice między pikselem a wybranym kolorem dla wartości R, G i B.

Jak tolerancja kolorowa wpływa na wyniki?

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-select-text-color.cs
using IronOcr;
using System;

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

// Add image
using var imageInput = new OcrImageInput("sample.jpg");
// Text color to focus on
IronSoftware.Drawing.Color focusColor = new IronSoftware.Drawing.Color("#DB645C");

// Specify which text color to read
imageInput.SelectTextColor(focusColor, 60);

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

// Output result to console
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports System

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Add image
Private imageInput = New OcrImageInput("sample.jpg")
' Text color to focus on
Private focusColor As New IronSoftware.Drawing.Color("#DB645C")

' Specify which text color to read
imageInput.SelectTextColor(focusColor, 60)

' Perform OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)

' Output result to console
Console.WriteLine(ocrResult.Text)
$vbLabelText   $csharpLabel

Użyj selektywnego odczytywania kolorów do formularzy z kolorowymi sekcjami, wyciągania podkreślonego tekstu lub odczytywania specyficznych ostrzeżeń. Dla ekstrakcji danych strukturalnych zobacz Klasa OcrResult do zaawansowanego przetwarzania.

Jaki wynik mogę oczekiwać z wyboru koloru?

Wynik OCR czyta tylko tekst w kolorze pomarańczowym:

Konsola debug pokazująca tekst pomarańczowy wyodrębniony przez OCR: MASAYOSHI SON oraz YASUMITSU SHIGETA z dokumentu biznesowego

Jak zapisać zmodyfikowane pliki PDF z zastosowanymi filtrami?

IronOCR zapisuje zmodyfikowane pliki PDF z lub bez zastosowanych filtrów. Drugi parametr metody SaveAsSearchablePdf określa, czy zapisać z zastosowanymi filtrami.

Jaka jest implementacja dla PDF-ów wyszukiwalnych?

:path=/static-assets/ocr/content-code-examples/how-to/image-quality-correction-searchable-pdf.cs
using IronOcr;

// Create OCR engine: filters are applied at the OcrInput level, so no configuration changes are needed here
var ocr = new IronTesseract();
var ocrInput = new OcrInput();

// Load the scanned PDF as the OCR source
ocrInput.LoadPdf("invoice.pdf");

// Convert to grayscale: removes color noise that can reduce OCR accuracy on color-printed documents
ocrInput.ToGrayScale();
// Run OCR on the preprocessed input
OcrResult result = ocr.Read(ocrInput);

// Write the searchable PDF; true = embed the grayscale-filtered image rather than the original color scan
result.SaveAsSearchablePdf("outputGrayscale.pdf", true);
Imports IronOcr

' Create OCR engine: filters are applied at the OcrInput level, so no configuration changes are needed here
Dim ocr As New IronTesseract()
Dim ocrInput As New OcrInput()

' Load the scanned PDF as the OCR source
ocrInput.LoadPdf("invoice.pdf")

' Convert to grayscale: removes color noise that can reduce OCR accuracy on color-printed documents
ocrInput.ToGrayScale()
' Run OCR on the preprocessed input
Dim result As OcrResult = ocr.Read(ocrInput)

' Write the searchable PDF; True = embed the grayscale-filtered image rather than the original color scan
result.SaveAsSearchablePdf("outputGrayscale.pdf", True)
$vbLabelText   $csharpLabel

Kiedy stosować filtry do zapisywanego pliku PDF?

Stosuj filtry, gdy tworzysz czystsze, bardziej czytelne dokumenty. To pomaga przy celach archiwalnych lub dzieleniu się dokumentami na różnych urządzeniach. Zobacz Tworzenie Wyszukiwalnych PDF-ów przez OCR dla więcej informacji.

Dla złożonych dokumentów z tabelami, odkryj Odczyt Tabeli w Dokumencie dla specjalizowanej ekstrakcji. Dla przetwarzania w dużej ilości, zobacz Wielowątkowy Tesseract OCR, aby zoptymalizować aplikację filtrów na wielu dokumentach.

Często Zadawane Pytania

Jak mogę naprawić słabe kolory obrazu, które wpływają na dokładność OCR?

IronOCR oferuje wiele metod korekcji kolorów, w tym binaryzację, konwersję do skali szarości, inwersję i zamianę kolorów. Te filtry pomagają poprawić czytelność tekstu, zwiększając kontrast między tekstem a tłem, co ułatwia silnikowi OCR dokładne wyodrębnianie tekstu z obrazów o niskiej jakości kolorów.

Czym jest binaryzacja i kiedy należy jej używać do OCR?

Binarization konwertuje obrazy do formatu dwukolorowego (zwykle czarno-białego) za pomocą metody Binarize IronOCR. Jest szczególnie skuteczna dla zeskanowanych dokumentów z nierównomiernym oświetleniem lub szumem w tle, ponieważ tworzy wyraźne rozróżnienie między tekstem a tłem przez analizowanie obrazu i określenie optymalnych progów do separacji.

Jak mogę wyodrębnić tylko tekst o konkretnym kolorze z obrazu?

Metoda SelectTextColor IronOCR pozwala skupić się na określonych kolorach tekstu, bez skomplikowanej manipulacji obrazem. Wystarczy określić docelowy kolor i poziom tolerancji - na przykład SelectTextColor(new IronSoftware.Drawing.Color("#DB645C"), 60) - aby wyodrębnić tylko tekst z tego zakresu kolorów.

Kiedy powinienem konwertować obrazy do skali szarości zamiast używać binaryzacji?

Użyj metody ToGrayScale IronOCR, gdy masz do czynienia z kolorowymi tłami lub znakami wodnymi, które przeszkadzają w rozpoznawaniu tekstu. W przeciwieństwie do binaryzacji, skala szarości zachowuje szczegóły w obrazach z subtelnymi wariacjami, co czyni ją idealną, gdy chcesz utrzymać jakość obrazu, jednocześnie redukując wizualny hałas.

Czy mogę eksportować poprawione obrazy, aby zobaczyć wyniki filtrów kolorów?

Tak, IronOCR oferuje metodę SaveAsImages do eksportowania zmodyfikowanych obrazów po zastosowaniu korekcji kolorów. Pozwala to porównać wyniki przed i po, pomagając określić, które metody korekcji kolorów działają najlepiej dla Twoich konkretnych obrazów.

Jak mogę określić najlepszy filtr korekcji kolorów dla moich obrazów?

IronOCR zawiera narzędzie Filter Wizard, które pomaga określić optymalną kombinację filtrów dla Twoich obrazów. Dla przetwarzania wsadowego możesz łączyć wiele filtrów, takich jak binaryzacja, z innymi technikami wstępnymi, aby uzyskać najlepsze wyniki OCR dla swojego typu dokumentu.

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
Sprawdzone przez
Jeff Fritz
Jeffrey T. Fritz
Główny Menedżer Programu - Zespół .NET Community
Jeff jest również Głównym Menedżerem Programu dla zespołów .NET i Visual Studio. Jest producentem wykonawczym wirtualnej serii konferencji .NET Conf i prowadzi 'Fritz and Friends', transmisję na żywo dla deweloperów emitowaną dwa razy w tygodniu, gdzie rozmawia o technologii i pisze kod razem z widzami. Jeff pisze warsztaty, prezentacje i planuje treści dla największych wydarzeń Microsoft dla deweloperów, w tym Microsoft Build, Microsoft Ignite, .NET Conf i Microsoft MVP Summit.
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.