How to Build an Azure OCR Service using IronOCR

This article was translated from English: Does it need improvement?
Translated
View the article in English

Iron Software hat eine OCR-Bibliothek (Optical Character Recognition) erstellt, die die Interoperabilitätsprobleme bei der Integration von Azure OCR beseitigt. Die Arbeit mit OCR-Bibliotheken auf Azure war für Entwickler immer ein wenig mühsam. Die Lösung für dieses und viele andere OCR-Probleme ist IronOCR.

IronOCR-Funktionen für Microsoft Azure

IronOCR umfasst die folgenden Funktionen zum Aufbau eines OCR-Dienstes auf Microsoft Azure:

  • Wandelt PDFs in durchsuchbare Dokumente um, sodass es einfach ist, Text zu extrahieren
  • Wandelt Bilder in durchsuchbare Dokumente um, indem Text aus den Bildern extrahiert wird
  • Liest Barcodes sowie QR-Codes
  • Außergewöhnliche Genauigkeit
  • Läuft lokal und benötigt kein SaaS (Software as a Service), ein Softwareverteilungsmodell, bei dem ein Cloud-Anbieter, wie Microsoft Azure, verschiedene Anwendungen hostet und diese Anwendungen für Endbenutzer verfügbar macht.
  • Blitzschnelle Geschwindigkeit

Schauen wir uns an, wie die beste OCR-Engine, Iron Software's IronOCR, es Entwicklern erleichtert, Text aus jedem Eingangsdokument zu extrahieren.

Lassen Sie uns mit unserem Azure OCR-Dienst beginnen

Um mit dem Beispiel zu beginnen, müssen wir zuerst IronOCR installieren.

  1. Erstellen Sie eine neue Konsolenanwendung mit C#.
  2. Installieren Sie IronOCR über NuGet entweder durch Eingabe von: Install-Package IronOcr oder indem Sie NuGet-Pakete verwalten auswählen und nach IronOCR suchen. Dies wird unten gezeigt.
  3. Bearbeiten Sie Ihre Program.cs-Datei, damit sie wie folgt aussieht:

    • Wir importieren den IronOcr-Namespace, um seine OCR-Fähigkeiten nutzen zu können, um den Inhalt der PDF-Datei zu lesen und zu extrahieren.
    • Wir erstellen ein neues IronTesseract-Objekt, um Text aus einem Bild extrahieren zu können.
using IronOcr;
using System;

namespace IronOCR_Ex
{
    class Program
    {
        static void Main(string[] args)
        {
            var ocr = new IronTesseract();
            using (var Input = new OcrInput("..\\Images\\Purgatory.PNG"))
            {
                var result = ocr.Read(Input); // Read PNG image File
                Console.WriteLine(result.Text); // Output extracted text to console
                Console.ReadLine();
            }
        }
    }
}
using IronOcr;
using System;

namespace IronOCR_Ex
{
    class Program
    {
        static void Main(string[] args)
        {
            var ocr = new IronTesseract();
            using (var Input = new OcrInput("..\\Images\\Purgatory.PNG"))
            {
                var result = ocr.Read(Input); // Read PNG image File
                Console.WriteLine(result.Text); // Output extracted text to console
                Console.ReadLine();
            }
        }
    }
}
Imports IronOcr
Imports System

Namespace IronOCR_Ex
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			Dim ocr = New IronTesseract()
			Using Input = New OcrInput("..\Images\Purgatory.PNG")
				Dim result = ocr.Read(Input) ' Read PNG image File
				Console.WriteLine(result.Text) ' Output extracted text to console
				Console.ReadLine()
			End Using
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel
  1. Als nächstes öffnen wir ein Bild mit dem Namen Purgatory.PNG. Dieses Bild ist Teil der Göttlichen Komödie von Dante - eines meiner Lieblingsbücher. Das Bild sieht aus wie das nächste Bild.

Der Text, der mit den optischen Zeichenerkennungsfähigkeiten von IronOCR extrahiert werden soll

Abbildung 2 - Der Text, der mit den optischen Zeichenerkennungsfähigkeiten von IronOCR extrahiert werden soll

  1. Die Ausgabe, nachdem der obige Text aus dem vorherigen Eingabebild extrahiert wurde.

