OCR galego en C# e .NET

Outras versións deste documento:

IronOCR é un compoñente de software C# que permite aos codificadores .NET ler texto de imaxes e documentos PDF en 126 idiomas, incluído o galego.

É un garfo avanzado de Tesseract, construído exclusivamente para os desenvolvedores .NET e supera regularmente a outros motores Tesseract tanto por velocidade como por precisión.

Contido de IronOcr.Languages.Galician

Este paquete contén 49 idiomas OCR para .NET:

  • Galego
  • GalegoMellor
  • GalicianFast

Descargar

Paquete de Lingua Galega [galego]
* Download as Zip
* Install with NuGet

Instalación

O primeiro que temos que facer é instalar o noso paquete OCR galego no seu proxecto .NET.

PM> Install-Package IronOCR.Languages.Galician

Exemplo de código

Este exemplo de código C# le texto en galego dun documento Image ou PDF.

// Importing the IronOcr package
using IronOcr;

var Ocr = new IronTesseract();
// Set the OCR language to Galician
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput(@"images\Galician.png"))
{
    // Perform OCR on the input image
    var Result = Ocr.Read(Input);
    // Retrieve the recognized text
    var AllText = Result.Text;
    // Output the recognized text
    Console.WriteLine(AllText);
}
// Importing the IronOcr package
using IronOcr;

var Ocr = new IronTesseract();
// Set the OCR language to Galician
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput(@"images\Galician.png"))
{
    // Perform OCR on the input image
    var Result = Ocr.Read(Input);
    // Retrieve the recognized text
    var AllText = Result.Text;
    // Output the recognized text
    Console.WriteLine(AllText);
}
' Importing the IronOcr package
Imports IronOcr

Private Ocr = New IronTesseract()
' Set the OCR language to Galician
Ocr.Language = OcrLanguage.Galician

Using Input = New OcrInput("images\Galician.png")
	' Perform OCR on the input image
	Dim Result = Ocr.Read(Input)
	' Retrieve the recognized text
	Dim AllText = Result.Text
	' Output the recognized text
	Console.WriteLine(AllText)
End Using
$vbLabelText   $csharpLabel

Por que escoller IronOCR?

IronOCR é unha biblioteca de software .NET fácil de instalar, completa e ben documentada.

Escolla IronOCR para acadar o 99,8% de precisión de OCR sen usar ningún servizo web externo, taxas continuas nin enviar documentos confidenciais a través de internet.

Por que os desenvolvedores de C# escollen IronOCR sobre Vanilla Tesseract:

  • Instalar como unha única DLL ou NuGet
  • Inclúe motores Tesseract 5, 4 e 3 fóra da caixa.
  • A precisión do 99,8% supera significativamente a Tesseract normal.
  • Velocidade ardente e MultiThreading
  • Compatible con aplicacións MVC, WebApp, escritorio, consola e servidor
  • Non hai código Exes nin C++ co que traballar
  • Soporte completo de OCR en PDF
  • Para realizar OCR case calquera ficheiro de imaxe ou PDF
  • Compatibilidade completa .NET Core, Standard e FrameWork
  • Implementar en Windows, Mac, Linux, Azure, Docker, Lambda, AWS
  • Le códigos de barras e códigos QR
  • Exporta OCR como a XHTML
  • Exporta OCR a documentos PDF que se poden buscar
  • Soporte multithreading
  • 126 idiomas internacionais xestionados todos mediante ficheiros NuGet ou OcrData
  • Extraer imaxes, coordenadas, estatísticas e tipos de letra. Non só texto.
  • Pódese usar para redistribuír Tesseract OCR dentro de aplicacións comerciais e propietarias.

O OCR de ferro brilla cando se traballa con imaxes do mundo real e documentos imperfectos como fotografías ou escaneos de baixa resolución que poden ter ruído ou imperfeccións dixitais.

Outras bibliotecas OCR gratuítas para a plataforma .NET, como outras API e servizos web .net tesseract, non funcionan tan ben nestes casos de uso do mundo real.

OCR con Tesseract 5: inicia a codificación en C#

A mostra de código seguinte mostra o fácil que é ler texto dunha imaxe usando C# ou VB .NET.

OneLiner

