Handling CAPTCHAs with IronOCR

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

L'IronOCR lira-t-il les codes captcha?

C'est possible, mais pas garanti.

La plupart des générateurs de CAPTCHA sont délibérément conçus pour tromper les logiciels de reconnaissance optique de caractères (OCR) et certains utilisent même l'expression "Failing to be read by OCR Software" (Échec de la lecture par un logiciel de reconnaissance optique de caractères), comme Tesseract, comme test unitaire.

Les codes Captcha sont par définition très difficiles à lire pour les moteurs OCR. La résolution est très faible et chaque caractère est organisé de manière spécifique, avec des angles et des écarts différents par rapport aux autres, ainsi que l'inclusion d'un bruit de fond variable.

Les images en niveaux de gris, débarrassées des bruits de fond, donnent de meilleurs résultats que les images en couleur, mais peuvent néanmoins constituer un défi :

Vous trouverez ci-dessous un exemple de code C# qui tente de supprimer le bruit et de convertir une image CAPTCHA en niveaux de gris afin d'améliorer les résultats de l'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
$vbLabelText   $csharpLabel

Explication:

  • IronOcr : Cette bibliothèque est utilisée pour lire du texte à partir d'images.
  • OcrInput : Cette classe représente l'image d'entrée pour le traitement OCR.
  • DeNoise : Cette méthode est utilisée pour réduire le bruit de fond dans l'image.
  • DeepCleanBackgroundNoise : Cette méthode est employée pour une réduction plus agressive du bruit si le DeNoise de base n'est pas suffisant.
  • ToGrayScale : Cette fonction convertit l'image en niveaux de gris afin d'améliorer la précision de la reconnaissance.
  • Lire : Cette méthode est appelée pour extraire le texte de l'image prétraitée.
Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 5,044,537 | Version : 2025.11 vient de sortir