Extrahierter Text

Abbildung 3 - Extrahierter Text

  1. Machen wir das Gleiche mit einem PDF-Dokument. Das PDF-Dokument enthält denselben Text wie Abbildung 2.

Der einzige Unterschied besteht darin, dass wir ein PDF-Dokument anstelle eines Bildes verwenden werden. Geben Sie den folgenden Code ein:

var OCR = new IronTesseract();
using (var input = new OcrInput())
{
    input.Title = "Divine Comedy - Purgatory"; // Give title to input document 
    // Supply optional password and name of document
    input.AddPdf("..\\Documents\\Purgatorio.pdf", "dante");
    var result = OCR.Read(input); // Read the input file

    result.SaveAsSearchablePdf("SearchablePDFDocument.pdf"); 
}
var OCR = new IronTesseract();
using (var input = new OcrInput())
{
    input.Title = "Divine Comedy - Purgatory"; // Give title to input document 
    // Supply optional password and name of document
    input.AddPdf("..\\Documents\\Purgatorio.pdf", "dante");
    var result = OCR.Read(input); // Read the input file

    result.SaveAsSearchablePdf("SearchablePDFDocument.pdf"); 
}
Dim OCR = New IronTesseract()
Using input = New OcrInput()
	input.Title = "Divine Comedy - Purgatory" ' Give title to input document
	' Supply optional password and name of document
	input.AddPdf("..\Documents\Purgatorio.pdf", "dante")
	Dim result = OCR.Read(input) ' Read the input file

	result.SaveAsSearchablePdf("SearchablePDFDocument.pdf")
End Using
$vbLabelText   $csharpLabel

Dieser Code ist fast derselbe wie der vorherige Code, der Text aus einem Bild extrahiert.

Hier verwenden wir die OcrInput-Methode, um das aktuelle PDF-Dokument zu lesen, in diesem Fall: Purgatorio.pdf. Falls im PDF-Dokument Metadaten wie ein Titel oder ein Passwort vorhanden sind, können wir diese ebenfalls eingeben.

Das Ergebnis wird als durchsuchbares PDF-Dokument gespeichert, in dem wir nach dem Text suchen können.

Hinweis: Wenn die PDF-Datei zu groß ist, kann eine Ausnahme ausgelöst werden.

  1. Genug zu Windows-Anwendungen; schauen wir uns an, wie wir OCR mit Microsoft Azure verwenden können.

Die Schönheit von IronOCR besteht darin, dass es sehr gut mit Microsoft Azure als Azure-Funktion in einer Mikroservice-Architektur funktioniert. Hier ist ein sehr schnelles Beispiel dafür, wie eine Microsoft Azure-Funktion aussieht, die mit IronOCR arbeitet. Diese Microsoft Azure-Funktion extrahiert Text aus Bildern.

public static class OCRFunction
{
    public static HttpClient hcClient = new HttpClient();

    [FunctionName("IronOCRFunction_EX")]
    public static async Task<IActionResult> Run([HttpTrigger] HttpRequest hrRequest, ExecutionContext ecContext)
    {
        var URI = hrRequest.Query["image"];
        var saStream = await hcClient.GetStreamAsync(URI);

        var ocr = new IronTesseract();
        using (var inputOCR = new OcrInput(saStream))
        {
            var outputOCR = ocr.Read(inputOCR);
            return new OkObjectResult(outputOCR.Text);
        }
    }
} 
public static class OCRFunction
{
    public static HttpClient hcClient = new HttpClient();

    [FunctionName("IronOCRFunction_EX")]
    public static async Task<IActionResult> Run([HttpTrigger] HttpRequest hrRequest, ExecutionContext ecContext)
    {
        var URI = hrRequest.Query["image"];
        var saStream = await hcClient.GetStreamAsync(URI);

        var ocr = new IronTesseract();
        using (var inputOCR = new OcrInput(saStream))
        {
            var outputOCR = ocr.Read(inputOCR);
            return new OkObjectResult(outputOCR.Text);
        }
    }
} 
Public Module OCRFunction
	Public hcClient As New HttpClient()

	<FunctionName("IronOCRFunction_EX")>
	Public Async Function Run(<HttpTrigger> ByVal hrRequest As HttpRequest, ByVal ecContext As ExecutionContext) As Task(Of IActionResult)
		Dim URI = hrRequest.Query("image")
		Dim saStream = Await hcClient.GetStreamAsync(URI)

		Dim ocr = New IronTesseract()
		Using inputOCR = New OcrInput(saStream)
			Dim outputOCR = ocr.Read(inputOCR)
			Return New OkObjectResult(outputOCR.Text)
		End Using
	End Function