// Perform OCR in a single line
string Text = new IronTesseract().Read(@"img\Screenshot.png").Text;
// Perform OCR in a single line
string Text = new IronTesseract().Read(@"img\Screenshot.png").Text;
' Perform OCR in a single line
Dim Text As String = (New IronTesseract()).Read("img\Screenshot.png").Text
$vbLabelText   $csharpLabel

Configurable Hello World

// PM> Install-Package IronOCR.Languages.Galician
using IronOcr;

var Ocr = new IronTesseract();
// Set the language to Galician.
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput())
{
    // Add images to OCR input
    Input.AddImage("images/sample.jpeg");
    //... podemos engadir calquera número de imaxes

    // Perform OCR and get result
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
// PM> Install-Package IronOCR.Languages.Galician
using IronOcr;

var Ocr = new IronTesseract();
// Set the language to Galician.
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput())
{
    // Add images to OCR input
    Input.AddImage("images/sample.jpeg");
    //... podemos engadir calquera número de imaxes

    // Perform OCR and get result
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
' PM> Install-Package IronOCR.Languages.Galician
Imports IronOcr

Private Ocr = New IronTesseract()
' Set the language to Galician.
Ocr.Language = OcrLanguage.Galician

Using Input = New OcrInput()
	' Add images to OCR input
	Input.AddImage("images/sample.jpeg")
	'... podemos engadir calquera número de imaxes

	' Perform OCR and get result
	Dim Result = Ocr.Read(Input)
	Console.WriteLine(Result.Text)
End Using
$vbLabelText   $csharpLabel

C# PDF OCR

O mesmo enfoque pode usarse de xeito similar para extraer texto de calquera documento PDF.

using IronOcr;

var Ocr = new IronTesseract();
// Use the Galician language for OCR
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput())
{
    // Add the PDF to the input with a password if needed
    Input.AddPdf("example.pdf", "password");
    // Tamén podemos seleccionar números de páxinas PDF específicos para OCR

    // Retrieve OCR result
    var Result = Ocr.Read(Input);

    // Print the extracted text and total pages count
    Console.WriteLine(Result.Text);
    Console.WriteLine($"{Result.Pages.Count()} Pages");
}
using IronOcr;

var Ocr = new IronTesseract();
// Use the Galician language for OCR
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput())
{
    // Add the PDF to the input with a password if needed
    Input.AddPdf("example.pdf", "password");
    // Tamén podemos seleccionar números de páxinas PDF específicos para OCR

    // Retrieve OCR result
    var Result = Ocr.Read(Input);

    // Print the extracted text and total pages count
    Console.WriteLine(Result.Text);
    Console.WriteLine($"{Result.Pages.Count()} Pages");
}
Imports IronOcr

Private Ocr = New IronTesseract()
' Use the Galician language for OCR
Ocr.Language = OcrLanguage.Galician

Using Input = New OcrInput()
	' Add the PDF to the input with a password if needed
	Input.AddPdf("example.pdf", "password")
	' Tamén podemos seleccionar números de páxinas PDF específicos para OCR

	' Retrieve OCR result
	Dim Result = Ocr.Read(Input)

	' Print the extracted text and total pages count
	Console.WriteLine(Result.Text)
	Console.WriteLine($"{Result.Pages.Count()} Pages")
End Using
$vbLabelText   $csharpLabel

OCR para TIFF MultiPage

OCR Lectura do formato de ficheiro TIFF que inclúe documentos de varias páxinas. TIFF tamén se pode converter directamente nun ficheiro PDF con texto que se pode buscar.

using IronOcr;

