Converter Imagem em Texto de CAPTCHAs com IronOCR: O Que É Possível?
O IronOCR consegue realizar leitura de texto de códigos captcha?
Isso é possível, mas não garantido.
A maioria dos geradores de CAPTCHA são projetados deliberadamente para enganar softwares de OCR, e alguns até usam a mensagem "Falha na leitura pelo software de OCR", como o Tesseract, como teste unitário.
Os códigos Captcha são, por definição, muito difíceis de serem lidos por mecanismos de OCR. A resolução é muito baixa e cada personagem é organizado especificamente com ângulos e espaços diferentes em relação aos outros, além da inclusão de ruído de fundo variável.
Imagens em tons de cinza com ruído de fundo removido são mais eficazes do que imagens coloridas, mas ainda podem representar um desafio:
- Filtro OcrInput.DeNoise() ou OcrInput.DeepCleanBackgroundNoise()
- Filtro OcrInput.ToGrayScale()
Abaixo está um exemplo de código C# que tenta remover ruído e converter uma imagem CAPTCHA para escala de cinza para melhorar os resultados de 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
Explicação:
IronOcr: Esta biblioteca é usada para ler texto de imagens.OcrInput: Esta classe representa a entrada de imagem para o processamento de OCR.DeNoise: Este método é usado para reduzir o ruído de fundo na imagem.DeepCleanBackgroundNoise: Este método é empregado para uma redução de ruído mais agressiva se o básicoDeNoisenão for suficiente.ToGrayScale: Isso converte a imagem para escala de cinza para melhorar a precisão do reconhecimento.Read: Este método é chamado para extrair texto da imagem pré-processada.

