Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
La tecnología del reconocimiento óptico de caracteres (OCR) permite convertir texto impreso o manuscrito en formatos digitales legibles por máquina. Cuando se escanea un documento (como una factura o un recibo)La imagen escaneada se guarda en su ordenador como un archivo de imagen. Sin embargo, el texto dentro de la imagen escaneada no se puede editar, buscar o contar utilizando un editor de texto normal.
Sin embargo, el OCR puede procesar la imagen, extraer el texto y transformarlo en un formato de texto que puedan leer los ordenadores. Permite extraer texto de diversas fuentes, incluidos archivos PDF y otras imágenes escaneadas. Además, las capacidades de OCR van más allá de la simple extracción de texto e incluyen los principales formatos de imagen y documentos PDF, convirtiéndolos en datos OCR que permiten realizar búsquedas.
En C#, los desarrolladores pueden aprovechar la potencia del OCR a través de varias bibliotecas, y una de ellas es la potente biblioteca IronOCR de Iron Software. En este tutorial, exploraremos los fundamentos del OCR y demostraremos cómo utilizar IronOCR para realizar el Reconocimiento de Caracteres de forma eficiente en C#.
IronOCR una biblioteca de C# desarrollada por Iron Software es que proporciona funciones avanzadas de OCR. Ofrece una extracción de texto precisa a partir de imágenes, PDF y documentos escaneados. Antes de sumergirnos en el código, asegúrate de que tienes IronOCR instalado en tu proyecto.
IronOCR eleva las capacidades del motor de OCR Tesseract, ampliamente utilizado, mejorando tanto la precisión como la velocidad. Es una solución robusta para extraer texto de diversas fuentes, como imágenes, PDF y otros formatos de documento.
Gracias a su compatibilidad con más de 127 idiomas, IronOCR es capaz de gestionar requisitos multilingües, lo que lo convierte en la opción ideal para aplicaciones que exigen versatilidad lingüística.
El texto extraído puede enviarse cómodamente como texto sin formato o como datos estructurados para integrarlo sin problemas en otras cadenas de procesamiento. Además, IronOCR facilita la creación de PDF con capacidad de búsqueda directamente a partir de entradas de imágenes.
Diseñado para ser compatible con C#, F# y VB.NET, IronOCR funciona sin problemas en varios entornos .NET, incluidas las versiones 8, 7, 6, Core, Standard y Framework.
IronOCR aprovecha la potencia de Tesseract 5, finamente adaptada para un rendimiento óptimo dentro del ecosistema .NET.
Con IronOCR, los usuarios pueden definir con precisión zonas específicas dentro de los documentos, lo que permite un procesamiento OCR específico. Esta función mejora la precisión y la eficacia al concentrar la potencia de procesamiento donde más se necesita.
La biblioteca ofrece un conjunto de funciones de preprocesamiento de imágenes, como la eliminación de distorsiones y la reducción del ruido. Estas herramientas garantizan resultados superiores incluso cuando se trabaja con imágenes de origen imperfectas, mejorando en última instancia la experiencia global del OCR.
Ahora, desarrollaremos una aplicación demo que utiliza IronOCR para leer Texto de imágenes.
Para empezar, vamos a crear una nueva aplicación de consola utilizando Visual Studio como se muestra a continuación.
Indique a continuación el nombre y la ubicación del proyecto.
Seleccione la versión .NET necesaria para el proyecto.
Haga clic en el botón Crear para crear el nuevo proyecto.
IronOCR en el NuGet como se muestra a continuación. Utilice el comando proporcionado para instalar el paquete.
Mediante el gestor de paquetes NuGet de Visual Studio, busque IronOCR e instálelo en la carpeta del proyecto.
Una vez instalada, la aplicación está lista para hacer uso de IronOCR para leer texto a partir de imágenes.
IronOCR destaca por ser la biblioteca .NET exclusiva que ofrece funciones de OCR de Tesseract 5. En la actualidad, ostenta la distinción de ser la biblioteca Tesseract 5 más sofisticada en todos los lenguajes de programación. IronOCR integra a la perfección Tesseract 5 en varios entornos .NET, incluidos Framework, Standard, Core, Xamarin y Mono, garantizando una compatibilidad completa en todo el ecosistema.
Considere el siguiente archivo de imagen como entrada. Veamos ahora cómo leer el texto de este archivo de imagen
using IronOcr;
public class Program
{
public static void Main(String [] args)
{
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadImage(@"sample1.png");
var ocrResult = ocrTesseract.Read(ocrInput);
Console.WriteLine(ocrResult.Text);
}
}
using IronOcr;
public class Program
{
public static void Main(String [] args)
{
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadImage(@"sample1.png");
var ocrResult = ocrTesseract.Read(ocrInput);
Console.WriteLine(ocrResult.Text);
}
}
Imports IronOcr
Public Class Program
Public Shared Sub Main(ByVal args() As String)
Dim ocrTesseract = New IronTesseract()
Dim ocrInput As New OcrInput()
ocrInput.LoadImage("sample1.png")
Dim ocrResult = ocrTesseract.Read(ocrInput)
Console.WriteLine(ocrResult.Text)
End Sub
End Class
El objeto IronTesseract.Configuration ofrece a los usuarios avanzados acceso a la API subyacente de Tesseract dentro de C#/.NET, lo que permite una configuración detallada para el ajuste y la optimización. A continuación se indican algunas de las configuraciones avanzadas posibles
Puede especificar el idioma para el OCR mediante la propiedad Idioma. Por ejemplo, para establecer el idioma en inglés, utilice:
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English
El PageSegmentationMode determina cómo Tesseract segmenta la imagen de entrada. Las opciones incluyen AutoOsd, SingleBlock, SingleLine y más. Por ejemplo:
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd
Puedes ajustar Tesseract mediante variables específicas. Por ejemplo, para desactivar la paralelización:
ocr.Configuration.TesseractVariables ["tessedit_parallelize"] = false;
ocr.Configuration.TesseractVariables ["tessedit_parallelize"] = false;
ocr.Configuration.TesseractVariables ("tessedit_parallelize") = False
Utilice WhiteListCharacters y BlackListCharacters para controlar qué caracteres reconoce Tesseract. Por ejemplo:
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë
^";
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë
^";
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ocr.Configuration.BlackListCharacters = "`ë ^"
Explora otras variables de configuración de Tesseract para personalizar el comportamiento según tus necesidades. Por ejemplo:
ocr.Configuration.TesseractVariables ["classify_num_cp_levels"] = 3;
ocr.Configuration.TesseractVariables ["textord_debug_tabfind"] = 0;
// ... (más variables)
ocr.Configuration.TesseractVariables ["classify_num_cp_levels"] = 3;
ocr.Configuration.TesseractVariables ["textord_debug_tabfind"] = 0;
// ... (más variables)
ocr.Configuration.TesseractVariables ("classify_num_cp_levels") = 3
ocr.Configuration.TesseractVariables ("textord_debug_tabfind") = 0
' ... (más variables)
Intentemos ahora descodificar la misma imagen utilizando la configuración avanzada
using IronOcr;
public class Program
{
public static void Main()
{
Console.WriteLine("Decoding using advanced features");
var ocrTesseract = new IronTesseract() // crear instancia
{
Language = OcrLanguage.EnglishBest, // configurar el mejor idioma inglés
Configuration = new TesseractConfiguration()
{
ReadBarCodes = false, // leer códigos de barras falso
BlackListCharacters = "`ë
^", // personajes de la lista negra
WhiteListCharacters = null, // sin lista blanca, permitir todo
PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
TesseractVariables = null, // no se utiliza ninguna variable personalizada
},
MultiThreaded = false,
};
using var ocrInput = new OcrInput(); // crear un objeto de entrada ocr desechable
ocrInput.AddImage(@"sample1.png"); // cargar la imagen de muestra
var ocrResult = ocrTesseract.Read(ocrInput); // leer el texto de la imagen
Console.WriteLine(ocrResult.Text);// salida de la imagen
}
}
using IronOcr;
public class Program
{
public static void Main()
{
Console.WriteLine("Decoding using advanced features");
var ocrTesseract = new IronTesseract() // crear instancia
{
Language = OcrLanguage.EnglishBest, // configurar el mejor idioma inglés
Configuration = new TesseractConfiguration()
{
ReadBarCodes = false, // leer códigos de barras falso
BlackListCharacters = "`ë
^", // personajes de la lista negra
WhiteListCharacters = null, // sin lista blanca, permitir todo
PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
TesseractVariables = null, // no se utiliza ninguna variable personalizada
},
MultiThreaded = false,
};
using var ocrInput = new OcrInput(); // crear un objeto de entrada ocr desechable
ocrInput.AddImage(@"sample1.png"); // cargar la imagen de muestra
var ocrResult = ocrTesseract.Read(ocrInput); // leer el texto de la imagen
Console.WriteLine(ocrResult.Text);// salida de la imagen
}
}
Imports IronOcr
Public Class Program
Public Shared Sub Main()
Console.WriteLine("Decoding using advanced features")
Dim ocrTesseract As New IronTesseract() With {
.Language = OcrLanguage.EnglishBest,
.Configuration = New TesseractConfiguration() With {
.ReadBarCodes = False,
.BlackListCharacters = "`ë ^",
var ocrInput = New OcrInput(); ocrInput.AddImage("sample1.png"); var ocrResult = ocrTesseract.Read(ocrInput); Console.WriteLine(ocrResult.Text);
}
}
Configuración de IronOCR: Una instancia de IronTesseract (la clase principal IronOCR) y se asigna a la variable ocrTesseract.
Los ajustes de configuración se aplican a ocrTesseract:
Al trabajar con IronOCR, tiene acceso a varios filtros de imagen que pueden ayudar a preprocesar las imágenes antes de realizar el OCR. Estos filtros optimizan la calidad de la imagen, mejoran la visibilidad y reducen el ruido o los artefactos. Ayudan a mejorar el rendimiento de la operación de OCR.
**Gira:
El filtro Girar permite rotar las imágenes un número determinado de grados en el sentido de las agujas del reloj. Para girar en sentido contrario a las agujas del reloj, utilice números negativos.
Deskew:
El filtro Deskew corrige la inclinación de la imagen, garantizando que el texto esté en posición vertical y ortogonal. Esto resulta especialmente útil para el OCR, ya que Tesseract funciona mejor con escaneados correctamente orientados.
**Escala:
El filtro Escala escala proporcionalmente las páginas de entrada del OCR.
Binarizar:
El filtro Binarizar convierte cada píxel en blanco o negro, sin término medio. Puede mejorar el rendimiento del OCR en casos de muy bajo contraste entre el texto y el fondo.
**A escala de grises:
El filtro ToGrayScale convierte cada píxel en un tono de escala de grises. Aunque es poco probable que mejore significativamente la precisión del OCR, puede aumentar la velocidad.
**Invertido:
El filtro Invertir invierte los colores: el blanco se convierte en negro y el negro en blanco.
ReemplazarColor:
El filtro ReemplazarColor reemplaza un color específico dentro de una imagen por otro color, considerando un determinado umbral.
**Contraste:
El filtro Contraste aumenta automáticamente el contraste. Suele mejorar la velocidad y precisión del OCR en escaneos con poco contraste.
Dilatar y Erosionar:
Estos filtros morfológicos avanzados manipulan los límites de los objetos en una imagen.
Dilatar añade píxeles a los límites del objeto.
**Afilar:
El filtro Enfocar hace más nítidos los documentos OCR borrosos y aplana los canales alfa a blanco.
DeNoise:
El filtro DeNoise elimina el ruido digital. Utilízalo donde se espere ruido.
**Ruido de fondo profundo:
Este filtro de eliminación de ruido de fondo pesado sólo debe utilizarse cuando se conoce el ruido de fondo extremo del documento. Puede reducir la precisión del OCR en documentos limpios y consume mucha CPU.
MejorarResolución:
El filtro MejorarResolución mejora la resolución de las imágenes de baja calidad. No suele ser necesario debido a la gestión automática de la resolución.
He aquí un ejemplo de cómo aplicar filtros utilizando IronOCR en C#:
var ocr = new IronTesseract();
var input = new OcrInput();
input.LoadImage("sample.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);
var ocr = new IronTesseract();
var input = new OcrInput();
input.LoadImage("sample.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);
Dim ocr = New IronTesseract()
Dim input = New OcrInput()
input.LoadImage("sample.png")
input.Deskew()
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
IronOCR. Indique los siguientes datos para recibir la clave en su dirección de correo electrónico
Una vez obtenida la clave, ya sea mediante compra o prueba gratuita, siga los siguientes pasos para utilizarla
Establecer su clave de licencia: Establezca su clave de licencia IronOCR utilizando el código. Añade la siguiente línea al inicio de tu aplicación (antes de utilizar IronOCR):
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01"
Clave de aplicación global (Web.Config o App.Config): Para aplicar una clave globalmente a través de su aplicación, utilice el archivo de configuración (Web.Config o App.Config). Añade la siguiente clave a tu appSettings:
<configuration>
<!-- Other settings -->
<appSettings>
<add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/>
</appSettings>
</configuration>
<configuration>
<!-- Other settings -->
<appSettings>
<add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/>
</appSettings>
</configuration>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<configuration> <!-- Other settings -- > <appSettings> <add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/> </appSettings> </configuration>
Utilización de .NET Core appsettings.json: Para aplicaciones .NET Core, cree un archivo appsettings.json en el directorio raíz de su proyecto. Sustituya la clave "IronOcr.LicenseKey" por el valor de su licencia:
{
"IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
}
{
"IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
}
If True Then
"IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
End If
Comprobación de la clave de licencia: Verifique que su clave ha sido instalada correctamente probándola:
bool result = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01");
bool result = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01");
Dim result As Boolean = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01")
En conclusión, IronOCR a partir de 749 dólares. Aproveche el poder del OCR con IronOCR y desbloquee un mundo de posibilidades en sus proyectos de C#.
9 productos API .NET para sus documentos de oficina