var Ocr = new IronTesseract();
// Set OCR to Galician
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput())
{
    // Add TIFF file for OCR
    Input.AddMultiFrameTiff("multi-frame.tiff");

    // Perform OCR and get result
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
using IronOcr;

var Ocr = new IronTesseract();
// Set OCR to Galician
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput())
{
    // Add TIFF file for OCR
    Input.AddMultiFrameTiff("multi-frame.tiff");

    // Perform OCR and get result
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
Imports IronOcr

Private Ocr = New IronTesseract()
' Set OCR to Galician
Ocr.Language = OcrLanguage.Galician

Using Input = New OcrInput()
	' Add TIFF file for OCR
	Input.AddMultiFrameTiff("multi-frame.tiff")

	' Perform OCR and get result
	Dim Result = Ocr.Read(Input)
	Console.WriteLine(Result.Text)
End Using
$vbLabelText   $csharpLabel

Códigos de barras e QR

Unha característica única de IronOCR é que pode ler códigos de barras e códigos QR de documentos mentres busca texto. As instancias da clase OcrResult.OcrBarcode proporcionan ao programador información detallada sobre cada código de barras dixitalizado.

// using IronOcr;
var Ocr = new IronTesseract();
// Enable barcode reading
Ocr.Configuration.ReadBarCodes = true;

using (var Input = new OcrInput())
{
    // Add image containing barcode
    Input.AddImage("img/Barcode.png");
    // Perform OCR
    var Result = Ocr.Read(Input);

    // Iterate over each detected barcode and print its value
    foreach (var Barcode in Result.Barcodes)
    {
        Console.WriteLine(Barcode.Value);
        // tamén se expoñen as propiedades de tipo e localización
    }
}
// using IronOcr;
var Ocr = new IronTesseract();
// Enable barcode reading
Ocr.Configuration.ReadBarCodes = true;

using (var Input = new OcrInput())
{
    // Add image containing barcode
    Input.AddImage("img/Barcode.png");
    // Perform OCR
    var Result = Ocr.Read(Input);

    // Iterate over each detected barcode and print its value
    foreach (var Barcode in Result.Barcodes)
    {
        Console.WriteLine(Barcode.Value);
        // tamén se expoñen as propiedades de tipo e localización
    }
}
' using IronOcr;
Dim Ocr = New IronTesseract()
' Enable barcode reading
Ocr.Configuration.ReadBarCodes = True

Using Input = New OcrInput()
	' Add image containing barcode
	Input.AddImage("img/Barcode.png")
	' Perform OCR
	Dim Result = Ocr.Read(Input)

	' Iterate over each detected barcode and print its value
	For Each Barcode In Result.Barcodes
		Console.WriteLine(Barcode.Value)
		' tamén se expoñen as propiedades de tipo e localización
	Next Barcode
End Using
$vbLabelText   $csharpLabel

OCR sobre áreas específicas de imaxes

Todos os métodos de dixitalización e lectura de IronOCR ofrecen a posibilidade de especificar con exactitude de que parte ou páxinas desexamos ler o texto. Isto é moi útil cando estamos a buscar formularios estandarizados e pode aforrar moito tempo e mellorar a eficiencia.

Para usar as rexións de cultivo, teremos que engadir unha referencia do sistema a System.Drawing para poder usar o obxecto System.Drawing.Rectangle .

using IronOcr;

var Ocr = new IronTesseract();
// Set the language to Galician
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput())
{
    // Define content area for OCR
    var ContentArea = new System.Drawing.Rectangle { X = 215, Y = 1250, Height = 280, Width = 1335 };
    // As dimensións están en px

    // Add specific area for OCR
    Input.Add("document.png", ContentArea);

    // Perform OCR and get text
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
using IronOcr;

var Ocr = new IronTesseract();
// Set the language to Galician
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput())
{
    // Define content area for OCR
    var ContentArea = new System.Drawing.Rectangle { X = 215, Y = 1250, Height = 280, Width = 1335 };
    // As dimensións están en px

    // Add specific area for OCR
    Input.Add("document.png", ContentArea);

    // Perform OCR and get text
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
Imports IronOcr

Private Ocr = New IronTesseract()
' Set the language to Galician
Ocr.Language = OcrLanguage.Galician

Using Input = New OcrInput()
	' Define content area for OCR
	Dim ContentArea = New System.Drawing.Rectangle With {
		.X = 215,
		.Y = 1250,
		.Height = 280,
		.Width = 1335
	}
	' As dimensións están en px

	' Add specific area for OCR
	Input.Add("document.png", ContentArea)

	' Perform OCR and get text
	Dim Result = Ocr.Read(Input)
	Console.WriteLine(Result.Text)
End Using
$vbLabelText   $csharpLabel

OCR para escaneos de baixa calidade

A clase OcrInput IronOCR pode corrixir exploracións que Tesseract normal non pode ler.

using IronOcr;

var Ocr = new IronTesseract();
// Use Galician language for OCR
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput(@"img\Potter.LowQuality.tiff"))
{
    // Clean input image from noise
    Input.DeNoise();
    // Correct skewed image
    Input.Deskew();

    // Get OCR result
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
using IronOcr;

var Ocr = new IronTesseract();
// Use Galician language for OCR
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput(@"img\Potter.LowQuality.tiff"))
{
    // Clean input image from noise
    Input.DeNoise();
    // Correct skewed image
    Input.Deskew();

    // Get OCR result
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
Imports IronOcr

Private Ocr = New IronTesseract()
' Use Galician language for OCR
Ocr.Language = OcrLanguage.Galician

Using Input = New OcrInput("img\Potter.LowQuality.tiff")
	' Clean input image from noise
	Input.DeNoise()
	' Correct skewed image
	Input.Deskew()

	' Get OCR result
	Dim Result = Ocr.Read(Input)
	Console.WriteLine(Result.Text)
End Using
$vbLabelText   $csharpLabel

Exporta os resultados de OCR como PDF buscable

Imaxe en PDF con cadeas de texto copiables. Pode ser indexado por motores de busca e bases de datos.

using IronOcr;

var Ocr = new IronTesseract();
// Set OCR language to Galician
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput())
{
    // Set the title of the search file
    Input.Title = "Quarterly Report";
    // Add images to the OCR input
    Input.AddImage("image1.jpeg");
    Input.AddImage("image2.png");
    Input.AddImage("image3.gif");

    // Perform OCR and save result as a searchable PDF
    var Result = Ocr.Read(Input);
    Result.SaveAsSearchablePdf("searchable.pdf");
}
using IronOcr;