End Module
$vbLabelText   $csharpLabel

Dies führt das Bild, das von der Funktion empfangen wird, direkt in die OCR-Engine, um den extrahierten Text auszugeben.

Ein kurzer Rückblick auf Microsoft Azure laut Microsoft:

Microsoft Azure-Mikroservices sind ein architektonischer Ansatz zum Erstellen von Anwendungen, bei dem jede Kernfunktion oder Dienst separat entwickelt und bereitgestellt wird. Die Mikroservice-Architektur ist verteilt und locker gekoppelt, sodass ein Fehler eines Components die gesamte Anwendung nicht beeinträchtigt. Unabhängige Komponenten arbeiten zusammen und kommunizieren über genau definierte API-Verträge. Erstellen Sie Mikroservice-Anwendungen, um sich schnell ändernde geschäftliche Anforderungen zu erfüllen und neue Funktionen schneller auf den Markt zu bringen.

Einige weitere Funktionen von IronOCR mit .NET oder Microsoft Azure umfassen:

  • Die Möglichkeit, OCR nahezu auf jede Datei, jedes Bild oder PDF durchzuführen.
  • Blitzschnelle Geschwindigkeit in processing OCR input
  • Außergewöhnliche Genauigkeit
  • Liest Barcodes und QR-Codes
  • Läuft lokal, ohne dass SaaS erforderlich ist
  • Kann PDFs und Bilder in durchsuchbare Dokumente umwandeln
  • Hervorragende Alternative zu Azure OCR von Microsoft Cognitive Services

Bildfilter zur Verbesserung der OCR-Leistung

  • OcrInput.Rotate - Dreht Bilder um mehrere Grad im Uhrzeigersinn. Für Gegen den Uhrzeigersinn verwenden Sie negative Zahlen.
  • OcrInput.Binarize() - Dieser Bildfilter macht jeden Pixel entweder schwarz oder weiß, ohne Mittelweg. Dies verbessert die OCR-Leistung.
  • OcrInput.ToGrayScale() - Dieser Bildfilter wandelt jeden Pixel in einen Graustufen-Ton um. Dies verbessert die OCR-Geschwindigkeit.
  • OcrInput.Contrast() - Erhöht automatisch den Kontrast. Dieser Filter verbessert die OCR-Geschwindigkeit und Genauigkeit bei Scans mit geringem Kontrast.
  • OcrInput.DeNoise() - Entfernt digitalen Rauschen. Dieser Filter sollte nur dort verwendet werden, wo im Eingabedokument Rauschen erwartet wird.
  • OcrInput.Invert() - Kehrt jede Farbe um.
  • OcrInput.Dilate() - Dilatation fügt den Grenzen eines Objekts im Bild Pixel hinzu.
  • OcrInput.Erode() - Erosion entfernt Pixel an den Objektgrenzen.
  • OcrInput.Deskew() - Dreht ein Bild so, dass es richtig herum und orthogonal ist. Dies ist sehr nützlich für OCR, da Tesseracts Toleranz für schiefe Scans so gering wie 5 Grad sein kann.
  • OcrInput.DeepCleanBackgroundNoise() - Starke Hintergrundrauschentfernung.
  • OcrInput.EnhanceResolution - Verbessert die Auflösung eines minderwertigen Bildes.

Geschwindigkeitsleistung

Ein Beispiel folgt:

