OCR català a C# i .NET

Altres versions d'aquest document:

IronOCR és un component de programari C# que permet als codificadors .NET llegir text d’imatges i documents PDF en 126 idiomes, inclòs el català.

És una forquilla avançada de Tesseract, construïda exclusivament per als desenvolupadors de .NET i que supera regularment altres motors Tesseract tant per velocitat com per precisió.

Contingut d’IronOcr.Languages.Catalan

Aquest paquet conté 46 idiomes OCR per a .NET:

  • Català
  • CatalàMillor
  • CatalanFast

Descarregar

Paquet de llengua catalana [català]

Instal·lació

El primer que hem de fer és instal·lar el nostre paquet OCR en català al vostre projecte .NET.

Install-Package IronOCR.Languages.Catalan

Exemple de codi

Aquest exemple de codi C# llegeix el text català d'un document Image o PDF.

// Install the IronOcr Catalan language package using NuGet
// PM> Install-Package IronOcr.Languages.Catalan
using IronOcr;

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

using (var Input = new OcrInput(@"images\Catalan.png"))
{
    // Read text from the input image
    var Result = Ocr.Read(Input);
    // Store the recognized text
    var AllText = Result.Text;
    Console.WriteLine(AllText);
}
// Install the IronOcr Catalan language package using NuGet
// PM> Install-Package IronOcr.Languages.Catalan
using IronOcr;

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

using (var Input = new OcrInput(@"images\Catalan.png"))
{
    // Read text from the input image
    var Result = Ocr.Read(Input);
    // Store the recognized text
    var AllText = Result.Text;
    Console.WriteLine(AllText);
}
' Install the IronOcr Catalan language package using NuGet
' PM> Install-Package IronOcr.Languages.Catalan
Imports IronOcr

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

Using Input = New OcrInput("images\Catalan.png")
	' Read text from the input image
	Dim Result = Ocr.Read(Input)
	' Store the recognized text
	Dim AllText = Result.Text
	Console.WriteLine(AllText)
End Using
$vbLabelText   $csharpLabel

Per què triar IronOCR?

IronOCR és una biblioteca de programari .NET fàcil d’instal·lar, completa i ben documentada. Trieu IronOCR per aconseguir una precisió del 99,8% + OCR sense utilitzar cap servei web extern, tarifes en curs ni enviar documents confidencials per Internet.

Per què els desenvolupadors de C# trien IronOCR sobre Vanilla Tesseract:

  • Instal·leu-la com a única DLL o NuGet
  • Inclou els motors Tesseract 5, 4 i 3 fora de la caixa.
  • La precisió del 99,8% supera significativament el Tesseract normal.
  • Velocitat increïble i MultiThreading
  • Compatible amb aplicacions MVC, WebApp, escriptori, consola i servidor
  • No hi ha codi Exes ni C ++ per treballar
  • Suport complet d’OCR en PDF
  • Per realitzar OCR gairebé qualsevol fitxer d'imatge o PDF
  • Suport complet .NET Core, Standard i Framework
  • Implementació a Windows, Mac, Linux, Azure, Docker, Lambda, AWS
  • Llegiu codis de barres i codis QR
  • Exporteu OCR com a XHTML
  • Exporteu OCR a documents PDF que es poden cercar
  • Suport multithreading
  • 126 idiomes internacionals gestionats tots mitjançant fitxers NuGet o OcrData
  • Extreu imatges, coordenades, estadístiques i tipus de lletra. No només text.
  • Es pot utilitzar per redistribuir Tesseract OCR dins d'aplicacions comercials i propietàries.

L'OCR de ferro brilla quan es treballa amb imatges del món real i documents imperfectes com ara fotografies o escaneigs de baixa resolució que poden tenir sorolls o imperfeccions digitals.

Altres biblioteques OCR gratuïtes per a la plataforma .NET, com ara altres API i serveis web de tesseract .net, no funcionen tan bé en aquests casos d’ús del món real.

OCR amb Tesseract 5: inicia la codificació en C#

