OCR italiano in C# e .NET
Altre versioni di questo documento:
IronOCR è un componente software C# che consente ai programmatori .NET di leggere testo da immagini e documenti PDF in 126 lingue, incluso l'italiano.
È un fork avanzato di Tesseract, costruito esclusivamente per gli sviluppatori .NET e supera regolarmente gli altri motori Tesseract sia per velocità che per precisione.
Contenuti di IronOcr.Languages.Italian
Questo pacchetto contiene 99 lingue OCR per .NET:
- italiano
- ItalianBest
- ItalianFast
- ItalianoVecchio
- ItalianOldBest
- ItalianOldFast
Scarica
Pacchetto lingua italiana [italiano]
- Download as Cerniera lampo
- Install with NuGet
Installazione
La prima cosa che dobbiamo fare è installare il nostro pacchetto OCR italiano nel tuo progetto .NET.
Install-Package IronOcr.Languages.Italian
Esempio di codice
Questo esempio di codice C# legge il testo italiano da un'immagine o un documento PDF.
// Importa la libreria IronOcr
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un file immagine come input
using (var Input = new OcrInput(@"images\Italian.png"))
{
// Leggi l'immagine
var Result = Ocr.Read(Input);
// Ottieni tutto il testo dall'immagine
var AllText = Result.Text;
// Stampa il testo ottenuto
Console.WriteLine(AllText);
}
// Importa la libreria IronOcr
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un file immagine come input
using (var Input = new OcrInput(@"images\Italian.png"))
{
// Leggi l'immagine
var Result = Ocr.Read(Input);
// Ottieni tutto il testo dall'immagine
var AllText = Result.Text;
// Stampa il testo ottenuto
Console.WriteLine(AllText);
}
' Importa la libreria IronOcr
Imports IronOcr
' Crea un'istanza di IronTesseract
Private Ocr = New IronTesseract()
' Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian
' Utilizza un file immagine come input
Using Input = New OcrInput("images\Italian.png")
' Leggi l'immagine
Dim Result = Ocr.Read(Input)
' Ottieni tutto il testo dall'immagine
Dim AllText = Result.Text
' Stampa il testo ottenuto
Console.WriteLine(AllText)
End Using
Perché scegliere IronOCR?
IronOCR è una libreria di software .NET facile da installare, completa e ben documentata.
Scegli IronOCR per ottenere una precisione OCR superiore al 99,8% senza utilizzare servizi Web esterni, tariffe correnti o inviare documenti riservati su Internet.
Perché gli sviluppatori C# scelgono IronOCR su Vanilla Tesseract:
- Installa come una singola DLL o NuGet
- Include per Tesseract 5, 4 e 3 motori fuori dalla scatola.
- La precisione del 99,8% supera in modo significativo il normale Tesseract.
- Velocità incredibile e MultiThreading
- Compatibile con MVC, WebApp, desktop, console e applicazioni server
- Nessun codice Exes o C ++ con cui lavorare
- Supporto completo per PDF OCR
- Per eseguire l'OCR in quasi tutti i file immagine o PDF
- Supporto completo .NET Core, Standard e FrameWork
- Distribuisci su Windows, Mac, Linux, Azure, Docker, Lambda, AWS
- Leggi codici a barre e codici QR
- Esporta OCR come XHTML
- Esporta OCR in documenti PDF ricercabili
- Supporto multithreading
- 126 lingue internazionali tutte gestite tramite file NuGet o OcrData
- Estrai immagini, coordinate, statistiche e caratteri. Non solo testo.
- Può essere utilizzato per ridistribuire Tesseract OCR all'interno di applicazioni commerciali e proprietarie.
IronOCR brilla quando si lavora con immagini del mondo reale e documenti imperfetti come fotografie o scansioni a bassa risoluzione che possono presentare disturbi o imperfezioni digitali.
Altre librerie OCR gratuite per la piattaforma .NET, come altre API .net tesseract e servizi web, non funzionano così bene in questi casi d'uso del mondo reale.
OCR con Tesseract 5 - Inizia la codifica in C#
L'esempio di codice riportato di seguito mostra quanto sia facile leggere il testo da un'immagine utilizzando C# o VB .NET.
OneLiner
using IronOcr;
// Legge il testo da un'immagine in un'unica riga di codice
string Text = new IronTesseract().Read(@"img\Screenshot.png").Text;
using IronOcr;
// Legge il testo da un'immagine in un'unica riga di codice
string Text = new IronTesseract().Read(@"img\Screenshot.png").Text;
Imports IronOcr
' Legge il testo da un'immagine in un'unica riga di codice
Private Text As String = (New IronTesseract()).Read("img\Screenshot.png").Text
Hello World configurabile
// Importa la libreria IronOcr
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un file immagine come input
using (var Input = new OcrInput())
{
// Aggiunge l'immagine al processo OCR
Input.AddImage("images/sample.jpeg");
//... puoi aggiungere un numero qualsiasi di immagini
// Leggi l'immagine
var Result = Ocr.Read(Input);
// Stampa il testo ottenuto
Console.WriteLine(Result.Text);
}
// Importa la libreria IronOcr
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un file immagine come input
using (var Input = new OcrInput())
{
// Aggiunge l'immagine al processo OCR
Input.AddImage("images/sample.jpeg");
//... puoi aggiungere un numero qualsiasi di immagini
// Leggi l'immagine
var Result = Ocr.Read(Input);
// Stampa il testo ottenuto
Console.WriteLine(Result.Text);
}
' Importa la libreria IronOcr
Imports IronOcr
' Crea un'istanza di IronTesseract
Private Ocr = New IronTesseract()
' Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian
' Utilizza un file immagine come input
Using Input = New OcrInput()
' Aggiunge l'immagine al processo OCR
Input.AddImage("images/sample.jpeg")
'... puoi aggiungere un numero qualsiasi di immagini
' Leggi l'immagine
Dim Result = Ocr.Read(Input)
' Stampa il testo ottenuto
Console.WriteLine(Result.Text)
End Using
OCR PDF in C#
Lo stesso approccio può essere utilizzato in modo simile per estrarre il testo da qualsiasi documento PDF.
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un file PDF come input
using (var input = new OcrInput())
{
// Aggiunge il PDF specificando una password, se necessario
input.AddPdf("example.pdf", "password");
// Possiamo anche selezionare numeri di pagina PDF specifici per l'OCR
// Leggi il PDF
var Result = Ocr.Read(input);
// Stampa il testo ottenuto e il numero di pagine
Console.WriteLine(Result.Text);
Console.WriteLine($"{Result.Pages.Count()} Pages");
// 1 pagina per ogni pagina del PDF
}
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un file PDF come input
using (var input = new OcrInput())
{
// Aggiunge il PDF specificando una password, se necessario
input.AddPdf("example.pdf", "password");
// Possiamo anche selezionare numeri di pagina PDF specifici per l'OCR
// Leggi il PDF
var Result = Ocr.Read(input);
// Stampa il testo ottenuto e il numero di pagine
Console.WriteLine(Result.Text);
Console.WriteLine($"{Result.Pages.Count()} Pages");
// 1 pagina per ogni pagina del PDF
}
Imports IronOcr
' Crea un'istanza di IronTesseract
Private Ocr = New IronTesseract()
' Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian
' Utilizza un file PDF come input
Using input = New OcrInput()
' Aggiunge il PDF specificando una password, se necessario
input.AddPdf("example.pdf", "password")
' Possiamo anche selezionare numeri di pagina PDF specifici per l'OCR
' Leggi il PDF
Dim Result = Ocr.Read(input)
' Stampa il testo ottenuto e il numero di pagine
Console.WriteLine(Result.Text)
Console.WriteLine($"{Result.Pages.Count()} Pages")
' 1 pagina per ogni pagina del PDF
End Using
OCR per TIFF multipagina
OCR Lettura del formato di file TIFF che include documenti a più pagine. TIFF può anche essere convertito direttamente in un file PDF con testo ricercabile.
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un file TIFF multipagina come input
using (var Input = new OcrInput())
{
// Aggiunge il TIFF multipagina al processo
Input.AddMultiFrameTiff("multi-frame.tiff");
// Leggi il TIFF multipagina
var Result = Ocr.Read(Input);
// Stampa il testo ottenuto
Console.WriteLine(Result.Text);
}
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un file TIFF multipagina come input
using (var Input = new OcrInput())
{
// Aggiunge il TIFF multipagina al processo
Input.AddMultiFrameTiff("multi-frame.tiff");
// Leggi il TIFF multipagina
var Result = Ocr.Read(Input);
// Stampa il testo ottenuto
Console.WriteLine(Result.Text);
}
Imports IronOcr
' Crea un'istanza di IronTesseract
Private Ocr = New IronTesseract()
' Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian
' Utilizza un file TIFF multipagina come input
Using Input = New OcrInput()
' Aggiunge il TIFF multipagina al processo
Input.AddMultiFrameTiff("multi-frame.tiff")
' Leggi il TIFF multipagina
Dim Result = Ocr.Read(Input)
' Stampa il testo ottenuto
Console.WriteLine(Result.Text)
End Using
Codici a barre e QR
Una caratteristica unica di IronOCR è che può leggere codici a barre e codici QR dai documenti durante la scansione del testo. Le istanze della classe OcrResult.OcrBarcode
forniscono allo sviluppatore informazioni dettagliate su ogni codice a barre scansionato.
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Configura IronTesseract per leggere i codici a barre
Ocr.Configuration.ReadBarCodes = true;
// Utilizza un file immagine come input
using (var input = new OcrInput())
{
// Aggiunge l'immagine al processo
input.AddImage("img/Barcode.png");
// Leggi l'immagine
var Result = Ocr.Read(input);
// Scorri tutti i codici a barre trovati e stampali
foreach (var Barcode in Result.Barcodes)
{
Console.WriteLine(Barcode.Value);
// Può anche stampare tipo e posizione del barcode
}
}
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Configura IronTesseract per leggere i codici a barre
Ocr.Configuration.ReadBarCodes = true;
// Utilizza un file immagine come input
using (var input = new OcrInput())
{
// Aggiunge l'immagine al processo
input.AddImage("img/Barcode.png");
// Leggi l'immagine
var Result = Ocr.Read(input);
// Scorri tutti i codici a barre trovati e stampali
foreach (var Barcode in Result.Barcodes)
{
Console.WriteLine(Barcode.Value);
// Può anche stampare tipo e posizione del barcode
}
}
Imports IronOcr
' Crea un'istanza di IronTesseract
Private Ocr = New IronTesseract()
' Configura IronTesseract per leggere i codici a barre
Ocr.Configuration.ReadBarCodes = True
' Utilizza un file immagine come input
Using input = New OcrInput()
' Aggiunge l'immagine al processo
input.AddImage("img/Barcode.png")
' Leggi l'immagine
Dim Result = Ocr.Read(input)
' Scorri tutti i codici a barre trovati e stampali
For Each Barcode In Result.Barcodes
Console.WriteLine(Barcode.Value)
' Può anche stampare tipo e posizione del barcode
Next Barcode
End Using
OCR su aree specifiche delle immagini
Tutti i metodi di scansione e lettura di IronOCR forniscono la capacità di specificare esattamente da quale parte di una pagina o pagine desideriamo leggere il testo. Questo è molto utile quando stiamo esaminando moduli standardizzati e può far risparmiare un sacco di tempo e migliorare l'efficienza.
Per utilizzare le aree di ritaglio, sarà necessario aggiungere un riferimento di sistema a System.Drawing
modo da poter utilizzare l'oggetto System.Drawing.Rectangle
.
using IronOcr;
using System.Drawing; // Aggiunta necessaria per utilizzare il rectangle
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un file immagine come input con area specifica
using (var Input = new OcrInput())
{
// Definisci l'area di contenuto che desideri leggere
var ContentArea = new Rectangle() { X = 215, Y = 1250, Height = 280, Width = 1335 };
// Aggiunge l'area specificata al processo
Input.Add("document.png", ContentArea);
// Leggi il documento
var Result = Ocr.Read(Input);
// Stampa il testo ottenuto
Console.WriteLine(Result.Text);
}
using IronOcr;
using System.Drawing; // Aggiunta necessaria per utilizzare il rectangle
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un file immagine come input con area specifica
using (var Input = new OcrInput())
{
// Definisci l'area di contenuto che desideri leggere
var ContentArea = new Rectangle() { X = 215, Y = 1250, Height = 280, Width = 1335 };
// Aggiunge l'area specificata al processo
Input.Add("document.png", ContentArea);
// Leggi il documento
var Result = Ocr.Read(Input);
// Stampa il testo ottenuto
Console.WriteLine(Result.Text);
}
Imports IronOcr
Imports System.Drawing ' Aggiunta necessaria per utilizzare il rectangle
' Crea un'istanza di IronTesseract
Private Ocr = New IronTesseract()
' Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian
' Utilizza un file immagine come input con area specifica
Using Input = New OcrInput()
' Definisci l'area di contenuto che desideri leggere
Dim ContentArea = New Rectangle() With {
.X = 215,
.Y = 1250,
.Height = 280,
.Width = 1335
}
' Aggiunge l'area specificata al processo
Input.Add("document.png", ContentArea)
' Leggi il documento
Dim Result = Ocr.Read(Input)
' Stampa il testo ottenuto
Console.WriteLine(Result.Text)
End Using
OCR per scansioni di bassa qualità
La classe IronOCR OcrInput
può correggere scansioni che il normale Tesseract non è in grado di leggere.
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un'immagine di bassa qualità come input
using (var Input = new OcrInput(@"img\Potter.LowQuality.tiff"))
{
// Applica filtri per migliorare la qualità dell'immagine
Input.DeNoise(); // Risolve il rumore digitale e la cattiva qualità della scansione
Input.Deskew(); // Risolve la rotazione e la prospettiva
// Leggi l'immagine
var Result = Ocr.Read(Input);
// Stampa il testo ottenuto
Console.WriteLine(Result.Text);
}
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un'immagine di bassa qualità come input
using (var Input = new OcrInput(@"img\Potter.LowQuality.tiff"))
{
// Applica filtri per migliorare la qualità dell'immagine
Input.DeNoise(); // Risolve il rumore digitale e la cattiva qualità della scansione
Input.Deskew(); // Risolve la rotazione e la prospettiva
// Leggi l'immagine
var Result = Ocr.Read(Input);
// Stampa il testo ottenuto
Console.WriteLine(Result.Text);
}
Imports IronOcr
' Crea un'istanza di IronTesseract
Private Ocr = New IronTesseract()
' Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian
' Utilizza un'immagine di bassa qualità come input
Using Input = New OcrInput("img\Potter.LowQuality.tiff")
' Applica filtri per migliorare la qualità dell'immagine
Input.DeNoise() ' Risolve il rumore digitale e la cattiva qualità della scansione
Input.Deskew() ' Risolve la rotazione e la prospettiva
' Leggi l'immagine
Dim Result = Ocr.Read(Input)
' Stampa il testo ottenuto
Console.WriteLine(Result.Text)
End Using
Esporta i risultati dell'OCR come PDF ricercabile
Immagine in PDF con stringhe di testo copiabili. Può essere indicizzato da motori di ricerca e database.
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un insieme di immagini come input
using (var Input = new OcrInput())
{
// Imposta il titolo per l'output PDF
Input.Title = "Quarterly Report";
// Aggiunge immagini al processo
Input.AddImage("image1.jpeg");
Input.AddImage("image2.png");
Input.AddImage("image3.gif");
// Leggi il contenuto delle immagini
var Result = Ocr.Read(Input);
// Salva i risultati come un PDF ricercabile
Result.SaveAsSearchablePdf("searchable.pdf");
}
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un insieme di immagini come input
using (var Input = new OcrInput())
{
// Imposta il titolo per l'output PDF
Input.Title = "Quarterly Report";
// Aggiunge immagini al processo
Input.AddImage("image1.jpeg");
Input.AddImage("image2.png");
Input.AddImage("image3.gif");
// Leggi il contenuto delle immagini
var Result = Ocr.Read(Input);
// Salva i risultati come un PDF ricercabile
Result.SaveAsSearchablePdf("searchable.pdf");
}
Imports IronOcr
' Crea un'istanza di IronTesseract
Private Ocr = New IronTesseract()
' Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian
' Utilizza un insieme di immagini come input
Using Input = New OcrInput()
' Imposta il titolo per l'output PDF
Input.Title = "Quarterly Report"
' Aggiunge immagini al processo
Input.AddImage("image1.jpeg")
Input.AddImage("image2.png")
Input.AddImage("image3.gif")
' Leggi il contenuto delle immagini
Dim Result = Ocr.Read(Input)
' Salva i risultati come un PDF ricercabile
Result.SaveAsSearchablePdf("searchable.pdf")
End Using
Conversione da TIFF a PDF ricercabile
Converti un documento TIFF (o qualsiasi gruppo di file immagine) direttamente in un PDF ricercabile che può essere indicizzato da intranet, sito web e motori di ricerca Google.
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un file TIFF multipagina come input
using (var Input = new OcrInput())
{
// Aggiunge il TIFF multipagina al processo
Input.AddMultiFrameTiff("example.tiff");
// Leggi il TIFF multipagina e salva come PDF ricercabile
var Result = Ocr.Read(Input).SaveAsSearchablePdf("searchable.pdf");
}
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un file TIFF multipagina come input
using (var Input = new OcrInput())
{
// Aggiunge il TIFF multipagina al processo
Input.AddMultiFrameTiff("example.tiff");
// Leggi il TIFF multipagina e salva come PDF ricercabile
var Result = Ocr.Read(Input).SaveAsSearchablePdf("searchable.pdf");
}
Imports IronOcr
' Crea un'istanza di IronTesseract
Private Ocr = New IronTesseract()
' Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian
' Utilizza un file TIFF multipagina come input
Using Input = New OcrInput()
' Aggiunge il TIFF multipagina al processo
Input.AddMultiFrameTiff("example.tiff")
' Leggi il TIFF multipagina e salva come PDF ricercabile
Dim Result = Ocr.Read(Input).SaveAsSearchablePdf("searchable.pdf")
End Using
Esporta i risultati dell'OCR come HTML
Conversione da immagine OCR a XHTML.
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un file immagine come input
using (var Input = new OcrInput())
{
// Imposta il titolo per l'output HTML
Input.Title = "Html Title";
// Aggiunge l'immagine al processo
Input.AddImage("image1.jpeg");
// Leggi l'immagine
var Result = Ocr.Read(Input);
// Salva i risultati come file HTML
Result.SaveAsHocrFile("results.html");
}
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un file immagine come input
using (var Input = new OcrInput())
{
// Imposta il titolo per l'output HTML
Input.Title = "Html Title";
// Aggiunge l'immagine al processo
Input.AddImage("image1.jpeg");
// Leggi l'immagine
var Result = Ocr.Read(Input);
// Salva i risultati come file HTML
Result.SaveAsHocrFile("results.html");
}
Imports IronOcr
' Crea un'istanza di IronTesseract
Private Ocr = New IronTesseract()
' Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian
' Utilizza un file immagine come input
Using Input = New OcrInput()
' Imposta il titolo per l'output HTML
Input.Title = "Html Title"
' Aggiunge l'immagine al processo
Input.AddImage("image1.jpeg")
' Leggi l'immagine
Dim Result = Ocr.Read(Input)
' Salva i risultati come file HTML
Result.SaveAsHocrFile("results.html")
End Using
Filtri di miglioramento delle immagini OCR
IronOCR fornisce filtri unici per OcrInput
oggetti OcrInput
per migliorare le prestazioni OCR.
Esempio di codice di miglioramento dell'immagine
Rende le immagini in ingresso OCR di qualità superiore per produrre risultati OCR migliori e più veloci.
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un'immagine di bassa qualità come input
using (var Input = new OcrInput(@"LowQuality.jpeg"))
{
// Applica filtri per migliorare la qualità dell'immagine
Input.DeNoise(); // Risolve il rumore digitale e la cattiva qualità della scansione
Input.Deskew(); // Risolve la rotazione e la prospettiva
// Leggi l'immagine
var Result = Ocr.Read(Input);
// Stampa il testo ottenuto
Console.WriteLine(Result.Text);
}
using IronOcr;
// Crea un'istanza di IronTesseract
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Utilizza un'immagine di bassa qualità come input
using (var Input = new OcrInput(@"LowQuality.jpeg"))
{
// Applica filtri per migliorare la qualità dell'immagine
Input.DeNoise(); // Risolve il rumore digitale e la cattiva qualità della scansione
Input.Deskew(); // Risolve la rotazione e la prospettiva
// Leggi l'immagine
var Result = Ocr.Read(Input);
// Stampa il testo ottenuto
Console.WriteLine(Result.Text);
}
Imports IronOcr
' Crea un'istanza di IronTesseract
Private Ocr = New IronTesseract()
' Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian
' Utilizza un'immagine di bassa qualità come input
Using Input = New OcrInput("LowQuality.jpeg")
' Applica filtri per migliorare la qualità dell'immagine
Input.DeNoise() ' Risolve il rumore digitale e la cattiva qualità della scansione
Input.Deskew() ' Risolve la rotazione e la prospettiva
' Leggi l'immagine
Dim Result = Ocr.Read(Input)
' Stampa il testo ottenuto
Console.WriteLine(Result.Text)
End Using
Elenco dei filtri immagine OCR
I filtri di input per migliorare le prestazioni OCR incorporati in IronOCR includono:
- OcrInput.Rotate (doppi gradi) - Ruota le immagini di un numero di gradi in senso orario. Per il senso antiorario, usa numeri negativi.
- OcrInput.Binarize () - Questo filtro immagine trasforma ogni pixel in bianco o nero senza una via di mezzo. Può migliorare le prestazioni dell'OCR nei casi di contrasto molto basso del testo con lo sfondo.
- OcrInput.ToGrayScale () - Questo filtro immagine trasforma ogni pixel in una sfumatura di scala di grigi. È improbabile che migliori la precisione dell'OCR, ma può aumentare la velocità.
- OcrInput.Contrast () - Aumenta automaticamente il contrasto. Questo filtro spesso migliora la velocità e la precisione dell'OCR nelle scansioni a basso contrasto.
- OcrInput.DeNoise () - Rimuove il rumore digitale. Questo filtro deve essere utilizzato solo dove è previsto il rumore.
- OcrInput.Invert () - Inverte ogni colore. Ad esempio, il bianco diventa nero: il nero diventa bianco.
- OcrInput.Dilate () - Morfologia avanzata. La dilatazione aggiunge pixel ai bordi degli oggetti in un'immagine. Opposto di Erode.
- OcrInput.Erode () - Morfologia avanzata. L'erosione rimuove i pixel sui contorni dell'oggetto, opposto a Dilata.
- OcrInput.Deskew () - Ruota un'immagine in modo che sia verso l'alto e ortogonale. Ciò è molto utile per l'OCR perché la tolleranza di Tesseract per le scansioni oblique può essere di soli 5 gradi.
- OcrInput.DeepCleanBackgroundNoise () - Rimozione del rumore di fondo pesante. Utilizzare questo filtro solo nel caso in cui sia noto un rumore di fondo eccessivo del documento, poiché questo filtro rischierà anche di ridurre l'accuratezza dell'OCR dei documenti puliti ed è molto costoso per la CPU.
- OcrInput.EnhanceResolution - Migliora la risoluzione delle immagini di bassa qualità. Questo filtro spesso non è necessario perché OcrInput.MinimumDPI e OcrInput.TargetDPI rileveranno e risolveranno automaticamente gli input a bassa risoluzione.
CleanBackgroundNoise. Questa è un'impostazione che richiede un po 'di tempo; tuttavia, consente alla libreria di pulire automaticamente il rumore digitale, le pieghe della carta e altre imperfezioni all'interno di un'immagine digitale che altrimenti la renderebbero incapace di essere letta da altre librerie OCR.
EnhanceContrast è un'impostazione che fa sì che IronOCR aumenti automaticamente il contrasto del testo sullo sfondo di un'immagine, aumentando la precisione dell'OCR e in generale aumentando le prestazioni e la velocità dell'OCR.
EnhanceResolution è un'impostazione che rileva automaticamente le immagini a bassa risoluzione (che sono inferiori a 275 dpi) e migliora automaticamente l'immagine e quindi affina tutto il testo in modo che possa essere letto perfettamente da una libreria OCR. Sebbene questa operazione richieda di per sé molto tempo, generalmente riduce il tempo complessivo per un'operazione OCR su un'immagine.
Lingua IronOCR supporta 22 pacchetti di lingue internazionali e l'impostazione della lingua può essere utilizzata per selezionare una o più lingue multiple da applicare per un'operazione OCR.
Strategia IronOCR supporta due strategie. Possiamo scegliere di eseguire una scansione rapida e meno accurata di un documento o di utilizzare una strategia avanzata che utilizza alcuni modelli di intelligenza artificiale per migliorare automaticamente l'accuratezza del testo OCR osservando la relazione statistica tra le parole in una frase.
ColorSpace è un'impostazione in base alla quale possiamo scegliere di eseguire l'OCR in scala di grigi o a colori. Generalmente, la scala di grigi è l'opzione migliore. Tuttavia, a volte quando sono presenti testi o sfondi di tonalità simili ma colori molto diversi, uno spazio colore a colori fornisce risultati migliori.
DetectWhiteTextOnDarkBackgrounds. In generale, tutte le librerie OCR si aspettano di vedere il testo nero su sfondo bianco. Questa impostazione consente a IronOCR di rilevare automaticamente i negativi o le pagine scure con testo bianco e di leggerli.
InputImageType. Questa impostazione consente allo sviluppatore di guidare la libreria OCR per verificare se sta guardando un documento completo o uno snippet, come uno screenshot.
RotateAndStraighten è un'impostazione avanzata che consente a IronOCR la capacità unica di leggere documenti che non solo vengono ruotati, ma forse contengono prospettiva, come fotografie di documenti di testo.
ReadBarcodes è una funzione utile che consente a IronOCR di leggere automaticamente codici a barre e codici QR sulle pagine mentre legge anche il testo, senza aggiungere un grande onere di tempo aggiuntivo.
Profondità di colore. Questa impostazione determina il numero di bit per pixel che la libreria OCR utilizzerà per determinare la profondità di un colore. Una maggiore profondità di colore può aumentare la qualità OCR, ma aumenterà anche il tempo necessario per il completamento dell'operazione OCR.
126 Language Pack
IronOCR supporta 126 lingue internazionali tramite language pack distribuiti come DLL, che possono essere scaricati da questo sito Web o anche da NuGet Package Manager.
Le lingue includono tedesco, francese, inglese, cinese, giapponese e molte altre. Esistono language pack specialistici per passaporto MRZ, assegni MICR, dati finanziari, targhe e molti altri. Puoi anche utilizzare qualsiasi file tesseract ".traineddata", inclusi quelli creati da te.
Esempio di lingua
Utilizzo di altre lingue OCR.
// Importa la libreria IronOcr
// PM> Install IronOcr.Languages.Arabic
var Ocr = new IronTesseract();
// Imposta la lingua su Arabo
Ocr.Language = OcrLanguage.Arabic;
// Utilizza un file immagine come input
using (var input = new OcrInput())
{
// Aggiunge l'immagine al processo OCR
input.AddImage("img/arabic.gif");
// Aggiungi filtri immagine se necessario
// IronTesseract può leggere ciò che Tesseract convenzionale non può.
// Leggi l'immagine
var Result = Ocr.Read(input);
// La console non può stampare facilmente l'arabo su Windows.
// Salviamo invece su disco.
Result.SaveAsTextFile("arabic.txt");
}
// Importa la libreria IronOcr
// PM> Install IronOcr.Languages.Arabic
var Ocr = new IronTesseract();
// Imposta la lingua su Arabo
Ocr.Language = OcrLanguage.Arabic;
// Utilizza un file immagine come input
using (var input = new OcrInput())
{
// Aggiunge l'immagine al processo OCR
input.AddImage("img/arabic.gif");
// Aggiungi filtri immagine se necessario
// IronTesseract può leggere ciò che Tesseract convenzionale non può.
// Leggi l'immagine
var Result = Ocr.Read(input);
// La console non può stampare facilmente l'arabo su Windows.
// Salviamo invece su disco.
Result.SaveAsTextFile("arabic.txt");
}
' Importa la libreria IronOcr
' PM> Install IronOcr.Languages.Arabic
Dim Ocr = New IronTesseract()
' Imposta la lingua su Arabo
Ocr.Language = OcrLanguage.Arabic
' Utilizza un file immagine come input
Using input = New OcrInput()
' Aggiunge l'immagine al processo OCR
input.AddImage("img/arabic.gif")
' Aggiungi filtri immagine se necessario
' IronTesseract può leggere ciò che Tesseract convenzionale non può.
' Leggi l'immagine
Dim Result = Ocr.Read(input)
' La console non può stampare facilmente l'arabo su Windows.
' Salviamo invece su disco.
Result.SaveAsTextFile("arabic.txt")
End Using
Esempio in più lingue
È anche possibile eseguire l'OCR utilizzando più lingue contemporaneamente. Questo può davvero aiutare a ottenere metadati e URL in lingua inglese nei documenti Unicode.
// Importa la libreria IronOcr
// PM> Install IronOcr.Languages.ChineseSimplified
var Ocr = new IronTesseract();
// Imposta la lingua su Cinese semplificato
Ocr.Language = OcrLanguage.ChineseSimplified;
// Aggiunge una seconda lingua al processo OCR
Ocr.AddSecondaryLanguage(OcrLanguage.Italian);
// Possiamo aggiungere un numero qualsiasi di lingue
using (var input = new OcrInput())
{
// Aggiunge il documento multilanguage al processo
input.Add("multi-language.pdf");
// Leggi il documento
var Result = Ocr.Read(input);
// Salva i risultati su disco
Result.SaveAsTextFile("results.txt");
}
// Importa la libreria IronOcr
// PM> Install IronOcr.Languages.ChineseSimplified
var Ocr = new IronTesseract();
// Imposta la lingua su Cinese semplificato
Ocr.Language = OcrLanguage.ChineseSimplified;
// Aggiunge una seconda lingua al processo OCR
Ocr.AddSecondaryLanguage(OcrLanguage.Italian);
// Possiamo aggiungere un numero qualsiasi di lingue
using (var input = new OcrInput())
{
// Aggiunge il documento multilanguage al processo
input.Add("multi-language.pdf");
// Leggi il documento
var Result = Ocr.Read(input);
// Salva i risultati su disco
Result.SaveAsTextFile("results.txt");
}
' Importa la libreria IronOcr
' PM> Install IronOcr.Languages.ChineseSimplified
Dim Ocr = New IronTesseract()
' Imposta la lingua su Cinese semplificato
Ocr.Language = OcrLanguage.ChineseSimplified
' Aggiunge una seconda lingua al processo OCR
Ocr.AddSecondaryLanguage(OcrLanguage.Italian)
' Possiamo aggiungere un numero qualsiasi di lingue
Using input = New OcrInput()
' Aggiunge il documento multilanguage al processo
input.Add("multi-language.pdf")
' Leggi il documento
Dim Result = Ocr.Read(input)
' Salva i risultati su disco
Result.SaveAsTextFile("results.txt")
End Using
Oggetti risultati OCR dettagliati
IronOCR restituisce un oggetto risultato OCR per ciascuna operazione OCR. In genere, gli sviluppatori utilizzano solo la proprietà text di questo oggetto per ottenere la scansione del testo dall'immagine. Tuttavia, i risultati dell'OCR DOM sono molto più avanzati di così.
using IronOcr;
using System.Drawing; // Aggiungi riferimento all'assieme
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Configura la modalità del motore
Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm;
// Configura per leggere codici a barre
Ocr.Configuration.ReadBarCodes = true; // Importante
// Utilizza un file TIFF come input
using (var Input = new OcrInput(@"images\sample.tiff"))
{
// Leggi il documento
OcrResult Result = Ocr.Read(Input);
// Ottieni le pagine del risultato
var Pages = Result.Pages;
// Ottieni le parole dalla prima pagina
var Words = Pages[0].Words;
// Ottieni i codici a barre dal risultato
var Barcodes = Result.Barcodes;
// Esplora qui per trovare un'API massiccia e dettagliata:
// - Pagine, Blocchi, Paragrafi, Linee, Parole, Caratteri
// - Esportazione di immagini, coordinate dei caratteri, dati statistici
}
using IronOcr;
using System.Drawing; // Aggiungi riferimento all'assieme
var Ocr = new IronTesseract();
// Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian;
// Configura la modalità del motore
Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm;
// Configura per leggere codici a barre
Ocr.Configuration.ReadBarCodes = true; // Importante
// Utilizza un file TIFF come input
using (var Input = new OcrInput(@"images\sample.tiff"))
{
// Leggi il documento
OcrResult Result = Ocr.Read(Input);
// Ottieni le pagine del risultato
var Pages = Result.Pages;
// Ottieni le parole dalla prima pagina
var Words = Pages[0].Words;
// Ottieni i codici a barre dal risultato
var Barcodes = Result.Barcodes;
// Esplora qui per trovare un'API massiccia e dettagliata:
// - Pagine, Blocchi, Paragrafi, Linee, Parole, Caratteri
// - Esportazione di immagini, coordinate dei caratteri, dati statistici
}
Imports IronOcr
Imports System.Drawing ' Aggiungi riferimento all'assieme
Private Ocr = New IronTesseract()
' Imposta la lingua su italiano
Ocr.Language = OcrLanguage.Italian
' Configura la modalità del motore
Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm
' Configura per leggere codici a barre
Ocr.Configuration.ReadBarCodes = True ' Importante
' Utilizza un file TIFF come input
Using Input = New OcrInput("images\sample.tiff")
' Leggi il documento
Dim Result As OcrResult = Ocr.Read(Input)
' Ottieni le pagine del risultato
Dim Pages = Result.Pages
' Ottieni le parole dalla prima pagina
Dim Words = Pages(0).Words
' Ottieni i codici a barre dal risultato
Dim Barcodes = Result.Barcodes
' Esplora qui per trovare un'API massiccia e dettagliata:
' - Pagine, Blocchi, Paragrafi, Linee, Parole, Caratteri
' - Esportazione di immagini, coordinate dei caratteri, dati statistici
End Using
Prestazione
IronOCR funziona fuori dagli schemi senza la necessità di ottimizzare le prestazioni o modificare pesantemente le immagini di input.
La velocità è incredibile: IronOcr.2020 + è fino a 10 volte più veloce e fa oltre il 250% di errori in meno rispetto alle build precedenti.
Per saperne di più
Per saperne di più sull'OCR in C#, VB, F# o qualsiasi altro linguaggio .NET, leggi i nostri tutorial della community, che forniscono esempi reali di come IronOCR può essere utilizzato e possono mostrare le sfumature di come ottenere il meglio da questa libreria.
È inoltre disponibile un riferimento completo agli oggetti per gli sviluppatori .NET.