var OCR = new IronTesseract();
OCR.Configuration.BlackListCharacters = "~`$#^*_}{][|\\";
OCR.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto;
OCR.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
OCR.Configuration.EngineMode = TesseractEngineMode.LstmOnly;
OCR.Language = OcrLanguage.EnglishFast;
using (var Input = new OcrInput("..\\Images\\Purgatory.PNG"))
{
    var Result = OCR.Read(Input);
    Console.WriteLine(Result.Text);
}
var OCR = new IronTesseract();
OCR.Configuration.BlackListCharacters = "~`$#^*_}{][|\\";
OCR.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto;
OCR.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
OCR.Configuration.EngineMode = TesseractEngineMode.LstmOnly;
OCR.Language = OcrLanguage.EnglishFast;
using (var Input = new OcrInput("..\\Images\\Purgatory.PNG"))
{
    var Result = OCR.Read(Input);
    Console.WriteLine(Result.Text);
}
Dim OCR = New IronTesseract()
OCR.Configuration.BlackListCharacters = "~`$#^*_}{][|\"
OCR.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto
OCR.Configuration.TesseractVersion = TesseractVersion.Tesseract5
OCR.Configuration.EngineMode = TesseractEngineMode.LstmOnly
OCR.Language = OcrLanguage.EnglishFast
Using Input = New OcrInput("..\Images\Purgatory.PNG")
	Dim Result = OCR.Read(Input)
	Console.WriteLine(Result.Text)
End Using
$vbLabelText   $csharpLabel

Preis- und Lizenzoptionen

Es gibt im Wesentlichen drei bezahlte Lizenzstufen, die alle auf einem Einmal-Kauf-Prinzip mit lebenslanger Lizenz basieren.

Und ja, diese sind für Entwicklungszwecke kostenlos.

Weitere Informationen

IronOCR-Funktionen für .NET-Anwendungen, die OCR auf Azure und anderen Systemen ausführen

  • IronOCR unterstützt 125 internationale Sprachen. Jede Sprache ist in Fast-, Standard- und Best-Qualität verfügbar. Einige der verfügbaren Sprachpakete umfassen:
    • Bulgarisch
    • Armenisch
    • Kroatisch
    • Afrikaans
    • Dänisch
    • Tschechisch
    • Filipino
    • Finnisch
    • Französisch
    • Deutsch
    • Es gibt viele weitere verfügbare Sprachpakete; um einen Blick darauf zu werfen, folgen Sie bitte dem nächsten Link. IronOCR-Sprachpakete
  • Es funktioniert sofort in .NET
    • Unterstützung für Xamarin
    • Unterstützung für Mono
    • Unterstützung für Microsoft Azure
    • Unterstützung für Docker auf Microsoft Azure
    • Unterstützt PDF-Dokumente
    • Unterstützt Multiframe-Tiffs
    • Unterstützung für alle gängigen Bildformate
  • Die folgenden .NET-Frameworks werden unterstützt:
    • .NET Framework 4.5 und höher
    • .NET Standard 2
    • .NET Core 2
    • .NET Core 3
    • .NET Core 5
  • Sie müssen Tesseract (eine Open-Source-OCR-Engine, die Unicode und mehr als 100 Sprachen unterstützt) nicht installiert haben, damit IronOCR funktioniert.
    • Hat eine höhere Genauigkeit als Tesseract.
    • Hat eine höhere Geschwindigkeit als Tesseract.
  • Korrigiert minderwertige Scans von Dokumenten oder Dateien.
  • Korrigiert minderwertige schiefe Scans von Dokumenten oder Dateien.

Was ist Optische Zeichenerkennung (OCR)?

Laut Wikipedia: Optische Zeichenerkennung ist die elektronische oder mechanische Umwandlung von Bildern von getipptem, gedrucktem Text in maschinenkodierten Text, sei es aus einem gescannten Dokument, einem Foto eines Dokuments, einem Szenenfoto oder aus Untertiteltext, der auf ein Bild überlagert ist. OCR steht für Optical Character Recognition. Es gibt im Wesentlichen vier Arten der optischen Zeichenerkennung:

  • OCR - Optische Zeichenerkennung, zielt auf getippten Text aus einem Eingabedokument, ein Zeichen oder Glyph (elementares Symbol innerhalb eines festgelegten Satzes von Symbolen, zum Beispiel ‚a‘ in verschiedenen Schriftarten) gleichzeitig.
  • OWR - Optische Worterkennung, zielt auf getippten Text aus einem Eingabedokument, ein Wort gleichzeitig.
  • ICR - Intelligente Zeichenerkennung, zielt auf gedruckten Text wie Druckschrift (Zeichen ohne Verbund zu anderen Buchstaben) und Kursivtext, ein Zeichen oder Glyph gleichzeitig.
  • IWR - Intelligente Worterkennung, zielt auf Kursivtext.

