# Get Started with OCR in C# and VB.NET
IronOCR es una biblioteca de software C# que permite a los desarrolladores de software de la plataforma .NET reconocer y leer texto de imágenes y documentos PDF. Es una biblioteca OCR pura .NET que utiliza el motor Tesseract más avanzado conocido, en cualquier lugar.
## Instalación
### Instalar con el Administrador de paquetes NuGet
Instale IronOCR en Visual Studio o en la línea de comandos con el Administrador de paquetes NuGet. En Visual Studio, navega a la consola con:
- Herramientas ->
- Administrador de Paquetes NuGet ->
- Consola de Paquetes
```shell
:ProductInstall
```
Y consulte [IronOCR en NuGet](https://www.nuget.org/packages/IronOcr) para más información sobre las actualizaciones de versión e instalación.
Hay otros **paquetes NuGet de IronOCR** disponibles para diferentes plataformas:
- Windows: [https://www.nuget.org/packages/IronOcr](https://www.nuget.org/packages/IronOcr)
- Linux: [https://www.nuget.org/packages/IronOcr.Linux](https://www.nuget.org/packages/IronOcr.Linux)
- MacOS: [https://www.nuget.org/packages/IronOcr.MacOs](https://www.nuget.org/packages/IronOcr.MacOs)
- MacOS (ARM): [https://www.nuget.org/packages/IronOcr.MacOs.ARM](https://www.nuget.org/packages/IronOcr.MacOs.ARM)
### IronOcr.Extensions.AdvancedScan para Linux y macOS
Este paquete es para usuarios que utilizan Linux y Mac y también desean las funcionalidades avanzadas para IronOCR.
- Linux: https://www.nuget.org/packages/IronOcr.Extensions.AdvancedScan.Linux
- MacOS: https://www.nuget.org/packages/IronOcr.Extensions.AdvancedScan.MacOs
#### Solución de problemas
Con la nueva actualización de este paquete, IronOCR combina las dependencias de OpenCV dentro del paquete para simplificarlo, por lo tanto, si los desarrolladores que actualmente importan las dependencias de OpenCV reciben el siguiente error.
```txt
The type of namespace name `OpenCvSharp` could not be found(are you missing a using directive or an assembly reference)
```
Puedes eliminar de manera segura los espacios de nombres de OpenCV, y el problema se resolverá.
### Descargue el IronOCR .ZIP
También puedes optar por descargar IronOCR a través de un archivo .ZIP. Haz clic para [descargar directamente el DLL](/csharp/ocr/packages/IronOcr.zip). Una vez que hayas descargado el .zip:
#### Instrucciones para la instalación de .NET Framework 4.0+:
- Incluye el IronOcr.dll en la carpeta net40 en tu proyecto
- Y luego agrega referencias de ensamblaje a:
- System.Configuration
- System.Drawing
- System.Web
#### Instrucciones for .NET Standard, .NET Core 2.0+ y .NET 5
- Incluye el IronOcr.dll en la carpeta netstandard2.0 en tu proyecto
- Y luego agrega una referencia al paquete NuGet:
- System.Drawing.Common 4.7 o superior
### Descargue el instalador de IronOCR (solo Windows)
Otra opción es descargar nuestro instalador de IronOCR que instalará todos los recursos necesarios para que IronOCR funcione de inmediato. Ten en cuenta que esta opción es solo para sistemas Windows. Para descargar el instalador, por favor [haz clic aquí](/csharp/ocr/packages/IronOcrInstaller.zip). Una vez que hayas descargado el .zip:
#### Instrucciones para la instalación de .NET Framework 4.0+:
- Incluye el IronOcr.dll en la carpeta net40 en tu proyecto
- Y luego agrega referencias de ensamblaje a:
- System.Configuration
- System.Drawing
- System.Web
#### Instrucciones for .NET Standard, .NET Core 2.0+ y .NET 5
- Incluye el IronOcr.dll en la carpeta netstandard2.0 en tu proyecto
- Y luego agrega una referencia al paquete NuGet:
- System.Drawing.Common 4.7 o superior
## ¿Por qué elegir IronOCR?
IronOCR es una biblioteca de software .NET fácil de instalar, completa y bien documentada.
Elige IronOCR para lograr **99.8%+ de precisión en OCR** sin usar servicios web externos, tarifas continuas o enviar documentos confidenciales a través de internet.
### Por qué los desarrolladores C# eligen IronOCR sobre Tesseract estándar:
- Instalación como un solo DLL o NuGet
- Incluye motores Tesseract 5, 4, y 3 listos para usar.
- Precisión **99.8%** supera significativamente a Tesseract regular.
- Velocidad asombrosa y multitarea
- Compatible con MVC, WebApp, Desktop, Console y aplicativos de servidor
- Sin Exes o código C++ para trabajar
- Soporte completo de OCR en PDF
- Realiza OCR en casi cualquier archivo de imagen o PDF
- Soporte completo para .NET Core, Standard y Framework
- Despliegue en Windows, Mac, Linux, Azure, Docker, Lambda, AWS
- Lee códigos de barras y códigos QR
- Exporta resultados de OCR como XHTML
- Exporta OCR a documentos PDF buscables
- Soporte para multihilo
- 125 idiomas internacionales todos gestionados a través de NuGet o archivos OcrData
- Extrae Imágenes, Coordenadas, Estadísticas y Fuentes. No solo texto.
- Se puede usar para redistribuir Tesseract OCR dentro de aplicaciones comerciales y propietarias.
_IronOCR destaca al trabajar con imágenes del mundo real y documentos imperfectos, como fotografías o escaneos de baja resolución que pueden tener ruido digital o imperfecciones._
Otras [bibliotecas de OCR gratuitas](/csharp/ocr/use-case/free-ocr-csharp/) para la plataforma .NET, como otras API de Tesseract for .NET y servicios web, no funcionan tan bien en estos casos del mundo real.
## OCR with Tesseract 5 - Start Coding in C#
El siguiente ejemplo de código muestra lo fácil que es leer texto de una imagen usando C# o VB .NET.
### Línea única
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-1.cs
```
### Hola mundo configurable
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-2.cs
```
### C# PDF OCR
El mismo enfoque se puede utilizar para extraer texto de cualquier documento PDF.
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-3.cs
```
### OCR para TIFF de varias páginas
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-4.cs
```
### Códigos de barras y QR
Las instancias de la clase `OcrResult.OcrBarcode` brindan al desarrollador información detallada sobre cada código de barras escaneado. Las instancias de la clase `OcrResult.OcrBarcode` brindan al desarrollador información detallada sobre cada código de barras escaneado.
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-5.cs
```
### OCR en áreas específicas de imágenes
Todos los métodos de escaneo y lectura de IronOCR proporcionan la capacidad de especificar exactamente qué parte de una página o páginas deseamos leer el texto. Esto es muy útil cuando miramos formularios estandarizados y puede ahorrar mucho tiempo y mejorar la eficiencia.
Para utilizar las regiones de recorte, necesitaremos agregar una referencia del sistema a `System.Drawing` para que podamos usar el objeto `System.Drawing.Rectangle`.
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-6.cs
```
### OCR para escaneos de baja calidad
La clase `OcrInput` de IronOCR puede corregir escaneos que el Tesseract normal no puede leer.
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-7.cs
```
### Exportar resultados de OCR como un PDF con capacidad de búsqueda
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-8.cs
```
### Conversión de TIFF a PDF con capacidad de búsqueda
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-9.cs
```
### Exportar resultados de OCR como HTML
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-10.cs
```
## Filtros de mejora de imágenes OCR
IronOCR proporciona filtros únicos a los objetos `OcrInput` para mejorar el rendimiento del OCR.
### Ejemplo de código de mejora de imagen
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-11.cs
```
### Lista de filtros de imagen OCR
Filtros de entrada para mejorar el rendimiento de OCR que están integrados en IronOCR incluyen:
- `OcrInput.Rotate(double degrees)` - Rota las imágenes un número de grados en el sentido de las agujas del reloj. Para una rotación en sentido antihorario, utilice números negativos.
- `OcrInput.Binarize()` - Este filtro convierte cada píxel en negro o blanco sin puntos intermedios, lo que potencialmente mejora el rendimiento del OCR en imágenes de muy bajo contraste.
- `OcrInput.ToGrayScale()` - Convierte cada píxel en un tono de escala de grises. Puede que no mejore la precisión, pero podría mejorar la velocidad.
- `OcrInput.Contrast()` - Aumenta automáticamente el contraste, lo que a menudo mejora la velocidad y precisión en escaneos de bajo contraste.
- `OcrInput.DeNoise()` - Elimina el ruido digital, recomendado solo cuando se espera ruido.
- `OcrInput.Invert()` - Invierte todos los colores (blanco se convierte en negro y viceversa).
- `OcrInput.Dilate()` - Avanza la morfología, añadie píxeles a los límites de los objetos, opuesto de Erosionar.
- `OcrInput.Erode()` - Avanza la morfología, elimina píxeles de los límites de los objetos, opuesto de Dilatar.
- `OcrInput.Deskew()` - Rota una imagen para orientarla correctamente. Útil porque la tolerancia al sesgo de Tesseract es limitada.
- `OcrInput.EnhanceResolution` - Mejora la resolución de imágenes de baja calidad. Esta configuración generalmente se utiliza para gestionar automáticamente la entrada de baja DPI.
- `EnhanceResolution` detecta imágenes de baja resolución (por debajo de 275 dpi), las aumenta de escala y agudiza el texto para obtener mejores resultados de OCR. Aunque consume tiempo, a menudo reduce el tiempo total de la operación de OCR.
- `Language` - Soporta la selección de 22 paquetes de idiomas internacionales.
- `Strategy` - Permite la selección entre estrategias rápidas y menos precisas o avanzadas (utilizando IA para precisión) basadas en la relación estadística de las palabras.
- `ColorSpace` - Permite elegir entre OCR en escala de grises o en color; - `DetectWhiteTextOnDarkBackgrounds` - Ajusta para imágenes negativas, detectando texto blanco en fondos oscuros.
- `DetectWhiteTextOnDarkBackgrounds` - Ajusta automáticamente las imágenes negativas, detectando y leyendo automáticamente el texto blanco sobre fondos oscuros.
- `InputImageType` - Guía a la biblioteca de OCR, especificando si está trabajando en un documento completo o en un fragmento.
- `RotateAndStraighten` - Permite que IronOCR maneje adecuadamente documentos que están rotados o afectados por distorsiones de perspectiva.
- `ReadBarcodes` - Lee automáticamente códigos de barras y códigos QR concurrentemente con el escaneo de texto sin un tiempo adicional significativo.
- `ColorDepth` - Determina los bits por píxel para la profundidad de color en el proceso de OCR. ## 125 Paquetes de Idiomas
## 125 paquetes de idiomas
IronOCR admite **125 idiomas internacionales** a través de paquetes de idiomas que se distribuyen como DLLs, disponibles para [descarga desde este sitio web](/csharp/ocr/languages/), o desde el [Administrador de Paquetes NuGet](https://www.nuget.org/packages?q=IronOcr.Languages).
Existen paquetes para MRZ, cheques MICR, datos financieros, matrículas, etc., además de archivos "traineddata" personalizados de Tesseract. Existen paquetes de idiomas especializados para MRZ, cheques MICR, datos financieros, matrículas, etc. Además, se pueden utilizar archivos Tesseract ".traineddata" personalizados.
### Ejemplo de idioma
```csharp
// Reference to the path of the source file that demonstrates setting language packs for OCR
:path=/static-assets/ocr/content-code-examples/get-started/get-started-12.cs
```
### Ejemplo de varios idiomas
## Objetos de Resultados de OCR Detallados
```csharp
// Reference to the path of the source file that demonstrates multi-language OCR
:path=/static-assets/ocr/content-code-examples/get-started/get-started-13.cs
```
## Objetos de resultados de OCR detallados
Los desarrolladores acceden a la propiedad `Text` para el texto escaneado. Generalmente, los desarrolladores acceden a la propiedad `Text` para obtener el texto escaneado. ## Rendimiento
```csharp
// Reference to the path of the source file demonstrating detailed OCR result object usage
:path=/static-assets/ocr/content-code-examples/get-started/get-started-14.cs
```
## Actuación
La velocidad es increíble: IronOcr.2020+ es hasta 10 veces más rápido y comete más de 250% menos errores que versiones anteriores.
Por favor visita este enlace para explorar el [Iron Suite](/csharp/barcode/licensing/).
## Más información
Un [referencia completa de API para desarrolladores .NET](/csharp/ocr/object-reference/) también está disponible.
También está disponible una [referencia API completa para desarrolladores .NET](/csharp/ocr/object-reference/) .
IronOCR es una biblioteca de software C# que permite a los desarrolladores de software de la plataforma .NET reconocer y leer texto de imágenes y documentos PDF. Es una biblioteca OCR pura .NET que utiliza el motor Tesseract más avanzado conocido, en cualquier lugar.
Instalación
Instalar con el Administrador de paquetes NuGet
Instale IronOCR en Visual Studio o en la línea de comandos con el Administrador de paquetes NuGet. En Visual Studio, navega a la consola con:
Herramientas ->
Administrador de Paquetes NuGet ->
Consola de Paquetes
PM > Install-Package IronOcr
Install-Package IronOcr
Y consulte IronOCR en NuGet para más información sobre las actualizaciones de versión e instalación.
Hay otros paquetes NuGet de IronOCR disponibles para diferentes plataformas:
Con la nueva actualización de este paquete, IronOCR combina las dependencias de OpenCV dentro del paquete para simplificarlo, por lo tanto, si los desarrolladores que actualmente importan las dependencias de OpenCV reciben el siguiente error.
The type of namespace name `OpenCvSharp` could not be found(are you missing a using directive or an assembly reference)
The type of namespace name `OpenCvSharp` could not be found(are you missing a using directive or an assembly reference)
Text
Puedes eliminar de manera segura los espacios de nombres de OpenCV, y el problema se resolverá.
Descargue el IronOCR .ZIP
También puedes optar por descargar IronOCR a través de un archivo .ZIP. Haz clic para descargar directamente el DLL. Una vez que hayas descargado el .zip:
Instrucciones para la instalación de .NET Framework 4.0+:
Incluye el IronOcr.dll en la carpeta net40 en tu proyecto
Y luego agrega referencias de ensamblaje a:
System.Configuration
System.Drawing
System.Web
Instrucciones for .NET Standard, .NET Core 2.0+ y .NET 5
Incluye el IronOcr.dll en la carpeta netstandard2.0 en tu proyecto
Y luego agrega una referencia al paquete NuGet:
System.Drawing.Common 4.7 o superior
Descargue el instalador de IronOCR (solo Windows)
Otra opción es descargar nuestro instalador de IronOCR que instalará todos los recursos necesarios para que IronOCR funcione de inmediato. Ten en cuenta que esta opción es solo para sistemas Windows. Para descargar el instalador, por favor haz clic aquí. Una vez que hayas descargado el .zip:
Instrucciones para la instalación de .NET Framework 4.0+:
Incluye el IronOcr.dll en la carpeta net40 en tu proyecto
Y luego agrega referencias de ensamblaje a:
System.Configuration
System.Drawing
System.Web
Instrucciones for .NET Standard, .NET Core 2.0+ y .NET 5
Incluye el IronOcr.dll en la carpeta netstandard2.0 en tu proyecto
Y luego agrega una referencia al paquete NuGet:
System.Drawing.Common 4.7 o superior
¿Por qué elegir IronOCR?
IronOCR es una biblioteca de software .NET fácil de instalar, completa y bien documentada.
Elige IronOCR para lograr 99.8%+ de precisión en OCR sin usar servicios web externos, tarifas continuas o enviar documentos confidenciales a través de internet.
Por qué los desarrolladores C# eligen IronOCR sobre Tesseract estándar:
Instalación como un solo DLL o NuGet
Incluye motores Tesseract 5, 4, y 3 listos para usar.
Precisión 99.8% supera significativamente a Tesseract regular.
Velocidad asombrosa y multitarea
Compatible con MVC, WebApp, Desktop, Console y aplicativos de servidor
Sin Exes o código C++ para trabajar
Soporte completo de OCR en PDF
Realiza OCR en casi cualquier archivo de imagen o PDF
Soporte completo para .NET Core, Standard y Framework
Despliegue en Windows, Mac, Linux, Azure, Docker, Lambda, AWS
Lee códigos de barras y códigos QR
Exporta resultados de OCR como XHTML
Exporta OCR a documentos PDF buscables
Soporte para multihilo
125 idiomas internacionales todos gestionados a través de NuGet o archivos OcrData
Extrae Imágenes, Coordenadas, Estadísticas y Fuentes. No solo texto.
Se puede usar para redistribuir Tesseract OCR dentro de aplicaciones comerciales y propietarias.
IronOCR destaca al trabajar con imágenes del mundo real y documentos imperfectos, como fotografías o escaneos de baja resolución que pueden tener ruido digital o imperfecciones.
Otras bibliotecas de OCR gratuitas para la plataforma .NET, como otras API de Tesseract for .NET y servicios web, no funcionan tan bien en estos casos del mundo real.
OCR with Tesseract 5 - Start Coding in C#
El siguiente ejemplo de código muestra lo fácil que es leer texto de una imagen usando C# o VB .NET.
Línea única
stringText = new IronTesseract().Read(@"img\Screenshot.png").Text;
string Text = new IronTesseract().Read(@"img\Screenshot.png").Text;
DimTextAsString = (New IronTesseract()).Read("img\Screenshot.png").Text
Dim Text As String = (New IronTesseract()).Read("img\Screenshot.png").Text
Hola mundo configurable
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();// Add multiple imagesinput.LoadImage("images/sample.jpeg");OcrResult result = ocr.Read(input);Console.WriteLine(result.Text);
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
// Add multiple images
input.LoadImage("images/sample.jpeg");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusing' Add multiple imagesinput.LoadImage("images/sample.jpeg")Dim result AsOcrResult = ocr.Read(input)Console.WriteLine(result.Text)
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
' Add multiple images
input.LoadImage("images/sample.jpeg")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
C# PDF OCR
El mismo enfoque se puede utilizar para extraer texto de cualquier documento PDF.
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();// We can also select specific PDF page numbers to OCRinput.LoadPdf("example.pdf", Password: "password");OcrResult result = ocr.Read(input);Console.WriteLine(result.Text);// 1 page for every page of the PDFConsole.WriteLine($"{result.Pages.Length} Pages");
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
// We can also select specific PDF page numbers to OCR
input.LoadPdf("example.pdf", Password: "password");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
// 1 page for every page of the PDF
Console.WriteLine($"{result.Pages.Length} Pages");
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusing' We can also select specific PDF page numbers to OCRinput.LoadPdf("example.pdf", Password:= "password")Dim result AsOcrResult = ocr.Read(input)Console.WriteLine(result.Text)' 1 page for every page of the PDFConsole.WriteLine($"{result.Pages.Length} Pages")
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
' We can also select specific PDF page numbers to OCR
input.LoadPdf("example.pdf", Password:= "password")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
' 1 page for every page of the PDF
Console.WriteLine($"{result.Pages.Length} Pages")
OCR para TIFF de varias páginas
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();var pageindices = new int[] { 1, 2 };input.LoadImageFrames("multi-frame.tiff", pageindices);OcrResult result = ocr.Read(input);Console.WriteLine(result.Text);
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("multi-frame.tiff", pageindices);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusingPrivate pageindices = New Integer() { 1, 2 }input.LoadImageFrames("multi-frame.tiff", pageindices)Dim result AsOcrResult = ocr.Read(input)Console.WriteLine(result.Text)
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("multi-frame.tiff", pageindices)
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
Códigos de barras y QR
Las instancias de la clase OcrResult.OcrBarcode brindan al desarrollador información detallada sobre cada código de barras escaneado. Las instancias de la clase OcrResult.OcrBarcode brindan al desarrollador información detallada sobre cada código de barras escaneado.
using IronOcr;IronTesseract ocr = new IronTesseract();ocr.Configuration.ReadBarCodes = true;using OcrInput input = new OcrInput();input.LoadImage("img/Barcode.png");OcrResultResult = ocr.Read(input);foreach (varBarcodeinResult.Barcodes){ // type and location properties also exposedConsole.WriteLine(Barcode.Value);}
using IronOcr;
IronTesseract ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;
using OcrInput input = new OcrInput();
input.LoadImage("img/Barcode.png");
OcrResult Result = ocr.Read(input);
foreach (var Barcode in Result.Barcodes)
{
// type and location properties also exposed
Console.WriteLine(Barcode.Value);
}
ImportsIronOcrPrivate ocr As New IronTesseract()ocr.Configuration.ReadBarCodes = TrueUsing input As New OcrInput() input.LoadImage("img/Barcode.png") DimResultAsOcrResult = ocr.Read(input) For EachBarcodeInResult.Barcodes ' type and location properties also exposedConsole.WriteLine(Barcode.Value) NextBarcodeEndUsing
Imports IronOcr
Private ocr As New IronTesseract()
ocr.Configuration.ReadBarCodes = True
Using input As New OcrInput()
input.LoadImage("img/Barcode.png")
Dim Result As OcrResult = ocr.Read(input)
For Each Barcode In Result.Barcodes
' type and location properties also exposed
Console.WriteLine(Barcode.Value)
Next Barcode
End Using
OCR en áreas específicas de imágenes
Todos los métodos de escaneo y lectura de IronOCR proporcionan la capacidad de especificar exactamente qué parte de una página o páginas deseamos leer el texto. Esto es muy útil cuando miramos formularios estandarizados y puede ahorrar mucho tiempo y mejorar la eficiencia.
Para utilizar las regiones de recorte, necesitaremos agregar una referencia del sistema a System.Drawing para que podamos usar el objeto System.Drawing.Rectangle.
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();// Dimensions are in pixelvar contentArea = new System.Drawing.Rectangle() { X = 215, Y = 1250, Height = 280, Width = 1335 };input.LoadImage("document.png", contentArea);OcrResult result = ocr.Read(input);Console.WriteLine(result.Text);
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
// Dimensions are in pixel
var contentArea = new System.Drawing.Rectangle() { X = 215, Y = 1250, Height = 280, Width = 1335 };
input.LoadImage("document.png", contentArea);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusing' Dimensions are in pixelPrivate contentArea = New System.Drawing.Rectangle() With { .X = 215, .Y = 1250, .Height = 280, .Width = 1335}input.LoadImage("document.png", contentArea)Dim result AsOcrResult = ocr.Read(input)Console.WriteLine(result.Text)
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
' Dimensions are in pixel
Private contentArea = New System.Drawing.Rectangle() With {
.X = 215,
.Y = 1250,
.Height = 280,
.Width = 1335
}
input.LoadImage("document.png", contentArea)
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
OCR para escaneos de baja calidad
La clase OcrInput de IronOCR puede corregir escaneos que el Tesseract normal no puede leer.
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();var pageindices = new int[] { 1, 2 };input.LoadImageFrames(@"img\Potter.tiff", pageindices);// fixes digital noise and poor scanninginput.DeNoise();// fixes rotation and perspectiveinput.Deskew();OcrResult result = ocr.Read(input);Console.WriteLine(result.Text);
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageindices);
// fixes digital noise and poor scanning
input.DeNoise();
// fixes rotation and perspective
input.Deskew();
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusingPrivate pageindices = New Integer() { 1, 2 }input.LoadImageFrames("img\Potter.tiff", pageindices)' fixes digital noise and poor scanninginput.DeNoise()' fixes rotation and perspectiveinput.Deskew()Dim result AsOcrResult = ocr.Read(input)Console.WriteLine(result.Text)
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("img\Potter.tiff", pageindices)
' fixes digital noise and poor scanning
input.DeNoise()
' fixes rotation and perspective
input.Deskew()
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
Exportar resultados de OCR como un PDF con capacidad de búsqueda
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();input.Title = "Quarterly Report";input.LoadImage("image1.jpeg");input.LoadImage("image2.png");var pageindices = new int[] { 1, 2 };input.LoadImageFrames("image3.gif", pageindices);OcrResult result = ocr.Read(input);result.SaveAsSearchablePdf("searchable.pdf");
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Quarterly Report";
input.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("image3.gif", pageindices);
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusinginput.Title = "Quarterly Report"input.LoadImage("image1.jpeg")input.LoadImage("image2.png")Dim pageindices = New Integer() { 1, 2 }input.LoadImageFrames("image3.gif", pageindices)Dim result AsOcrResult = ocr.Read(input)result.SaveAsSearchablePdf("searchable.pdf")
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
input.Title = "Quarterly Report"
input.LoadImage("image1.jpeg")
input.LoadImage("image2.png")
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("image3.gif", pageindices)
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable.pdf")
Conversión de TIFF a PDF con capacidad de búsqueda
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();var pageindices = new int[] { 1, 2 };input.LoadImageFrames("example.tiff", pageindices);ocr.Read(input).SaveAsSearchablePdf("searchable.pdf");
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageindices);
ocr.Read(input).SaveAsSearchablePdf("searchable.pdf");
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusingPrivate pageindices = New Integer() { 1, 2 }input.LoadImageFrames("example.tiff", pageindices)ocr.Read(input).SaveAsSearchablePdf("searchable.pdf")
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("example.tiff", pageindices)
ocr.Read(input).SaveAsSearchablePdf("searchable.pdf")
Exportar resultados de OCR como HTML
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();input.Title = "Html Title";input.LoadImage("image1.jpeg");OcrResultResult = ocr.Read(input);Result.SaveAsHocrFile("results.html");
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Html Title";
input.LoadImage("image1.jpeg");
OcrResult Result = ocr.Read(input);
Result.SaveAsHocrFile("results.html");
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusinginput.Title = "Html Title"input.LoadImage("image1.jpeg")DimResultAsOcrResult = ocr.Read(input)Result.SaveAsHocrFile("results.html")
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
input.Title = "Html Title"
input.LoadImage("image1.jpeg")
Dim Result As OcrResult = ocr.Read(input)
Result.SaveAsHocrFile("results.html")
Filtros de mejora de imágenes OCR
IronOCR proporciona filtros únicos a los objetos OcrInput para mejorar el rendimiento del OCR.
Ejemplo de código de mejora de imagen
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();input.LoadImage("LowQuality.jpeg");// fixes digital noise and poor scanninginput.DeNoise();// fixes rotation and perspectiveinput.Deskew();OcrResult result = ocr.Read(input);Console.WriteLine(result.Text);
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.LoadImage("LowQuality.jpeg");
// fixes digital noise and poor scanning
input.DeNoise();
// fixes rotation and perspective
input.Deskew();
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusinginput.LoadImage("LowQuality.jpeg")' fixes digital noise and poor scanninginput.DeNoise()' fixes rotation and perspectiveinput.Deskew()Dim result AsOcrResult = ocr.Read(input)Console.WriteLine(result.Text)
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
input.LoadImage("LowQuality.jpeg")
' fixes digital noise and poor scanning
input.DeNoise()
' fixes rotation and perspective
input.Deskew()
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
Lista de filtros de imagen OCR
Filtros de entrada para mejorar el rendimiento de OCR que están integrados en IronOCR incluyen:
OcrInput.Rotate(double degrees) - Rota las imágenes un número de grados en el sentido de las agujas del reloj. Para una rotación en sentido antihorario, utilice números negativos.
OcrInput.Binarize() - Este filtro convierte cada píxel en negro o blanco sin puntos intermedios, lo que potencialmente mejora el rendimiento del OCR en imágenes de muy bajo contraste.
OcrInput.ToGrayScale() - Convierte cada píxel en un tono de escala de grises. Puede que no mejore la precisión, pero podría mejorar la velocidad.
OcrInput.Contrast() - Aumenta automáticamente el contraste, lo que a menudo mejora la velocidad y precisión en escaneos de bajo contraste.
OcrInput.DeNoise() - Elimina el ruido digital, recomendado solo cuando se espera ruido.
OcrInput.Invert() - Invierte todos los colores (blanco se convierte en negro y viceversa).
OcrInput.Dilate() - Avanza la morfología, añadie píxeles a los límites de los objetos, opuesto de Erosionar.
OcrInput.Erode() - Avanza la morfología, elimina píxeles de los límites de los objetos, opuesto de Dilatar.
OcrInput.Deskew() - Rota una imagen para orientarla correctamente. Útil porque la tolerancia al sesgo de Tesseract es limitada.
OcrInput.EnhanceResolution - Mejora la resolución de imágenes de baja calidad. Esta configuración generalmente se utiliza para gestionar automáticamente la entrada de baja DPI.
EnhanceResolution detecta imágenes de baja resolución (por debajo de 275 dpi), las aumenta de escala y agudiza el texto para obtener mejores resultados de OCR. Aunque consume tiempo, a menudo reduce el tiempo total de la operación de OCR.
Language - Soporta la selección de 22 paquetes de idiomas internacionales.
Strategy - Permite la selección entre estrategias rápidas y menos precisas o avanzadas (utilizando IA para precisión) basadas en la relación estadística de las palabras.
ColorSpace - Permite elegir entre OCR en escala de grises o en color; - DetectWhiteTextOnDarkBackgrounds - Ajusta para imágenes negativas, detectando texto blanco en fondos oscuros.
DetectWhiteTextOnDarkBackgrounds - Ajusta automáticamente las imágenes negativas, detectando y leyendo automáticamente el texto blanco sobre fondos oscuros.
InputImageType - Guía a la biblioteca de OCR, especificando si está trabajando en un documento completo o en un fragmento.
RotateAndStraighten - Permite que IronOCR maneje adecuadamente documentos que están rotados o afectados por distorsiones de perspectiva.
ReadBarcodes - Lee automáticamente códigos de barras y códigos QR concurrentemente con el escaneo de texto sin un tiempo adicional significativo.
ColorDepth - Determina los bits por píxel para la profundidad de color en el proceso de OCR. ## 125 Paquetes de Idiomas
Existen paquetes para MRZ, cheques MICR, datos financieros, matrículas, etc., además de archivos "traineddata" personalizados de Tesseract. Existen paquetes de idiomas especializados para MRZ, cheques MICR, datos financieros, matrículas, etc. Además, se pueden utilizar archivos Tesseract ".traineddata" personalizados.
Ejemplo de idioma
using IronOcr;// PM> Install IronOcr.Languages.ArabicIronTesseract ocr = new IronTesseract();ocr.Language = OcrLanguage.Arabic;using OcrInput input = new OcrInput();var pageindices = new int[] { 1, 2 };input.LoadImageFrames("img/arabic.gif", pageindices);// Add image filters if needed// In this case, even thought input is very low quality// IronTesseract can read what conventional Tesseract cannot.OcrResult result = ocr.Read(input);// Console can't print Arabic on Windows easily.// Let's save to disk instead.result.SaveAsTextFile("arabic.txt");
using IronOcr;
// PM> Install IronOcr.Languages.Arabic
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.Arabic;
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("img/arabic.gif", pageindices);
// Add image filters if needed
// In this case, even thought input is very low quality
// IronTesseract can read what conventional Tesseract cannot.
OcrResult result = ocr.Read(input);
// Console can't print Arabic on Windows easily.
// Let's save to disk instead.
result.SaveAsTextFile("arabic.txt");
ImportsIronOcr' PM> Install IronOcr.Languages.ArabicPrivate ocr As New IronTesseract()ocr.Language = OcrLanguage.ArabicUsing input As New OcrInput() Dim pageindices = New Integer() { 1, 2 } input.LoadImageFrames("img/arabic.gif", pageindices) ' Add image filters if needed ' In this case, even thought input is very low quality ' IronTesseract can read what conventional Tesseract cannot. Dim result AsOcrResult = ocr.Read(input) ' Console can't print Arabic on Windows easily. ' Let's save to disk instead. result.SaveAsTextFile("arabic.txt")EndUsing
Imports IronOcr
' PM> Install IronOcr.Languages.Arabic
Private ocr As New IronTesseract()
ocr.Language = OcrLanguage.Arabic
Using input As New OcrInput()
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("img/arabic.gif", pageindices)
' Add image filters if needed
' In this case, even thought input is very low quality
' IronTesseract can read what conventional Tesseract cannot.
Dim result As OcrResult = ocr.Read(input)
' Console can't print Arabic on Windows easily.
' Let's save to disk instead.
result.SaveAsTextFile("arabic.txt")
End Using
Ejemplo de varios idiomas
Objetos de Resultados de OCR Detallados
using IronOcr;// PM> Install IronOcr.Languages.ChineseSimplifiedIronTesseract ocr = new IronTesseract();ocr.Language = OcrLanguage.ChineseSimplified;// We can add any number of languagesocr.AddSecondaryLanguage(OcrLanguage.English);using OcrInput input = new OcrInput();input.LoadPdf("multi-language.pdf");OcrResult result = ocr.Read(input);result.SaveAsTextFile("results.txt");
using IronOcr;
// PM> Install IronOcr.Languages.ChineseSimplified
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;
// We can add any number of languages
ocr.AddSecondaryLanguage(OcrLanguage.English);
using OcrInput input = new OcrInput();
input.LoadPdf("multi-language.pdf");
OcrResult result = ocr.Read(input);
result.SaveAsTextFile("results.txt");
ImportsIronOcr' PM> Install IronOcr.Languages.ChineseSimplifiedPrivate ocr As New IronTesseract()ocr.Language = OcrLanguage.ChineseSimplified' We can add any number of languagesocr.AddSecondaryLanguage(OcrLanguage.English)Using input As New OcrInput() input.LoadPdf("multi-language.pdf") Dim result AsOcrResult = ocr.Read(input) result.SaveAsTextFile("results.txt")EndUsing
Imports IronOcr
' PM> Install IronOcr.Languages.ChineseSimplified
Private ocr As New IronTesseract()
ocr.Language = OcrLanguage.ChineseSimplified
' We can add any number of languages
ocr.AddSecondaryLanguage(OcrLanguage.English)
Using input As New OcrInput()
input.LoadPdf("multi-language.pdf")
Dim result As OcrResult = ocr.Read(input)
result.SaveAsTextFile("results.txt")
End Using
Objetos de resultados de OCR detallados
Los desarrolladores acceden a la propiedad Text para el texto escaneado. Generalmente, los desarrolladores acceden a la propiedad Text para obtener el texto escaneado. ## Rendimiento
using IronOcr;IronTesseract ocr = new IronTesseract();// Must be set to true to read barcodeocr.Configuration.ReadBarCodes = true;using OcrInput input = new OcrInput();var pageindices = new int[] { 1, 2 };input.LoadImageFrames(@"img\sample.tiff", pageindices);OcrResult result = ocr.Read(input);var pages = result.Pages;var words = pages[0].Words;var barcodes = result.Barcodes;// Explore here to find a massive, detailed API:// - Pages, Blocks, Paraphaphs, Lines, Words, Chars// - Image Export, Fonts Coordinates, Statistical Data, Tables
using IronOcr;
IronTesseract ocr = new IronTesseract();
// Must be set to true to read barcode
ocr.Configuration.ReadBarCodes = true;
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\sample.tiff", pageindices);
OcrResult result = ocr.Read(input);
var pages = result.Pages;
var words = pages[0].Words;
var barcodes = result.Barcodes;
// Explore here to find a massive, detailed API:
// - Pages, Blocks, Paraphaphs, Lines, Words, Chars
// - Image Export, Fonts Coordinates, Statistical Data, Tables
ImportsIronOcrPrivate ocr As New IronTesseract()' Must be set to true to read barcodeocr.Configuration.ReadBarCodes = TrueUsing input As New OcrInput() Dim pageindices = New Integer() { 1, 2 } input.LoadImageFrames("img\sample.tiff", pageindices) Dim result AsOcrResult = ocr.Read(input) Dim pages = result.Pages Dim words = pages(0).Words Dim barcodes = result.Barcodes ' Explore here to find a massive, detailed API: ' - Pages, Blocks, Paraphaphs, Lines, Words, Chars ' - Image Export, Fonts Coordinates, Statistical Data, TablesEndUsing
Imports IronOcr
Private ocr As New IronTesseract()
' Must be set to true to read barcode
ocr.Configuration.ReadBarCodes = True
Using input As New OcrInput()
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("img\sample.tiff", pageindices)
Dim result As OcrResult = ocr.Read(input)
Dim pages = result.Pages
Dim words = pages(0).Words
Dim barcodes = result.Barcodes
' Explore here to find a massive, detailed API:
' - Pages, Blocks, Paraphaphs, Lines, Words, Chars
' - Image Export, Fonts Coordinates, Statistical Data, Tables
End Using
Actuación
La velocidad es increíble: IronOcr.2020+ es hasta 10 veces más rápido y comete más de 250% menos errores que versiones anteriores.
Por favor visita este enlace para explorar el Iron Suite.
Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien estructurados y visualmente atractivos.