Test in einer Live-Umgebung
Test in der Produktion ohne Wasserzeichen.
Funktioniert überall, wo Sie es brauchen.
Das Verfahren zur Umwandlung eines Textbildes in ein maschinenlesbares Textformat wird als Optical Character Recognition bezeichnet (OCR). Wenn Sie z. B. ein Formular, eine Rechnung oder einen Beleg scannen, speichert Ihr Computer den Scan als Bilddatei. Die Daten in der Bilddatei können nicht mit einem Texteditor bearbeitet, gesucht oder gezählt werden. Sie können jedoch OCR-Lösungen verwenden, um die Bilddatei in ein Textdokument zu konvertieren, dessen Inhalt als Textdaten gespeichert ist.
In der heutigen Zeit beziehen die meisten Geschäftsabläufe Informationen aus Printmedien. Verschiedene Dokumente wie Papierformulare, Rechnungen, gescannte Rechtsdokumente, Tabellenauszüge, handschriftliche Texte und gedruckte Texte oder Verträge sind Teil von Geschäftsprozessen. Außerdem entstehen bei der Digitalisierung solcher Dokumentationsinhalte Bilder, in denen der Text verborgen ist. Text in Bildern kann von Textverarbeitungsprogrammen nicht auf die gleiche Weise verarbeitet werden wie Textdokumente. Die OCR-Technologie löst das Problem, indem sie Textbilder in Textdaten umwandelt, die von anderer Unternehmenssoftware analysiert werden können.
Die OCR-Engine arbeitet mit den folgenden Schritten:
Bei diesem Verfahren liest ein Scanner die Dokumente und wandelt sie in Binärdaten um. Die OCR-Software erkennt das gescannte Bild und klassifiziert die hellen Bereiche als Hintergrund und die dunklen Bereiche als Text.
Die OCR-Software bereinigt zunächst das Bild und entfernt Fehler, um die Daten für das Lesen vorzubereiten.
Die beiden Haupttypen von OCR-Algorithmen für die Texterkennung sind der Mustervergleich und die Merkmalsextraktion.
Ein Zeichenbild, eine Glyphe, wird während des Mustervergleichs isoliert und mit einer zuvor aufgezeichneten Glyphe verglichen.
Durch den Prozess der Merkmalsextraktion werden die Glyphen in Merkmale wie Linien, geschlossene Schleifen, Linienrichtung und Linienkreuzungen unterteilt.
Die Technologie wandelt die abgerufenen Textdaten nach der Analyse in eine digitale Datei um. Einige OCR-Systeme können mit Anmerkungen versehene PDF-Dokumente erstellen, die sowohl die Vorher- als auch die Nachher-Version des gescannten Dokuments enthalten.
In diesem Artikel werden zwei der gängigsten Anwendungen und Dokumentenbibliotheken für OCR miteinander verglichen. Diese sind:
IronOCR ist eine C# .NET-Bibliothek, die Dienste zum Scannen, Suchen und Lesen von Bildern und PDFs bietet. Es wird mit 127+ globalen Sprachpaketen geliefert. Die Ausgabe erfolgt als Text, strukturierte Daten oder durchsuchbare PDFs. Unterstützt .NET-Versionen wie 6, 5, Core, Standard und Framework.
IronOCR ist einzigartig in seiner Fähigkeit, automatisch Daten aus unvollkommen gescannten Bildern und Dokumenten zu erkennen und zu extrahieren. Die Klasse 'IronTesseract' hat die einfachste API. Es bietet die fortschrittlichste Version von Tesseract auf jeder Plattform mit erhöhter Geschwindigkeit und Genauigkeit sowie einer nativen DLL und API.
IronOCR kann auch Barcodes und QR-Codes aus allen Bildformaten scannen, Text lesen und PDF-Scans mit der neuesten Tesseract 5-Engine durchführen.
Es kann einfach OCR auf PDF-Dateien durchführen und durchsuchbare PDF-Dokumente mit OCR exportieren.
Werfen wir nun einen Blick auf AWS OCR.
AWS Textract von Amazon ist ein maschinelles Lernen (ML) dienst, der automatisch Text, Handschrift und Daten aus gescannten Dokumenten extrahiert. Sie geht über die einfache optische Zeichenerkennung hinaus (OCR) mit Hilfe von Deep Learning-Technologie Daten aus Formularen und Tabellen zu identifizieren, zu verstehen und zu extrahieren.
AWS OCR Textract nutzt maschinelles Lernen, um jede Art von Dokument zu lesen und zu verarbeiten, wobei Text, Handschrift, Tabellendaten und andere Daten ohne manuellen Aufwand genau extrahiert werden. Anstatt Stunden oder Tage zu brauchen, um die Daten zu extrahieren, kann Textract dies schnell tun. Zusätzlich können Sie mit Amazon Augmented Artificial Intelligence menschliche Bewertungen hinzufügen (AI) um Ihre Modelle zu überwachen und sensible Daten zu überprüfen.
Skalierbare Dokumentenanalyse, die die Entscheidungsfindung beschleunigen kann.
Der Rest des Artikels lautet wie folgt:
Visual Studio-Projekt erstellen
Installation von IronOCR
Installation von AWS OCR Textract
PDF zu Text
Bild zu Text
Barcode und QR zu Text
Lizenzvergabe
In diesem Tutorial wird die Version 2022 von Visual Studio verwendet, so dass ich davon ausgehe, dass Sie diese installiert haben müssen.
Die neueste und stabilste Version des .NET-Frameworks ist 6.0. Wir werden diese verwenden.
Klicken Sie auf die Schaltfläche Erstellen und das Projekt wird erstellt.
Als Nächstes werden wir die Bibliotheken für unsere Zwecke nacheinander installieren.
Die IronOCR-Bibliothek kann auf vier Arten heruntergeladen und installiert werden. Diese sind wie folgt:
Verwendung des Visual Studio NuGet-Paketmanagers.
Direkter Download über die NuGet-Website.
Direkter Download über die IronOCR-Webseite.
Der Visual Studio NuGet Package Manager kann verwendet werden, um IronOCR in ein C#-Projekt einzubinden.
Erweitern Sie Tools oder klicken Sie mit der rechten Maustaste auf den Lösungsexplorer.
Erweitern Sie den NuGet-Paketmanager.
Daraufhin erscheint ein neues Fenster in der Suchleiste: Geben Sie IronOCR ein. Markieren Sie das Projektfeld auf der rechten Seite und klicken Sie auf Installieren.
Mit dieser Methode können Entwickler die IronOCR-Bibliothek und ein beliebiges Sprachpaket ihrer Wahl installieren.
IronOCR kann direkt von der NuGet-Website heruntergeladen werden, indem Sie diese Anweisungen befolgen:
Navigieren Sie zu dem Link "https://www.nuget.org/packages/IronOCR/".
Wählen Sie im Menü auf der rechten Seite die Option Paket herunterladen.
Doppelklicken Sie auf das Download-Paket. Sie wird automatisch installiert.
Entwickler können die IronOCR-Bibliothek direkt von der Website herunterladen, indem sie diese Link.
Klicken Sie mit der rechten Maustaste auf das Projekt im Lösungsfenster.
Wählen Sie dann die Option Referenz und suchen Sie den Speicherort der heruntergeladenen Referenz.
Gehen Sie in Visual Studio zu Werkzeuge -> NuGet-Paketmanager -> Paketmanager-Konsole
Install-Package IronOcr
Das Paket wird nun in das aktuelle Projekt heruntergeladen/installiert und ist einsatzbereit.
Nachdem Sie den Befehl eingegeben haben, drücken Sie die Eingabetaste und er wird installiert.
Fügen Sie diese Codezeile in das Programm ein, um IronOCR zu verwenden:
using IronOcr;
using IronOcr;
Imports IronOcr
Lassen Sie uns nun AWS Textract installieren.
Bevor Sie Amazon Textract zum ersten Mal verwenden, sollten Sie die folgenden Aufgaben erledigen:
Melden Sie sich für AWS-Services an.
Erstellen Sie einen IAM-Benutzer.
Nachdem Sie sich erfolgreich für das Konto angemeldet und einen IAM-Benutzer erstellt haben, können Sie nun die Zugriffsschlüssel in der AWS-Konsole festlegen, um mit C# programmatisch auf die API zuzugreifen. Sie benötigen:
Sie können AWS Textract SDK vom NuGet Package Manager herunterladen und installieren.
Schließen Sie die folgenden Namespaces ein, um AWS Textract zu verwenden:
using Amazon.Textract;
using Amazon.Textract.Model;
using Amazon.Textract;
using Amazon.Textract.Model;
Imports Amazon.Textract
Imports Amazon.Textract.Model
Beide Bibliotheken können Text aus PDF-Dateien extrahieren. Schauen wir uns den Code der Reihe nach an.
IronOCR ermöglicht das Erkennen und Lesen von Text aus PDF-Dokumenten unter Verwendung des fortschrittlichen Tesseract. Der folgende einfache Code wird zum Extrahieren von Informationen verwendet:
var Ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddPdf("example.pdf","password");
// We can also select specific PDF page numbers to OCR
var Result = Ocr.Read(input);
Console.WriteLine(Result.Text);
Console.WriteLine($"{Result.Pages.Count()} Pages");
// Read every page of the PDF
}
var Ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddPdf("example.pdf","password");
// We can also select specific PDF page numbers to OCR
var Result = Ocr.Read(input);
Console.WriteLine(Result.Text);
Console.WriteLine($"{Result.Pages.Count()} Pages");
// Read every page of the PDF
}
Dim Ocr = New IronTesseract()
Using input = New OcrInput()
input.AddPdf("example.pdf","password")
' We can also select specific PDF page numbers to OCR
Dim Result = Ocr.Read(input)
Console.WriteLine(Result.Text)
Console.WriteLine($"{Result.Pages.Count()} Pages")
' Read every page of the PDF
End Using
Der Code ist einfach, sauber und sehr leicht zu verstehen und zu verwenden.
Mit Amazon Textract können Sie Ihren Anwendungen ganz einfach Dokumententexterkennung und -analyse hinzufügen. Der folgende Code wird verwendet, um PDF zu lesen, und dasselbe PDF wird übergeben:
public static async void ReturnResult()
{
AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
var request = new StartDocumentTextDetectionRequest();
request.DocumentLocation = new DocumentLocation
{
S3Object = new S3Object
{
Bucket = "your_bucket_name",
Name = "your_bucket_key"
}
};
var id = await client.StartDocumentTextDetectionAsync(request);
var jobId = id.JobId;
var response = client.GetDocumentTextDetectionAsync(new GetDocumentTextDetectionRequest{
JobId = jobId
});
response.Wait();
if (response.Result.JobStatus.Equals("SUCCEEDED"))
{
foreach (var block in response.Result.Blocks)
{
if (block.BlockType == "WORD")
{
Console.WriteLine(block.Text);
}
else if (block.BlockType == "PAGE")
{
Console.WriteLine(block.Text);
}
else if (block.BlockType == "Line")
{
Console.WriteLine(block.Text);
}
}
}
}
}
static void Main(String [] args)
{
ReturnResult();
}
public static async void ReturnResult()
{
AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
var request = new StartDocumentTextDetectionRequest();
request.DocumentLocation = new DocumentLocation
{
S3Object = new S3Object
{
Bucket = "your_bucket_name",
Name = "your_bucket_key"
}
};
var id = await client.StartDocumentTextDetectionAsync(request);
var jobId = id.JobId;
var response = client.GetDocumentTextDetectionAsync(new GetDocumentTextDetectionRequest{
JobId = jobId
});
response.Wait();
if (response.Result.JobStatus.Equals("SUCCEEDED"))
{
foreach (var block in response.Result.Blocks)
{
if (block.BlockType == "WORD")
{
Console.WriteLine(block.Text);
}
else if (block.BlockType == "PAGE")
{
Console.WriteLine(block.Text);
}
else if (block.BlockType == "Line")
{
Console.WriteLine(block.Text);
}
}
}
}
}
static void Main(String [] args)
{
ReturnResult();
}
Public Shared Async Sub ReturnResult()
Dim client As New AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1)
Dim request = New StartDocumentTextDetectionRequest()
request.DocumentLocation = New DocumentLocation With {
.S3Object = New S3Object With {
.Bucket = "your_bucket_name",
.Name = "your_bucket_key"
}
}
Dim id = Await client.StartDocumentTextDetectionAsync(request)
Dim jobId = id.JobId
Dim response = client.GetDocumentTextDetectionAsync(New GetDocumentTextDetectionRequest With {.JobId = jobId})
response.Wait()
If response.Result.JobStatus.Equals("SUCCEEDED") Then
For Each block In response.Result.Blocks
If block.BlockType = "WORD" Then
Console.WriteLine(block.Text)
ElseIf block.BlockType = "PAGE" Then
Console.WriteLine(block.Text)
ElseIf block.BlockType = "Line" Then
Console.WriteLine(block.Text)
End If
Next block
End If
End Sub
}
Shared Sub Main(ByVal args() As String)
ReturnResult()
End Sub
Der Code ist etwas knifflig, langwierig und erfordert Aufmerksamkeit beim Übergeben und Abrufen von Objekten. Zuerst müssen wir ein AmazonTextractClient-Objekt mit 3 Parametern erstellen: AccessKeyId
, SecretAccessKey
und Region
. Dann müssen wir eine Anfrage mit StartDocumentTextDetectionRequest()
method. Das Anfrageobjekt setzt dann die DocumentLocation
unter Verwendung des Bucket-Namens und des Schlüssels. Diese Anfrage wird dann an StartDocumentTextDetectionAsync()
method. Da es sich um eine asynchrone Methode handelt, müssen wir das Schlüsselwort await davor verwenden und die ReturnResult
funktion async. Bei Erfolg wird das Ergebnis zurückgegeben und die jobid gespeichert. Die Jobid wird übergeben an GetDocumentTextDetectionAsync()
methode und warten auf ERFOLGREICH
antwort. Die Foreach-Schleife wird verwendet, um jeden Block zu durchlaufen und zu prüfen, ob es sich um ein "WORD", eine "PAGE" oder eine "LINE" handelt, und dann die Texterkennung auszudrucken. Rufen Sie diese Methode schließlich in der Main-Methode für die Dokumentenverarbeitung auf.
Die Ausgabe ist IronOCR sehr ähnlich.
Das Lesen von Daten aus Bildern ist schwierig, da die Qualität des Bildes bei der Extraktion von Informationen eine entscheidende Rolle spielt. Beide Bibliotheken bieten die Möglichkeit, Text zu extrahieren. Hier werden wir png-Dateien verwenden.
Der Code ist fast identisch mit dem vorherigen. Hier, AddPDF
methode wird ersetzt durch AddImage
methode.
var Ocr = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddImage("test-files/redacted-employmentapp.png")
//... you can add any number of images
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}
var Ocr = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddImage("test-files/redacted-employmentapp.png")
//... you can add any number of images
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}
Dim Ocr = New IronTesseract()
Using Input = New OcrInput()
Input.AddImage("test-files/redacted-employmentapp.png") var Result = Ocr.Read(Input)
Console.WriteLine(Result.Text)
End Using
Die Ausgabe ist sauber und stimmt mit dem Originalbild überein, und zwar mit nur wenigen Codezeilen, ohne jegliche Technik und mit einer perfekten Ausgabe.
Der folgende Code hilft bei der Erkennung von Text in Bildern:
public static async void ReturnResult()
{
AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
var request = new DetectDocumentTextRequest();
request.Document = new Document {
Bytes = new MemoryStream(File.ReadAllBytes(@"test-files/redacted-employmentapp.png"))};
var result = await client.DetectDocumentTextAsync(request);
foreach (var block in result.Blocks)
{
if (block.BlockType == "WORD")
{
Console.WriteLine(block.Text);
}
}
}
static void Main(String [] args)
{
ReturnResult();
}
public static async void ReturnResult()
{
AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
var request = new DetectDocumentTextRequest();
request.Document = new Document {
Bytes = new MemoryStream(File.ReadAllBytes(@"test-files/redacted-employmentapp.png"))};
var result = await client.DetectDocumentTextAsync(request);
foreach (var block in result.Blocks)
{
if (block.BlockType == "WORD")
{
Console.WriteLine(block.Text);
}
}
}
static void Main(String [] args)
{
ReturnResult();
}
Public Shared Async Sub ReturnResult()
Dim client As New AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1)
Dim request = New DetectDocumentTextRequest()
request.Document = New Document With {.Bytes = New MemoryStream(File.ReadAllBytes("test-files/redacted-employmentapp.png"))}
Dim result = Await client.DetectDocumentTextAsync(request)
For Each block In result.Blocks
If block.BlockType = "WORD" Then
Console.WriteLine(block.Text)
End If
Next block
End Sub
Shared Sub Main(ByVal args() As String)
ReturnResult()
End Sub
Auch hier ist der Code fast identisch mit dem vorherigen. Hier müssen wir eine Anfrage mit DetectDocumentTextRequest()
method. Das Request-Objekt setzt dann das Dokument, indem es alle Bytes liest. Diese Anfrage wird dann an DetectDocumentTextAsync übergeben() Methode. Da es sich um eine asynchrone Methode handelt, müssen wir das Schlüsselwort await davor verwenden und die ReturnResult
funktion async. Bei Erfolg wird das Ergebnis in Blöcken zurückgegeben. Die Foreach-Schleife wird verwendet, um jeden Block zu durchlaufen und zu prüfen, ob es sich um "WORD" handelt, und dann die Texterkennung auszudrucken. Rufen Sie diese Methode schließlich in der Main-Methode für die Dokumentenverarbeitung auf.
Die Ausgabe ist ähnlich wie bei IronOCR, allerdings muss die Datei zunächst in den AWS-Bucket hochgeladen werden.
Ein einzigartiges Merkmal von IronOCR ist, dass es Barcodes und QR-Codes von Dokumenten lesen kann, während es nach Text scannt. Die Instanzen des OcrResult.OcrBarcode
klasse gibt dem Entwickler detaillierte Informationen über jeden gescannten Barcode. AWS Textract bietet diese Funktionalität nicht.
Der Code für IronOCR ist unten angegeben:
var Ocr = new IronTesseract();
Ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
input.AddImage("test-files/Barcode.png");
var Result = Ocr.Read(input);
foreach (var Barcode in Result.Barcodes)
{
Console.WriteLine(Barcode.Value);
// type and location properties also exposed
}
}
var Ocr = new IronTesseract();
Ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
input.AddImage("test-files/Barcode.png");
var Result = Ocr.Read(input);
foreach (var Barcode in Result.Barcodes)
{
Console.WriteLine(Barcode.Value);
// type and location properties also exposed
}
}
Dim Ocr = New IronTesseract()
Ocr.Configuration.ReadBarCodes = True
Using input = New OcrInput()
input.AddImage("test-files/Barcode.png")
Dim Result = Ocr.Read(input)
For Each Barcode In Result.Barcodes
Console.WriteLine(Barcode.Value)
' type and location properties also exposed
Next Barcode
End Using
Der Code ist selbsterklärend und leicht zu verstehen.
IronOCR ist eine Bibliothek, für die es eine kostenlose Entwicklerlizenz gibt. Es hat auch eine eigene Preisstruktur; das Lite-Paket beginnt bei $749 ohne versteckte Gebühren. Auch der Weitervertrieb von SaaS- und OEM-Produkten ist möglich. Alle Lizenzen beinhalten eine 30-tägige Geld-zurück-Garantie, ein Jahr Software-Support und Upgrades, Gültigkeit für Entwicklung/Taging/Produktion und eine unbefristete Lizenz (einmaliger Kauf). Die gesamte Preisstruktur von IronOCR und Details zur Lizenzierung finden Sie unter hier.
Sie können die Weiterverbreitung von SaaS- und OEM-Produkten lizenzfrei für nur $1599 einmalig erwerben.
AWS Textract API bietet Entwicklern den AWS Free Tier Service. Sie können mit Amazon Textract kostenlos loslegen. Die kostenlose Version hat eine Laufzeit von drei Monaten und die Preise sind unten aufgeführt.
Sie können sich die Preisangaben hier ansehen link. Außerdem können Sie die Preise mit Hilfe des Preiskalkulators an Ihre Bedürfnisse anpassen.
IronOCR bietet C#-Entwicklern die fortschrittlichsten Tesseract-API die wir kennen, auf jeder Plattform. IronOCR kann auf Windows, Linux, Mac, Azure, AWS und Lambda eingesetzt werden und unterstützt sowohl .NET-Framework-Projekte als auch .NET-Standard und .NET Core. Wir können auch Barcodes in OCR-Scans lesen und unsere OCR sogar als HTML und durchsuchbare PDFs exportieren.
Mit Amazon Textract können Sie Ihren Anwendungen ganz einfach Dokumententexterkennung und -analyse hinzufügen. Amazon Textract basiert auf der bewährten, hoch skalierbaren Deep-Learning-Technologie, die von Amazons Computer-Vision-Wissenschaftlern entwickelt wurde, um täglich Milliarden von Bildern und Videos zu analysieren. Sie brauchen keine Kenntnisse im Bereich des maschinellen Lernens, um es zu nutzen. Amazon Textract enthält einfache, leicht zu bedienende APIs, die Bild- und PDF-Dateien analysieren können. Amazon Textract lernt ständig aus neuen Daten, und Amazon erweitert den Dienst kontinuierlich um neue Funktionen.
IronOCR-Lizenzen sind entwicklerbasiert, d. h. Sie sollten immer eine Lizenz auf der Grundlage der Anzahl der Entwickler erwerben, die das Produkt verwenden werden. AWS Textract-Lizenzen basieren auf der Anzahl der Seiten des Dokuments, um Informationen zu extrahieren und die Daten zu analysieren. Die Lizenzen sind auf monatlicher Basis und die Preise werden für eine große Anzahl von Seiten sehr hoch im Vergleich zu IronOCR Lizenz. Darüber hinaus ist IronOCR eine einmalig erworbene Lizenz, die lebenslang genutzt werden kann und die OME- und SaaS-Verteilung unterstützt.
Im Gesamtvergleich verfügen IronOCR und AWS OCR beide über maschinelle Lernfunktionen zur Erkennung von Text in einem Dokument oder Bild. IronOCR hat einen leichten Vorteil gegenüber AWS OCR, da es schnell und zeitsparend ist. Der Code ist einfach und die Erkennung von Text aus Dokumenten ist unkompliziert. Diese Aufgabe wird auf verschiedene Weise erfüllt. AWS Textract hingegen verwendet viele Methoden, um die gleiche Aufgabe zu erfüllen. Dies erhöht die Antwortzeit des Servers und ist manchmal sehr zeitaufwändig. Wir können sehen, dass IronOCR selbst bei der Eingabe eines unvollkommenen Dokuments dessen Inhalt mit einer statistischen Genauigkeit von etwa 99 % lesen kann, obwohl das Dokument schlecht formatiert, schief und mit digitalem Rauschen versehen war. IronOCR ist sofort einsatzbereit, ohne dass die Leistung optimiert oder die eingegebenen Bilder stark verändert werden müssen. Rasante Geschwindigkeit: IronOCR.2020 + ist bis zu 10 Mal schneller und macht über 250 % weniger Fehler als frühere Versionen.
Darüber hinaus bietet Iron Software derzeit ein Paket mit fünf Werkzeugen zum Preis von nur zwei an. Die in der Iron Suite enthaltenen Tools sind:
IronWebScraper
Bitte besuchen Sie diesen Link, um sich die IRONSUITE.
9 .NET API-Produkte für Ihre Bürodokumente