Häufig gestellte Fragen

Wie kann ich OCR-Funktionen in einer C#-Anwendung auf Azure integrieren?

Sie können OCR-Fähigkeiten in einer C#-Anwendung auf Azure integrieren, indem Sie eine neue Konsolenanwendung erstellen und IronOCR über NuGet installieren. Verwenden Sie den Befehl Install-Package IronOcr oder suchen Sie nach IronOCR im NuGet-Paketmanager.

Welche Vorteile bietet IronOCR gegenüber dem nativen OCR-Dienst von Azure?

IronOCR bietet mehrere Vorteile gegenüber dem nativen OCR-Dienst von Azure, darunter verbesserte Genauigkeit, schnellere Verarbeitungsgeschwindigkeiten und die Möglichkeit, lokal ohne SaaS zu arbeiten. Es unterstützt auch eine breite Palette von Sprachen und bietet Bildfilter zur Verbesserung der OCR-Leistung.

Wie richte ich eine Microsoft Azure Function für die Textextraktion mit OCR ein?

Um eine Microsoft Azure Function für die Textextraktion mit OCR einzurichten, können Sie IronOCR verwenden, um eine Funktion zu erstellen, die Text aus Bildern extrahiert. Dies ist Teil einer Mikroservices-Architektur, mit der Sie OCR-Funktionen nahtlos in Ihre Azure-Anwendungen integrieren können.

Kann IronOCR mehrere Sprachen bei der OCR-Verarbeitung handhaben?

Ja, IronOCR unterstützt 125 internationale Sprachen, jede in Fast, Standard und Best Qualität, was es für globale Anwendungen vielseitig einsetzbar macht.

Welche Bildverarbeitungsoptionen bietet IronOCR, um die OCR-Genauigkeit zu verbessern?

IronOCR bietet eine Vielzahl von Bildverarbeitungsoptionen wie Drehen, Binarisieren, ZuGraustufen, Kontrast, Entrauschen, Invertieren, Erweitern, Erodieren, Entzerren, Tiefenreinigung von Hintergrundgeräuschen und Auflösungsverbesserung, um die Genauigkeit und Zuverlässigkeit der OCR-Ergebnisse zu verbessern.

Ist IronOCR mit verschiedenen .NET-Frameworks für die Azure-Bereitstellung kompatibel?

Ja, IronOCR ist mit .NET Framework 4.5 und höher, .NET Standard 2, .NET Core 2, .NET Core 3 und .NET Core 5 kompatibel. Es unterstützt auch Xamarin, Mono und kann mit Docker auf Microsoft Azure bereitgestellt werden.

Benötige ich zusätzliche Software, um IronOCR auf Azure zu betreiben?

Keine zusätzliche Software ist erforderlich, um IronOCR auf Azure zu betreiben. Es funktioniert eigenständig und bietet verbesserte Genauigkeit und Geschwindigkeit im Vergleich zu Tesseract, ohne dessen Installation zu benötigen.

Welche Lizenzierungsoptionen sind für IronOCR verfügbar?

IronOCR bietet drei kostenpflichtige Lizenzstufen auf Basis eines einmaligen Kauf-, Lebenszeitlizenzmodells. Diese Lizenzen sind für Entwicklungszwecke kostenlos und bieten Flexibilität für das Projektskalierung.

Wie kann ich Bilder und PDFs mit IronOCR in durchsuchbare Dokumente umwandeln?

IronOCR wandelt Bilder und PDFs in durchsuchbare Dokumente um, indem es Text erkennt und extrahiert.

Wie erfolgt der Prozess der Verwendung von IronOCR zum Lesen von Barcodes und QR-Codes?

IronOCR kann Barcodes und QR-Codes lesen, indem es seine eingebauten Funktionen verwendet, um Daten aus diesen Codes zu scannen und zu extrahieren, und so deren Integration in C#-Anwendungen auf Azure erleichtert.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 5,044,537 | Version: 2025.11 gerade veröffentlicht