L'exemple de codi següent mostra la facilitat de llegir text d'una imatge amb C# o VB .NET.

OneLiner

// Perform a quick OCR on an image using IronTesseract
string Text = new IronTesseract().Read(@"img\Screenshot.png").Text;
Console.WriteLine(Text);
// Perform a quick OCR on an image using IronTesseract
string Text = new IronTesseract().Read(@"img\Screenshot.png").Text;
Console.WriteLine(Text);
' Perform a quick OCR on an image using IronTesseract
Dim Text As String = (New IronTesseract()).Read("img\Screenshot.png").Text
Console.WriteLine(Text)
$vbLabelText   $csharpLabel

Configurable Hello World

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

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;

using (var Input = new OcrInput())
{
    // Add an image for OCR
    Input.AddImage("images/sample.jpeg");
    // ... podeu afegir qualsevol nombre d'imatges
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
// PM> Install-Package IronOCR.Languages.Catalan
using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;

using (var Input = new OcrInput())
{
    // Add an image for OCR
    Input.AddImage("images/sample.jpeg");
    // ... podeu afegir qualsevol nombre d'imatges
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
' PM> Install-Package IronOCR.Languages.Catalan
Imports IronOcr

Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Catalan

Using Input = New OcrInput()
	' Add an image for OCR
	Input.AddImage("images/sample.jpeg")
	' ... podeu afegir qualsevol nombre d'imatges
	Dim Result = Ocr.Read(Input)
	Console.WriteLine(Result.Text)
End Using
$vbLabelText   $csharpLabel

C# PDF OCR

El mateix enfocament es pot utilitzar de manera similar per extreure text de qualsevol document PDF.

using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;

using (var input = new OcrInput())
{
    // Add a PDF file, optionally encrypted with a password
    input.AddPdf("example.pdf", "password");
    // També podem seleccionar números de pàgines PDF específics per a OCR

    var Result = Ocr.Read(input);

    Console.WriteLine(Result.Text);
    Console.WriteLine($"{Result.Pages.Count()} Pages");
    // 1 pàgina per a cada pàgina del PDF
}
using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;

using (var input = new OcrInput())
{
    // Add a PDF file, optionally encrypted with a password
    input.AddPdf("example.pdf", "password");
    // També podem seleccionar números de pàgines PDF específics per a OCR

    var Result = Ocr.Read(input);

    Console.WriteLine(Result.Text);
    Console.WriteLine($"{Result.Pages.Count()} Pages");
    // 1 pàgina per a cada pàgina del PDF
}
Imports IronOcr

Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Catalan

Using input = New OcrInput()
	' Add a PDF file, optionally encrypted with a password
	input.AddPdf("example.pdf", "password")
	' També podem seleccionar números de pàgines PDF específics per a OCR

	Dim Result = Ocr.Read(input)

	Console.WriteLine(Result.Text)
	Console.WriteLine($"{Result.Pages.Count()} Pages")
	' 1 pàgina per a cada pàgina del PDF
End Using
$vbLabelText   $csharpLabel

OCR per a TIFF MultiPage

Lectura OCR en format de fitxer TIFF que inclou documents de diverses pàgines. TIFF també es pot convertir directament en un fitxer PDF amb text de cerca.

using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;

using (var Input = new OcrInput())
{
    // Add a multi-frame TIFF for OCR
    Input.AddMultiFrameTiff("multi-frame.tiff");
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;

using (var Input = new OcrInput())
{
    // Add a multi-frame TIFF for OCR
    Input.AddMultiFrameTiff("multi-frame.tiff");
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
Imports IronOcr

Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Catalan

Using Input = New OcrInput()
	' Add a multi-frame TIFF for OCR
	Input.AddMultiFrameTiff("multi-frame.tiff")
	Dim Result = Ocr.Read(Input)
	Console.WriteLine(Result.Text)
End Using
$vbLabelText   $csharpLabel

Codis de barres i QR

Una característica única de IronOCR és que pot llegir codis de barres i codis QR de documents mentre s’està cercant text. Les instàncies de la classe OcrResult.OcrBarcode proporcionen al desenvolupador informació detallada sobre cada codi de barres escanejat.

using IronOcr;

var Ocr = new IronTesseract();
Ocr.Configuration.ReadBarCodes = true;

using (var input = new OcrInput())
{
    // Add an image that contains barcodes or QR codes
    input.AddImage("img/Barcode.png");
    var Result = Ocr.Read(input);

    foreach (var Barcode in Result.Barcodes)
    {
        Console.WriteLine(Barcode.Value);
        // també s’exposen propietats de tipus i ubicació
    }
}
using IronOcr;

var Ocr = new IronTesseract();
Ocr.Configuration.ReadBarCodes = true;

using (var input = new OcrInput())
{
    // Add an image that contains barcodes or QR codes
    input.AddImage("img/Barcode.png");
    var Result = Ocr.Read(input);

    foreach (var Barcode in Result.Barcodes)
    {
        Console.WriteLine(Barcode.Value);
        // també s’exposen propietats de tipus i ubicació
    }
}
Imports IronOcr

Private Ocr = New IronTesseract()
Ocr.Configuration.ReadBarCodes = True

Using input = New OcrInput()
	' Add an image that contains barcodes or QR codes
	input.AddImage("img/Barcode.png")
	Dim Result = Ocr.Read(input)

	For Each Barcode In Result.Barcodes
		Console.WriteLine(Barcode.Value)
		' també s'exposen propietats de tipus i ubicació
	Next Barcode
End Using
$vbLabelText   $csharpLabel

OCR sobre àrees específiques d’imatges

Tots els mètodes de lectura i escaneig de IronOCR proporcionen la possibilitat d'especificar exactament de quina part d'una o més pàgines volem llegir text. Això és molt útil quan estem buscant formularis estandarditzats i pot estalviar molt de temps i millorar l’eficiència.

Per utilitzar les regions de cultiu, haurem d’afegir una referència del sistema a System.Drawing per poder utilitzar l’objecte System.Drawing.Rectangle.

using IronOcr;
using System.Drawing; // Add reference to System.Drawing

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;

using (var Input = new OcrInput())
{
    // Define the area from which to read the text
    var ContentArea = new Rectangle() { X = 215, Y = 1250, Height = 280, Width = 1335 };
    // Les dimensions són en px

    Input.Add("document.png", ContentArea);

    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
using IronOcr;
using System.Drawing; // Add reference to System.Drawing

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;

using (var Input = new OcrInput())
{
    // Define the area from which to read the text
    var ContentArea = new Rectangle() { X = 215, Y = 1250, Height = 280, Width = 1335 };
    // Les dimensions són en px

    Input.Add("document.png", ContentArea);

    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
Imports IronOcr
Imports System.Drawing ' Add reference to System.Drawing

Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Catalan

Using Input = New OcrInput()
	' Define the area from which to read the text
	Dim ContentArea = New Rectangle() With {
		.X = 215,
		.Y = 1250,
		.Height = 280,
		.Width = 1335
	}
	' Les dimensions són en px

	Input.Add("document.png", ContentArea)

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

OCR per a escaneigs de baixa qualitat

La classe OcrInput IronOCR pot corregir les exploracions que Tesseract no sap llegir.

using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;

using (var Input = new OcrInput(@"img\Potter.LowQuality.tiff"))
{
    Input.DeNoise(); // Corrects digital noise and poor scans
    Input.Deskew();  // Fixes skewing and perspective issues
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;

using (var Input = new OcrInput(@"img\Potter.LowQuality.tiff"))
{
    Input.DeNoise(); // Corrects digital noise and poor scans
    Input.Deskew();  // Fixes skewing and perspective issues
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
Imports IronOcr

Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Catalan

Using Input = New OcrInput("img\Potter.LowQuality.tiff")
	Input.DeNoise() ' Corrects digital noise and poor scans
	Input.Deskew() ' Fixes skewing and perspective issues
	Dim Result = Ocr.Read(Input)
	Console.WriteLine(Result.Text)
End Using
$vbLabelText   $csharpLabel

Exporteu els resultats de l'OCR com a PDF de cerca

Imatge en PDF amb cadenes de text copiables. Pot ser indexat pels motors de cerca i les bases de dades.

using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;

using (var Input = new OcrInput())
{
    Input.Title = "Quarterly Report";
    Input.AddImage("image1.jpeg");
    Input.AddImage("image2.png");
    Input.AddImage("image3.gif");

    var Result = Ocr.Read(Input);
    Result.SaveAsSearchablePdf("searchable.pdf");
}
using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;

using (var Input = new OcrInput())
{
    Input.Title = "Quarterly Report";
    Input.AddImage("image1.jpeg");
    Input.AddImage("image2.png");
    Input.AddImage("image3.gif");

    var Result = Ocr.Read(Input);
    Result.SaveAsSearchablePdf("searchable.pdf");
}
Imports IronOcr

Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Catalan

Using Input = New OcrInput()
	Input.Title = "Quarterly Report"
	Input.AddImage("image1.jpeg")
	Input.AddImage("image2.png")
	Input.AddImage("image3.gif")

	Dim Result = Ocr.Read(Input)
	Result.SaveAsSearchablePdf("searchable.pdf")
End Using
$vbLabelText   $csharpLabel

Conversió de PDF TIFF a la cerca

Converteix un document TIFF (o qualsevol grup de fitxers d’imatges) directament a un PDF que es pot cercar i que pot ser indexat per la intranet, el lloc web i els motors de cerca de Google.

using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;

using (var Input = new OcrInput())
{
    Input.AddMultiFrameTiff("example.tiff");
    var Result = Ocr.Read(Input);
    Result.SaveAsSearchablePdf("searchable.pdf");
}
using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;

using (var Input = new OcrInput())
{
    Input.AddMultiFrameTiff("example.tiff");
    var Result = Ocr.Read(Input);
    Result.SaveAsSearchablePdf("searchable.pdf");
}
Imports IronOcr

Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Catalan

Using Input = New OcrInput()
	Input.AddMultiFrameTiff("example.tiff")
	Dim Result = Ocr.Read(Input)
	Result.SaveAsSearchablePdf("searchable.pdf")
End Using
$vbLabelText   $csharpLabel

Exporta els resultats de l'OCR com a HTML

Conversió de la imatge OCR a XHTML.

using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;
using (var Input = new OcrInput())
{
    Input.Title = "Html Title";
    Input.AddImage("image1.jpeg");
    var Result = Ocr.Read(Input);
    Result.SaveAsHocrFile("results.html");
}
using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;
using (var Input = new OcrInput())
{
    Input.Title = "Html Title";
    Input.AddImage("image1.jpeg");
    var Result = Ocr.Read(Input);
    Result.SaveAsHocrFile("results.html");
}
Imports IronOcr

Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Catalan
Using Input = New OcrInput()
	Input.Title = "Html Title"
	Input.AddImage("image1.jpeg")
	Dim Result = Ocr.Read(Input)
	Result.SaveAsHocrFile("results.html")
End Using
$vbLabelText   $csharpLabel

Filtres de millora de la imatge OCR

IronOCR proporciona filtres únics per a objectes OcrInput per millorar el rendiment de l'OCR.

Exemple de codi de millora de la imatge

Augmenta la qualitat de les imatges d’entrada d’OCR per obtenir resultats OCR millors i més ràpids.

using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;

using (var Input = new OcrInput(@"LowQuality.jpeg"))
{
    Input.DeNoise(); // Corrects digital noise and poor scans
    Input.Deskew();  // Fixes skewing and perspective issues
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;

using (var Input = new OcrInput(@"LowQuality.jpeg"))
{
    Input.DeNoise(); // Corrects digital noise and poor scans
    Input.Deskew();  // Fixes skewing and perspective issues
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
Imports IronOcr

Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Catalan

Using Input = New OcrInput("LowQuality.jpeg")
	Input.DeNoise() ' Corrects digital noise and poor scans
	Input.Deskew() ' Fixes skewing and perspective issues
	Dim Result = Ocr.Read(Input)
	Console.WriteLine(Result.Text)
End Using
$vbLabelText   $csharpLabel

Llista de filtres d’imatges OCR

Els filtres d'entrada per millorar el rendiment de l'OCR integrats a IronOCR inclouen:

  • OcrInput.Rotate(double degrees): Gira les imatges un nombre de graus en sentit horari. Per a les agulles del rellotge, utilitzeu números negatius.
  • OcrInput.Binarize(): Converteix cada píxel en blanc o negre sense un punt mig. Pot millorar els casos de rendiment de l'OCR amb un contrast molt baix del text amb el fons.
  • OcrInput.ToGrayScale(): Converteix cada píxel en un to d’escala de grisos. És poc probable que millori la precisió de l’OCR, però pot millorar la velocitat.
  • OcrInput.Contrast(): Augmenta el contrast automàticament. Aquest filtre sovint millora la velocitat i la precisió de l’OCR en els escaneigs de baix contrast.
  • OcrInput.DeNoise(): Elimina el soroll digital. Aquest filtre només s’ha d’utilitzar allà on s’espera un soroll.
  • OcrInput.Invert(): Inverteix tots els colors. Per exemple, el blanc es torna negre i el negre es torna blanc.
  • OcrInput.Dilate(): Morfologia avançada. Afegix píxels als límits dels objectes d’una imatge. Contrari a Erode.
  • OcrInput.Erode(): Morfologia avançada. Elimina els píxels als límits de l'objecte. Oposite of Dilate.
  • OcrInput.Deskew(): Fa girar una imatge perquè sigui correcta cap amunt i ortogonal. Això és molt útil per a OCR perquè la tolerància de Tesseract per a exploracions esbiaixades pot arribar a ser de fins a 5 graus.
  • OcrInput.DeepCleanBackgroundNoise(): Eliminació de soroll de fons intens. Utilitzeu aquest filtre només en cas que es conegui un soroll extrem de fons del document, ja que aquest filtre també arriscarà a reduir la precisió OCR dels documents nets i és molt car per a la CPU.
  • OcrInput.EnhanceResolution: Millora la resolució d’imatges de baixa qualitat. Aquest filtre no és necessari sovint perquè OcrInput.MinimumDPI i OcrInput.TargetDPI capturaran i resoldran automàticament les entrades de baixa resolució.

CleanBackgroundNoise: Aquest és un paràmetre que requereix una mica de temps; tanmateix, permet a la biblioteca netejar automàticament sorolls digitals, arrugats de paper i altres imperfeccions dins d'una imatge digital que, en cas contrari, la impossibilitarien de ser llegida per altres biblioteques OCR.

EnhanceContrast: Augmenta automàticament el contrast del text sobre el fons d’una imatge, millorant l’eficiència del OCR i generalment augmentant el rendiment i la velocitat de l’OCR.

EnhanceResolution: Detecta automàticament les imatges de baixa resolució (que són inferiors a 275 dpi) i augmenta automàticament la imatge, afina tot el text perquè una biblioteca OCR pugui llegir-la perfectament. Tot i que aquesta operació consumeix molt de temps, en general redueix el temps global per a una operació OCR en una imatge.

Language: IronOCR admet 22 paquets d'idiomes internacionals i la configuració d'idioma es pot utilitzar per seleccionar un o més idiomes múltiples que s'aplicaran per a una operació OCR.

Strategy: IronOCR admet dues estratègies. Podem optar per escanejar un document de forma ràpida i menys precisa o utilitzar una estratègia avançada que utilitzi alguns models d’intel·ligència artificial per millorar automàticament la precisió del text d’OCR mirant la relació estadística de les paraules entre si en una frase.

ColorSpace: Podem optar per OCR en escala de grisos o color. En general, l’escala de grisos és la millor opció. No obstant això, de vegades, quan hi ha textos o fons de tonalitat similar però de color molt diferent, un espai de color a tot color proporcionarà millors resultats.

DetectWhiteTextOnDarkBackgrounds: En general, totes les biblioteques OCR esperen veure text negre sobre fons blancs. Aquest paràmetre permet a IronOCR detectar automàticament negatius o pàgines fosques amb text en blanc i llegir-los.

InputImageType: Aquest paràmetre permet al desenvolupador guiar la biblioteca OCR sobre si busca un document complet o un fragment, com ara una captura de pantalla.

RotateAndStraighten: Un paràmetre avançat que permet a IronOCR la capacitat única de llegir documents que no només es giren, sinó que potser contenen perspectiva, com ara fotografies de documents de text.

ReadBarcodes: Permet a IronOCR llegir automàticament codis de barres i codis QR a les pàgines, mentre que també llegeix text, sense afegir una càrrega de temps addicional.

ColorDepth: Determina quants bits per píxel utilitzarà la biblioteca OCR per determinar la profunditat d'un color. Una profunditat de color més alta pot augmentar la qualitat de l'OCR, però també augmentarà el temps necessari per completar l'operació de l'OCR.

126 paquets d'idiomes

IronOCR admet 126 idiomes internacionals mitjançant paquets d’idiomes que es distribueixen en format DLL, que es poden descarregar des d’aquest lloc web o també des del gestor de paquets NuGet.

Els idiomes inclouen alemany, francès, anglès, xinès, japonès i molts més. Hi ha paquets d'idiomes especialitzats per a passaports MRZ, xecs MICR, dades financeres, matrícules i molts altres. També podeu utilitzar qualsevol fitxer tesseract ".traineddata", inclosos els que creeu vosaltres mateixos.

Exemple d’idioma

Utilització d'altres idiomes OCR.

// Install the IronOcr Arabic language package using NuGet
// PM> Install-Package IronOcr.Languages.Arabic

using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Arabic;

using (var input = new OcrInput())
{
    // Add an image for OCR that contains Arabic text
    input.AddImage("img/arabic.gif");
    // Apply image filters if needed
    // In this case, even though input is of very low quality
    // IronTesseract can read what the conventional Tesseract cannot.

    var Result = Ocr.Read(input);

    // Console cannot easily print Arabic on Windows.
    // Save it to disk.
    Result.SaveAsTextFile("arabic.txt");
}
// Install the IronOcr Arabic language package using NuGet
// PM> Install-Package IronOcr.Languages.Arabic

using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Arabic;

using (var input = new OcrInput())
{
    // Add an image for OCR that contains Arabic text
    input.AddImage("img/arabic.gif");
    // Apply image filters if needed
    // In this case, even though input is of very low quality
    // IronTesseract can read what the conventional Tesseract cannot.

    var Result = Ocr.Read(input);

    // Console cannot easily print Arabic on Windows.
    // Save it to disk.
    Result.SaveAsTextFile("arabic.txt");
}
' Install the IronOcr Arabic language package using NuGet
' PM> Install-Package IronOcr.Languages.Arabic

Imports IronOcr

Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Arabic

Using input = New OcrInput()
	' Add an image for OCR that contains Arabic text
	input.AddImage("img/arabic.gif")
	' Apply image filters if needed
	' In this case, even though input is of very low quality
	' IronTesseract can read what the conventional Tesseract cannot.

	Dim Result = Ocr.Read(input)

	' Console cannot easily print Arabic on Windows.
	' Save it to disk.
	Result.SaveAsTextFile("arabic.txt")
End Using
$vbLabelText   $csharpLabel

Exemple de diversos idiomes

També és possible fer OCR utilitzant diversos idiomes alhora. Això pot ajudar a obtenir metadades i URL en anglès als documents Unicode.

// Install the IronOcr Chinese Simplified language package using NuGet
// PM> Install-Package IronOcr.Languages.ChineseSimplified

using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.ChineseSimplified;
Ocr.AddSecondaryLanguage(OcrLanguage.Catalan);

// Podem afegir qualsevol nombre d’idiomes

using (var input = new OcrInput())
{
    input.Add("multi-language.pdf");
    var Result = Ocr.Read(input);
    Result.SaveAsTextFile("results.txt");
}
// Install the IronOcr Chinese Simplified language package using NuGet
// PM> Install-Package IronOcr.Languages.ChineseSimplified

using IronOcr;

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.ChineseSimplified;
Ocr.AddSecondaryLanguage(OcrLanguage.Catalan);

// Podem afegir qualsevol nombre d’idiomes

using (var input = new OcrInput())
{
    input.Add("multi-language.pdf");
    var Result = Ocr.Read(input);
    Result.SaveAsTextFile("results.txt");
}
' Install the IronOcr Chinese Simplified language package using NuGet
' PM> Install-Package IronOcr.Languages.ChineseSimplified

Imports IronOcr

Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.ChineseSimplified
Ocr.AddSecondaryLanguage(OcrLanguage.Catalan)

' Podem afegir qualsevol nombre d'idiomes

Using input = New OcrInput()
	input.Add("multi-language.pdf")
	Dim Result = Ocr.Read(input)
	Result.SaveAsTextFile("results.txt")
End Using
$vbLabelText   $csharpLabel

Objectes de resultats OCR detallats

IronOCR retorna un objecte de resultat OCR per a cada operació OCR. Generalment, els desenvolupadors només utilitzen la propietat de text d’aquest objecte per obtenir el text escanejat de la imatge. Tanmateix, els resultats OCR DOM són molt més avançats que aquest.

using IronOcr;
using System.Drawing; // Add reference for System.Drawing assembly

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;
Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm;
Ocr.Configuration.ReadBarCodes = true; // Important for barcode reading

using (var Input = new OcrInput(@"images\sample.tiff"))
{
    OcrResult Result = Ocr.Read(Input);
    var Pages = Result.Pages;
    var Words = Pages[0].Words;
    var Barcodes = Result.Barcodes;
    // Explore here to find a massive and detailed API:
    // - Pages, blocks, paragraphs, lines, words, characters
    // - Image exports, font coordinates, statistical data
}
using IronOcr;
using System.Drawing; // Add reference for System.Drawing assembly

var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Catalan;
Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm;
Ocr.Configuration.ReadBarCodes = true; // Important for barcode reading

using (var Input = new OcrInput(@"images\sample.tiff"))
{
    OcrResult Result = Ocr.Read(Input);
    var Pages = Result.Pages;
    var Words = Pages[0].Words;
    var Barcodes = Result.Barcodes;
    // Explore here to find a massive and detailed API:
    // - Pages, blocks, paragraphs, lines, words, characters
    // - Image exports, font coordinates, statistical data
}
Imports IronOcr
Imports System.Drawing ' Add reference for System.Drawing assembly

Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Catalan
Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm
Ocr.Configuration.ReadBarCodes = True ' Important for barcode reading

Using Input = New OcrInput("images\sample.tiff")
	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 and detailed API:
	' - Pages, blocks, paragraphs, lines, words, characters
	' - Image exports, font coordinates, statistical data
End Using
$vbLabelText   $csharpLabel

Rendiment

IronOCR funciona fora de la caixa sense necessitat de sintonitzar o modificar les imatges d’entrada. Speed is Blazing: IronOcr.2020 + és fins a 10 vegades més ràpida i comet un 250% menys d'errors que les versions anteriors.

Aprèn més

Per obtenir més informació sobre OCR en C#, VB, F# o qualsevol altre idioma .NET, llegiu els nostres tutorials de la comunitat, que ofereixen exemples reals de com es pot utilitzar IronOCR i poden mostrar els matisos de com treure el màxim partit aquesta biblioteca.

També hi ha disponible una referència d'objecte completa per als desenvolupadors de .NET.