Obsługa CAPTCHA z IronOCR
Czy IronOCR odczyta kody CAPTCHA?
Jest to możliwe, ale nie gwarantowane.
Większość generatorów CAPTCHA jest celowo zaprojektowana, aby zmylić oprogramowanie OCR, a niektóre nawet używają "Niepowodzenie w odczytaniu przez oprogramowanie OCR" takie jak Tesseract jako test jednostkowy.
Kody CAPTCHA z definicji są bardzo trudne do odczytania przez silniki OCR. Rozdzielczość jest bardzo niska, a każdy znak jest specjalnie uporządkowany pod różnymi kątami i odstępami od innych, wraz z uwzględnieniem różnego szumu tła.
Obrazy w skali szarości z usuniętym szumem tła są bardziej skuteczne niż obrazy kolorowe, ale nadal mogą okazać się wyzwaniem:
Poniżej znajduje się przykładowy kod w C#, który próbuje usunąć szum i przekształcić obraz CAPTCHA na skalę szarości, aby poprawić wyniki OCR:
using IronOcr;
class CaptchaReader
{
static void Main(string[] args)
{
// Initialize the IronOCR engine
var Ocr = new IronTesseract();
// Create an OCR input object
var Input = new OcrInput("captcha-image.jpg");
// Apply noise reduction to improve OCR accuracy
// This removes background noise while preserving text
Input.DeNoise();
// Optionally apply a deep clean for more aggressive noise removal
Input.DeepCleanBackgroundNoise();
// Convert the image to grayscale
// OCR works better on grayscale images compared to colored ones
Input.ToGrayScale();
// Perform OCR to extract text from the image
var Result = Ocr.Read(Input);
// Output the recognized text to the console
Console.WriteLine(Result.Text);
}
}
using IronOcr;
class CaptchaReader
{
static void Main(string[] args)
{
// Initialize the IronOCR engine
var Ocr = new IronTesseract();
// Create an OCR input object
var Input = new OcrInput("captcha-image.jpg");
// Apply noise reduction to improve OCR accuracy
// This removes background noise while preserving text
Input.DeNoise();
// Optionally apply a deep clean for more aggressive noise removal
Input.DeepCleanBackgroundNoise();
// Convert the image to grayscale
// OCR works better on grayscale images compared to colored ones
Input.ToGrayScale();
// Perform OCR to extract text from the image
var Result = Ocr.Read(Input);
// Output the recognized text to the console
Console.WriteLine(Result.Text);
}
}
Imports IronOcr
Friend Class CaptchaReader
Shared Sub Main(ByVal args() As String)
' Initialize the IronOCR engine
Dim Ocr = New IronTesseract()
' Create an OCR input object
Dim Input = New OcrInput("captcha-image.jpg")
' Apply noise reduction to improve OCR accuracy
' This removes background noise while preserving text
Input.DeNoise()
' Optionally apply a deep clean for more aggressive noise removal
Input.DeepCleanBackgroundNoise()
' Convert the image to grayscale
' OCR works better on grayscale images compared to colored ones
Input.ToGrayScale()
' Perform OCR to extract text from the image
Dim Result = Ocr.Read(Input)
' Output the recognized text to the console
Console.WriteLine(Result.Text)
End Sub
End Class
Wyjaśnienie:
IronOcr: Ta biblioteka jest używana do odczytywania tekstu z obrazów.OcrInput: Ta klasa reprezentuje wejście obrazu do przetwarzania OCR.DeNoise: Ta metoda jest używana do redukcji szumu tła na obrazie.DeepCleanBackgroundNoise: Ta metoda jest stosowana do bardziej agresywnej redukcji szumu, jeśli podstawowaDeNoisenie jest wystarczająca.ToGrayScale: To konwertuje obraz na skalę szarości, aby poprawić dokładność rozpoznawania.Read: Ta metoda jest wywoływana, aby wyodrębnić tekst z przetworzonego obrazu.