var Ocr = new IronTesseract();
// Set OCR language to Galician
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput())
{
    // Set the title of the search file
    Input.Title = "Quarterly Report";
    // Add images to the OCR input
    Input.AddImage("image1.jpeg");
    Input.AddImage("image2.png");
    Input.AddImage("image3.gif");

    // Perform OCR and save result as a searchable PDF
    var Result = Ocr.Read(Input);
    Result.SaveAsSearchablePdf("searchable.pdf");
}
Imports IronOcr

Private Ocr = New IronTesseract()
' Set OCR language to Galician
Ocr.Language = OcrLanguage.Galician

Using Input = New OcrInput()
	' Set the title of the search file
	Input.Title = "Quarterly Report"
	' Add images to the OCR input
	Input.AddImage("image1.jpeg")
	Input.AddImage("image2.png")
	Input.AddImage("image3.gif")

	' Perform OCR and save result as a searchable PDF
	Dim Result = Ocr.Read(Input)
	Result.SaveAsSearchablePdf("searchable.pdf")
End Using
$vbLabelText   $csharpLabel

Conversión de PDF TIFF a busca

Converte un documento TIFF (ou calquera grupo de ficheiros de imaxe) directamente nun PDF que se pode buscar e que pode ser indexado pola intranet, o sitio web e os buscadores de Google.

using IronOcr;

var Ocr = new IronTesseract();
// Use Galician as the language
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput())
{
    // Add Multi-Frame TIFF for OCR
    Input.AddMultiFrameTiff("example.tiff");

    // Read the TIFF and save as a searchable PDF
    var Result = Ocr.Read(Input).SaveAsSearchablePdf("searchable.pdf");
}
using IronOcr;

var Ocr = new IronTesseract();
// Use Galician as the language
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput())
{
    // Add Multi-Frame TIFF for OCR
    Input.AddMultiFrameTiff("example.tiff");

    // Read the TIFF and save as a searchable PDF
    var Result = Ocr.Read(Input).SaveAsSearchablePdf("searchable.pdf");
}
Imports IronOcr

Private Ocr = New IronTesseract()
' Use Galician as the language
Ocr.Language = OcrLanguage.Galician

Using Input = New OcrInput()
	' Add Multi-Frame TIFF for OCR
	Input.AddMultiFrameTiff("example.tiff")

	' Read the TIFF and save as a searchable PDF
	Dim Result = Ocr.Read(Input).SaveAsSearchablePdf("searchable.pdf")
