Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
En la era digital actual, el reconocimiento óptico de caracteres (OCR) se ha convertido en parte integrante de diversas industrias, ya que permite convertir imágenes y documentos escaneados en texto editable y con capacidad de búsqueda.
Entre los muchos programas de OCR disponibles, como Google Cloud Vision (API de Cloud Vision), Adobe Acrobat Pro DC, ABBYY Finereader y muchos más, Windows OCR Engine vs Tesseract, y IronOCR destacan como competidores destacados, cada uno de los cuales ofrece funciones y capacidades únicas para ayudar al análisis de documentos.
Este artículo pretende ofrecer un análisis comparativo exhaustivo de estos tres motores de OCR, evaluando su precisión, rendimiento y facilidad de integración.
Los motores OCR son herramientas de software diseñadas para reconocer y extraer texto sin formato de imágenes, PDF y otros documentos escaneados. Emplean sofisticados algoritmos y técnicas de aprendizaje automático para identificar con precisión los caracteres y convertirlos en un archivo de texto legible por máquina. Windows OCR Engine, Tesseract e IronOCR representan tres soluciones de OCR muy utilizadas, cada una con sus puntos fuertes y aplicaciones.
En **Motor OCR para Windowsintegrado en el sistema operativo Windows, ofrece una solución cómoda y fácil de usar para extraer texto de imágenes de entrada y documentos escaneados. Aprovechando técnicas avanzadas de procesamiento de imágenes, puede reconocer con precisión texto en varios idiomas y estilos de fuente. Se puede acceder al motor de OCR de Windows a través de la API de tiempo de ejecución de Windows, lo que permite una integración perfecta en las aplicaciones de Windows con las capacidades de una herramienta de línea de comandos.
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string [] args)
{
// Provide the path to the image file
string imagePath = "sample.png";
try
{
// Instantiate the program class
Program program = new Program();
// Call the ExtractText method to extract text from the image
string extractedText = await program.ExtractText(imagePath);
// Display the extracted text
Console.WriteLine("Extracted Text:");
Console.WriteLine(extractedText);
}
catch (Exception ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
}
public async Task<string> ExtractText(string image)
{
// Initialize StringBuilder to store extracted text
StringBuilder text = new StringBuilder();
try
{
// Open the image file stream
using (var fileStream = System.IO.File.OpenRead(image))
{
Console.WriteLine("Extracted Text:");
// Create a BitmapDecoder from the image file stream
var bmpDecoder = await Windows.Graphics.Imaging.BitmapDecoder.CreateAsync(fileStream.AsRandomAccessStream());
// Get the software bitmap from the decoder
var softwareBmp = await bmpDecoder.GetSoftwareBitmapAsync();
// Create an OCR engine from user profile languages
var ocrEngine = Windows.Media.Ocr.OcrEngine.TryCreateFromUserProfileLanguages();
// Recognize text from the software bitmap
var ocrResult = await ocrEngine.RecognizeAsync(softwareBmp);
// Append each line of recognized text to the StringBuilder
foreach (var line in ocrResult.Lines)
{
text.AppendLine(line.Text);
}
}
}
catch (Exception ex)
{
throw ex; // Propagate the exception
}
// Return the extracted text
return text.ToString();
}
}
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string [] args)
{
// Provide the path to the image file
string imagePath = "sample.png";
try
{
// Instantiate the program class
Program program = new Program();
// Call the ExtractText method to extract text from the image
string extractedText = await program.ExtractText(imagePath);
// Display the extracted text
Console.WriteLine("Extracted Text:");
Console.WriteLine(extractedText);
}
catch (Exception ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
}
public async Task<string> ExtractText(string image)
{
// Initialize StringBuilder to store extracted text
StringBuilder text = new StringBuilder();
try
{
// Open the image file stream
using (var fileStream = System.IO.File.OpenRead(image))
{
Console.WriteLine("Extracted Text:");
// Create a BitmapDecoder from the image file stream
var bmpDecoder = await Windows.Graphics.Imaging.BitmapDecoder.CreateAsync(fileStream.AsRandomAccessStream());
// Get the software bitmap from the decoder
var softwareBmp = await bmpDecoder.GetSoftwareBitmapAsync();
// Create an OCR engine from user profile languages
var ocrEngine = Windows.Media.Ocr.OcrEngine.TryCreateFromUserProfileLanguages();
// Recognize text from the software bitmap
var ocrResult = await ocrEngine.RecognizeAsync(softwareBmp);
// Append each line of recognized text to the StringBuilder
foreach (var line in ocrResult.Lines)
{
text.AppendLine(line.Text);
}
}
}
catch (Exception ex)
{
throw ex; // Propagate the exception
}
// Return the extracted text
return text.ToString();
}
}
Imports System
Imports System.IO
Imports System.Text
Imports System.Threading.Tasks
Friend Class Program
Shared Async Function Main(ByVal args() As String) As Task
' Provide the path to the image file
Dim imagePath As String = "sample.png"
Try
' Instantiate the program class
Dim program As New Program()
' Call the ExtractText method to extract text from the image
Dim extractedText As String = Await program.ExtractText(imagePath)
' Display the extracted text
Console.WriteLine("Extracted Text:")
Console.WriteLine(extractedText)
Catch ex As Exception
Console.WriteLine("An error occurred: " & ex.Message)
End Try
End Function
Public Async Function ExtractText(ByVal image As String) As Task(Of String)
' Initialize StringBuilder to store extracted text
Dim text As New StringBuilder()
Try
' Open the image file stream
Using fileStream = System.IO.File.OpenRead(image)
Console.WriteLine("Extracted Text:")
' Create a BitmapDecoder from the image file stream
Dim bmpDecoder = Await Windows.Graphics.Imaging.BitmapDecoder.CreateAsync(fileStream.AsRandomAccessStream())
' Get the software bitmap from the decoder
Dim softwareBmp = Await bmpDecoder.GetSoftwareBitmapAsync()
' Create an OCR engine from user profile languages
Dim ocrEngine = Windows.Media.Ocr.OcrEngine.TryCreateFromUserProfileLanguages()
' Recognize text from the software bitmap
Dim ocrResult = Await ocrEngine.RecognizeAsync(softwareBmp)
' Append each line of recognized text to the StringBuilder
For Each line In ocrResult.Lines
text.AppendLine(line.Text)
Next line
End Using
Catch ex As Exception
Throw ex ' Propagate the exception
End Try
' Return the extracted text
Return text.ToString()
End Function
End Class
Tesseractun motor de OCR de código abierto desarrollado por Google, se ha hecho muy popular por su precisión y versatilidad. Es compatible con más de 100 idiomas y puede procesar varios formatos de imagen, como TIFF, JPEG y PNG. Tesseract OCR Engine emplea algoritmos de aprendizaje profundo y redes neuronales para lograr altos niveles de precisión en el reconocimiento de texto, lo que lo hace adecuado para una amplia gama de aplicaciones.
using Patagames.Ocr;
using (var api = OcrApi.Create())
{
api.Init(Patagames.Ocr.Enums.Languages.English);
string plainText = api.GetTextFromImage(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
Console.WriteLine(plainText);
}
using Patagames.Ocr;
using (var api = OcrApi.Create())
{
api.Init(Patagames.Ocr.Enums.Languages.English);
string plainText = api.GetTextFromImage(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
Console.WriteLine(plainText);
}
Imports Patagames.Ocr
Using api = OcrApi.Create()
api.Init(Patagames.Ocr.Enums.Languages.English)
Dim plainText As String = api.GetTextFromImage("C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png")
Console.WriteLine(plainText)
End Using
IronOCRun potente motor de OCR desarrollado por Iron Software, se distingue por su excepcional precisión, facilidad de uso y versátil compatibilidad lingüística. Ofrece funciones de OCR in situ y es compatible con más de 127 idiomas, lo que lo hace adecuado para aplicaciones globales. IronOCR aprovecha los algoritmos avanzados de aprendizaje automático y la tecnología de visión en la nube para ofrecer resultados precisos de reconocimiento de texto, incluso en escenarios difíciles.
Antes de pasar a la codificación Ejemplo vamos a ver cómo instalar IronOCR utilizando el NuGet Package Manager.
En Visual Studio vaya al menú Herramientas y seleccione Gestor de paquetes NuGet.
Aparecerá una nueva ventana, vaya a la pestaña "Examinar" y haga clic en "IronOCR" en la barra de búsqueda.
using IronOcr;
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
var result = ocr.Read("C:\\Users\\buttw\\source\\repos\\ironqr\\ironqr\\bin\\Debug\\net5.0\\Iron.png");
Console.WriteLine(result.Text);
using IronOcr;
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
var result = ocr.Read("C:\\Users\\buttw\\source\\repos\\ironqr\\ironqr\\bin\\Debug\\net5.0\\Iron.png");
Console.WriteLine(result.Text);
Imports IronOcr
Private ocr = New IronTesseract()
ocr.Language = OcrLanguage.English
Dim result = ocr.Read("C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png")
Console.WriteLine(result.Text)
IronOCR: es compatible con más de 127 idiomas, lo que lo hace adecuado para aplicaciones globales. 6. Conclusión
En conclusión, aunque Windows OCR Engine y Tesseract son opciones populares para el reconocimiento de texto, IronOCR se perfila como el motor de OCR más preciso y versátil. Su precisión líder en el sector, su amplia compatibilidad lingüística y su sencilla integración lo convierten en una solución destacada para empresas y desarrolladores que buscan una funcionalidad de OCR fiable. Al aprovechar IronOCR, las organizaciones pueden agilizar los flujos de trabajo de procesamiento de documentos, mejorar la precisión de la extracción de datos y obtener información valiosa de los documentos e imágenes escaneados.
IronOCR ofrece un **Prueba gratuita. Para saber más sobre IronOCR y sus funciones, visite aquí.
9 productos API .NET para sus documentos de oficina