End Using
$vbLabelText   $csharpLabel

Exportar resultados de OCR como HTML

Conversión de imaxe OCR a XHTML.

using IronOcr;

var Ocr = new IronTesseract();
// Set language to Galician
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput())
{
    // Set the title of the HTML file
    Input.Title = "Html Title";
    // Add image to OCR input
    Input.AddImage("image1.jpeg");

    // Perform OCR and save result as an XHTML file
    var Result = Ocr.Read(Input);
    Result.SaveAsHocrFile("results.html");
}
using IronOcr;

var Ocr = new IronTesseract();
// Set language to Galician
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput())
{
    // Set the title of the HTML file
    Input.Title = "Html Title";
    // Add image to OCR input
    Input.AddImage("image1.jpeg");

    // Perform OCR and save result as an XHTML file
    var Result = Ocr.Read(Input);
    Result.SaveAsHocrFile("results.html");
}
Imports IronOcr

Private Ocr = New IronTesseract()
' Set language to Galician
Ocr.Language = OcrLanguage.Galician

Using Input = New OcrInput()
	' Set the title of the HTML file
	Input.Title = "Html Title"
	' Add image to OCR input
	Input.AddImage("image1.jpeg")

	' Perform OCR and save result as an XHTML file
	Dim Result = Ocr.Read(Input)
	Result.SaveAsHocrFile("results.html")
End Using
$vbLabelText   $csharpLabel

Filtros de mellora da imaxe OCR

IronOCR ofrece filtros exclusivos para obxectos OcrInput para mellorar o rendemento do OCR.

Exemplo de código de mellora da imaxe

Fai que as imaxes de entrada de OCR sexan de maior calidade para producir resultados de OCR mellores e máis rápidos.

using IronOcr;

var Ocr = new IronTesseract();
// Use Galician for OCR
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput(@"LowQuality.jpeg"))
{
    // Apply image filters to enhance quality
    Input.DeNoise(); // Remove digital noise
    Input.Deskew(); // Fix rotation and perspective

    // Get OCR result
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
using IronOcr;

var Ocr = new IronTesseract();
// Use Galician for OCR
Ocr.Language = OcrLanguage.Galician;

using (var Input = new OcrInput(@"LowQuality.jpeg"))
{
    // Apply image filters to enhance quality
    Input.DeNoise(); // Remove digital noise
    Input.Deskew(); // Fix rotation and perspective

    // Get OCR result
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
Imports IronOcr

Private Ocr = New IronTesseract()
' Use Galician for OCR
Ocr.Language = OcrLanguage.Galician

Using Input = New OcrInput("LowQuality.jpeg")
	' Apply image filters to enhance quality
	Input.DeNoise() ' Remove digital noise
	Input.Deskew() ' Fix rotation and perspective

	' Get OCR result
	Dim Result = Ocr.Read(Input)
	Console.WriteLine(Result.Text)
End Using
$vbLabelText   $csharpLabel

Lista de filtros de imaxe OCR

Os filtros de entrada para mellorar o rendemento de OCR integrados en IronOCR inclúen:

  • OcrInput.Rotate(double degree): xira as imaxes un número de graos no sentido horario. En sentido antihorario, use números negativos.
  • OcrInput.Binarize(): este filtro de imaxe converte todos os píxeles en branco ou negro sen terreo medio. Pode mellorar os casos de rendemento de OCR cun contraste moi baixo de texto e fondo.
  • OcrInput.ToGrayScale(): este filtro de imaxe converte cada píxel nunha sombra de escala de grises. É improbable que mellore a precisión do OCR pero pode mellorar a velocidade.
  • OcrInput.Contrast(): aumenta o contraste automaticamente. Este filtro adoita mellorar a velocidade e a precisión do OCR nas exploracións de baixo contraste.
  • OcrInput.DeNoise(): elimina o ruído dixital. Este filtro só se debe empregar onde se espera ruído.
  • OcrInput.Invert(): inverte todas as cores. Por exemplo, o branco vólvese negro: o negro vólvese branco.
  • OcrInput.Dilate() - Morfoloxía avanzada. A dilatación engade píxeles aos límites dos obxectos dunha imaxe. Fronte a Erode.
  • OcrInput.Erode() - Morfoloxía avanzada. A erosión elimina os píxeles nos límites dos obxectos.
  • OcrInput.Deskew(): xira unha imaxe para que sexa correcta cara arriba e ortogonal. Isto é moi útil para OCR porque a tolerancia de Tesseract para exploracións inclinadas pode ser tan baixa como 5 graos.
  • OcrInput.DeepCleanBackgroundNoise() - Eliminación de ruído de fondo intensa. Use este filtro só no caso de que se coñeza o ruído de fondo do documento, porque este filtro tamén corre o risco de reducir a precisión do OCR dos documentos limpos e é moi caro na CPU.
  • OcrInput.EnhanceResolution: mellora a resolución de imaxes de baixa calidade. Este filtro non adoita ser necesario porque OcrInput.MinimumDPI e OcrInput.TargetDPI capturarán e resolverán automáticamente as entradas de baixa resolución.

CleanBackgroundNoise. Esta é unha configuración que leva moito tempo; non obstante, permite á biblioteca limpar automáticamente o ruído dixital, o papel que se arruga e outras imperfeccións dentro dunha imaxe dixital que doutro xeito faríaa incapaz de ser lida por outras bibliotecas OCR.

EnhanceContrast é unha configuración que fai que IronOCR aumente automáticamente o contraste do texto sobre o fondo dunha imaxe, aumentando a precisión do OCR e, xeralmente, aumentando o rendemento e a velocidade do OCR.

EnhanceResolution é unha configuración que detectará automáticamente imaxes de baixa resolución (que teñen menos de 275 dpi) e aumentará automáticamente a imaxe e, a continuación, afinará todo o texto para que poida ser lido perfectamente por unha biblioteca de OCR. Aínda que esta operación leva consigo moito tempo, normalmente reduce o tempo global para unha operación de OCR nunha imaxe.

Language IronOCR admite 22 paquetes de idiomas internacionais e a configuración do idioma pode usarse para seleccionar un ou varios idiomas que se aplicarán a unha operación de OCR.

OCR Iron Strategy soporta dúas estratexias. Podemos optar por unha dixitalización rápida e menos precisa dun documento ou usar unha estratexia avanzada que emprega algúns modelos de intelixencia artificial para mellorar automáticamente a precisión do texto OCR observando a relación estatística das palabras entre si nunha frase.

ColorSpace é unha configuración coa que podemos optar por OCR en escala de grises ou en cor. Xeralmente, a escala de grises é a mellor opción. Non obstante, ás veces cando hai textos ou fondos de tonalidade semellante pero de cor moi diferente, un espazo a toda cor dará mellores resultados.

DetectWhiteTextOnDarkBackgrounds. Xeralmente, todas as bibliotecas de OCR esperan ver texto negro sobre fondos brancos. Esta configuración permite que IronOCR poida detectar automáticamente negativos ou páxinas escuras con texto branco e lelas.

InputImageType. Esta configuración permite ao desenvolvedor guiar a biblioteca OCR sobre se está a ver un documento completo ou un fragmento, como unha captura de pantalla.

RotateAndStraighten é unha configuración avanzada que permite a IronOCR a capacidade única de ler documentos que non só se xiran, senón que posúen perspectiva, como fotografías de documentos de texto.

ReadBarcodes é unha característica útil que permite a IronOCR ler automáticamente códigos de barras e códigos QR nas páxinas xa que tamén le texto, sen engadir unha carga de tempo adicional.

Profundidade de cor. Esta configuración determina cantos bits por píxel empregará a biblioteca OCR para determinar a profundidade dunha cor. Unha profundidade de cor maior pode aumentar a calidade do OCR, pero tamén aumentará o tempo necesario para completar a operación do OCR.

126 paquetes de idiomas

IronOCR admite 126 idiomas internacionais a través de paquetes de idiomas que se distribúen como DLL, que se poden descargar desde este sitio web ou tamén desde o NuGet Package Manager .

Os idiomas inclúen alemán, francés, inglés, chinés, xaponés e moitos máis. Existen paquetes de idiomas especializados para pasaportes MRZ, cheques MICR, datos financeiros, matrículas e moitos máis. Tamén podes usar calquera ficheiro ".traineddata" de tesseract, incluídos os que creas ti mesmo.

Exemplo de idioma

Usando outras linguas OCR.

// Importar IronOcr package
// PM> Install-Package IronOcr.Languages.Arabic

var Ocr = new IronTesseract();
// Set the language to Arabic for OCR
Ocr.Language = OcrLanguage.Arabic;

using (var Input = new OcrInput())
{
    // Add image containing Arabic text
    Input.AddImage("img/arabic.gif");
    // Engadir filtros de imaxe se é necesario
    // Neste caso, incluso a entrada pensada é de moi baixa calidade
    // IronTesseract pode ler o que o Tesseract convencional non pode.

    // Perform OCR and get result
    var Result = Ocr.Read(Input);

    // A consola non pode imprimir árabe en Windows facilmente.
    // Gardemos no disco no seu lugar.
    Result.SaveAsTextFile("arabic.txt");
}
// Importar IronOcr package
// PM> Install-Package IronOcr.Languages.Arabic

var Ocr = new IronTesseract();
// Set the language to Arabic for OCR
Ocr.Language = OcrLanguage.Arabic;

using (var Input = new OcrInput())
{
    // Add image containing Arabic text
    Input.AddImage("img/arabic.gif");
    // Engadir filtros de imaxe se é necesario
    // Neste caso, incluso a entrada pensada é de moi baixa calidade
    // IronTesseract pode ler o que o Tesseract convencional non pode.

    // Perform OCR and get result
    var Result = Ocr.Read(Input);

    // A consola non pode imprimir árabe en Windows facilmente.
    // Gardemos no disco no seu lugar.
    Result.SaveAsTextFile("arabic.txt");
}
' Importar IronOcr package
' PM> Install-Package IronOcr.Languages.Arabic

Dim Ocr = New IronTesseract()
' Set the language to Arabic for OCR
Ocr.Language = OcrLanguage.Arabic

Using Input = New OcrInput()
	' Add image containing Arabic text
	Input.AddImage("img/arabic.gif")
	' Engadir filtros de imaxe se é necesario
	' Neste caso, incluso a entrada pensada é de moi baixa calidade
	' IronTesseract pode ler o que o Tesseract convencional non pode.

	' Perform OCR and get result
	Dim Result = Ocr.Read(Input)

	' A consola non pode imprimir árabe en Windows facilmente.
	' Gardemos no disco no seu lugar.
	Result.SaveAsTextFile("arabic.txt")
End Using
$vbLabelText   $csharpLabel

Exemplo de varios idiomas

Tamén é posible facer OCR usando varias linguas ao mesmo tempo. Isto pode realmente axudar a obter metadatos e URL en inglés en documentos Unicode.

// Importar IronOcr package
// PM> Install-Package IronOcr.Languages.ChineseSimplified

var Ocr = new IronTesseract();
// Set primary OCR language to Chinese Simplified
Ocr.Language = OcrLanguage.ChineseSimplified;
// Add Galician as a secondary language
Ocr.AddSecondaryLanguage(OcrLanguage.Galician);

// Podemos engadir calquera número de idiomas

using (var Input = new OcrInput())
{
    // Add multi-language PDF for OCR
    Input.Add("multi-language.pdf");
    var Result = Ocr.Read(Input);
    // Save OCR results to a text file
    Result.SaveAsTextFile("results.txt");
}
// Importar IronOcr package
// PM> Install-Package IronOcr.Languages.ChineseSimplified

var Ocr = new IronTesseract();
// Set primary OCR language to Chinese Simplified
Ocr.Language = OcrLanguage.ChineseSimplified;
// Add Galician as a secondary language
Ocr.AddSecondaryLanguage(OcrLanguage.Galician);

// Podemos engadir calquera número de idiomas

using (var Input = new OcrInput())
{
    // Add multi-language PDF for OCR
    Input.Add("multi-language.pdf");
    var Result = Ocr.Read(Input);
    // Save OCR results to a text file
    Result.SaveAsTextFile("results.txt");
}
' Importar IronOcr package
' PM> Install-Package IronOcr.Languages.ChineseSimplified

Dim Ocr = New IronTesseract()
' Set primary OCR language to Chinese Simplified
Ocr.Language = OcrLanguage.ChineseSimplified
' Add Galician as a secondary language
Ocr.AddSecondaryLanguage(OcrLanguage.Galician)

' Podemos engadir calquera número de idiomas

Using Input = New OcrInput()
	' Add multi-language PDF for OCR
	Input.Add("multi-language.pdf")
	Dim Result = Ocr.Read(Input)
	' Save OCR results to a text file
	Result.SaveAsTextFile("results.txt")
End Using
$vbLabelText   $csharpLabel

Obxectos detallados de resultados de OCR

OCR de ferro devolve un obxecto de resultado de OCR para cada operación de OCR. Xeralmente, os desenvolvedores só usan a propiedade de texto deste obxecto para obter o texto dixitalizado na imaxe. Non obstante, os resultados do OCR DOM son moito máis avanzados que este.

using IronOcr;
using System.Drawing; // Engadir referencia de montaxe

var Ocr = new IronTesseract();
// Set language to Galician for OCR
Ocr.Language = OcrLanguage.Galician;
// Configure the OCR engine mode
Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm;
// Enable barcode reading
Ocr.Configuration.ReadBarCodes = true; // Importante

using (var Input = new OcrInput(@"images\sample.tiff"))
{
    // Perform OCR and get result
    OcrResult Result = Ocr.Read(Input);
    // Retrieve detailed OCR result information
    var Pages = Result.Pages;
    var Words = Pages[0].Words;
    var Barcodes = Result.Barcodes;
    // Explore aquí para atopar unha API masiva e detallada:
    // - Páxinas, bloques, parafáficos, liñas, palabras, letras
    // - Exportación de imaxes, coordenadas de fontes, datos estatísticos
}
using IronOcr;
using System.Drawing; // Engadir referencia de montaxe

var Ocr = new IronTesseract();
// Set language to Galician for OCR
Ocr.Language = OcrLanguage.Galician;
// Configure the OCR engine mode
Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm;
// Enable barcode reading
Ocr.Configuration.ReadBarCodes = true; // Importante

using (var Input = new OcrInput(@"images\sample.tiff"))
{
    // Perform OCR and get result
    OcrResult Result = Ocr.Read(Input);
    // Retrieve detailed OCR result information
    var Pages = Result.Pages;
    var Words = Pages[0].Words;
    var Barcodes = Result.Barcodes;
    // Explore aquí para atopar unha API masiva e detallada:
    // - Páxinas, bloques, parafáficos, liñas, palabras, letras
    // - Exportación de imaxes, coordenadas de fontes, datos estatísticos
}
Imports IronOcr
Imports System.Drawing ' Engadir referencia de montaxe

Private Ocr = New IronTesseract()
' Set language to Galician for OCR
Ocr.Language = OcrLanguage.Galician
' Configure the OCR engine mode
Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm
' Enable barcode reading
Ocr.Configuration.ReadBarCodes = True ' Importante

Using Input = New OcrInput("images\sample.tiff")
	' Perform OCR and get result
	Dim Result As OcrResult = Ocr.Read(Input)
	' Retrieve detailed OCR result information
	Dim Pages = Result.Pages
	Dim Words = Pages(0).Words
	Dim Barcodes = Result.Barcodes
	' Explore aquí para atopar unha API masiva e detallada:
	' - Páxinas, bloques, parafáficos, liñas, palabras, letras
	' - Exportación de imaxes, coordenadas de fontes, datos estatísticos
End Using
$vbLabelText   $csharpLabel

Actuación

IronOCR funciona fóra da caixa sen necesidade de axustar o rendemento ou modificar moito as imaxes de entrada.

A velocidade é ardente: IronOcr.2020+ é ata 10 veces máis rápido e comete máis dun 250% menos de erros que as versións anteriores.

Aprender máis

Para obter máis información sobre OCR en C#, VB, F# ou calquera outro idioma .NET, lea os nosos titoriais da comunidade, que dan exemplos do mundo real de como se pode usar IronOCR e poden amosar os matices de como sacar o mellor proveito de esta biblioteca.

Tamén hai dispoñible unha referencia completa de obxectos para desenvolvedores .NET .