Zum Fußzeileninhalt springen
OCR-WERKZEUGE

Windows OCR Engine vs Tesseract: Ein detaillierter Vergleich

In der heutigen digitalen Ära ist die Technologie der Optical Character Recognition (OCR) zu einem integralen Bestandteil verschiedener Branchen geworden und ermöglicht die Umwandlung von Bildern und gescannten Dokumenten in bearbeitbaren und durchsuchbaren Text.

Unter den vielen verfügbaren OCR-Softwarelösungen heben sich insbesondere Google Cloud Vision (Cloud Vision API), Adobe Acrobat Pro DC, ABBYY Finereader, Windows OCR Engine, Tesseract und IronOCR als prominente Anwärter hervor, die jeweils einzigartige Funktionen und Fähigkeiten zur Unterstützung der Dokumentenanalyse bieten.

Dieser Artikel zielt darauf ab, eine umfassende vergleichende Analyse dieser drei OCR-Engines zu bieten und deren Genauigkeit, Leistung und Integrationsfreundlichkeit zu bewerten.

1. Einführung in OCR-Engines

OCR-Engines sind Software-Tools, die entwickelt wurden, um einfachen Text aus Bildern, PDFs und anderen gescannten Dokumenten zu erkennen und zu extrahieren. Sie verwenden ausgeklügelte Algorithmen und maschinelle Lerntechniken, um Zeichen genau zu identifizieren und in eine maschinenlesbare Textdatei umzuwandeln. Windows OCR Engine, Tesseract und IronOCR repräsentieren drei weit verbreitete OCR-Lösungen, die jeweils ihre Stärken und Anwendungen haben.

2. Windows OCR Engine

Windows OCR Engine ist in das Windows-Betriebssystem integriert und bietet eine bequeme und benutzerfreundliche Lösung zum Extrahieren von Text aus Eingabebildern und gescannten Dokumenten. Durch den Einsatz fortschrittlicher Bildverarbeitungstechniken kann sie Text in verschiedenen Sprachen und Schriftstilen genau erkennen. Die Windows OCR Engine ist über die Windows Runtime API zugänglich und ermöglicht eine nahtlose Integration in Windows-Anwendungen mit den Fähigkeiten eines Befehlszeilentools.

2.1 Hauptmerkmale der Windows OCR Engine

  • Unterstützung von Sprachen: Die Windows OCR Engine unterstützt viele Sprachen und ist somit für mehrsprachige Dokumente geeignet.
  • Bildverarbeitung: Sie verwendet ausgeklügelte Bildverarbeitungsalgorithmen, um die Erkennungsgenauigkeit von gedrucktem Text zu verbessern, selbst in qualitativ minderwertigen Bildern.
  • Integration mit Windows-Anwendungen: Die Windows OCR Engine lässt sich nahtlos in Windows-Anwendungen integrieren, sodass Entwickler die OCR-Funktionen vollständig in ihre Software einbinden können.

2.2 Codebeispiel

using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using Windows.Graphics.Imaging;
using Windows.Media.Ocr;

class Program
{
    static async Task Main(string[] args)
    {
        // Provide the path to the image file
        string imagePath = "sample.png";
        try
        {
            // Call the ExtractText method to extract text from the image
            string extractedText = await ExtractText(imagePath);
            // Display the extracted text
            Console.WriteLine("Extracted Text:");
            Console.WriteLine(extractedText);
        }
        catch (Exception ex)
        {
            Console.WriteLine("An error occurred: " + ex.Message);
        }
    }

    public static async Task<string> ExtractText(string image)
    {
        // Initialize StringBuilder to store extracted text
        StringBuilder text = new StringBuilder();
        try
        {
            // Open the image file stream
            using (var fileStream = File.OpenRead(image))
            {
                // Create a BitmapDecoder from the image file stream
                var bmpDecoder = await BitmapDecoder.CreateAsync(fileStream.AsRandomAccessStream());
                // Get the software bitmap from the decoder
                var softwareBmp = await bmpDecoder.GetSoftwareBitmapAsync();
                // Create an OCR engine from user profile languages
                var ocrEngine = OcrEngine.TryCreateFromUserProfileLanguages();
                // Recognize text from the software bitmap
                var ocrResult = await ocrEngine.RecognizeAsync(softwareBmp);
                // Append each line of recognized text to the StringBuilder
                foreach (var line in ocrResult.Lines)
                {
                    text.AppendLine(line.Text);
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error during OCR process: " + ex.Message);
        }
        // Return the extracted text
        return text.ToString();
    }
}
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using Windows.Graphics.Imaging;
using Windows.Media.Ocr;

class Program
{
    static async Task Main(string[] args)
    {
        // Provide the path to the image file
        string imagePath = "sample.png";
        try
        {
            // Call the ExtractText method to extract text from the image
            string extractedText = await ExtractText(imagePath);
            // Display the extracted text
            Console.WriteLine("Extracted Text:");
            Console.WriteLine(extractedText);
        }
        catch (Exception ex)
        {
            Console.WriteLine("An error occurred: " + ex.Message);
        }
    }

    public static async Task<string> ExtractText(string image)
    {
        // Initialize StringBuilder to store extracted text
        StringBuilder text = new StringBuilder();
        try
        {
            // Open the image file stream
            using (var fileStream = File.OpenRead(image))
            {
                // Create a BitmapDecoder from the image file stream
                var bmpDecoder = await BitmapDecoder.CreateAsync(fileStream.AsRandomAccessStream());
                // Get the software bitmap from the decoder
                var softwareBmp = await bmpDecoder.GetSoftwareBitmapAsync();
                // Create an OCR engine from user profile languages
                var ocrEngine = OcrEngine.TryCreateFromUserProfileLanguages();
                // Recognize text from the software bitmap
                var ocrResult = await ocrEngine.RecognizeAsync(softwareBmp);
                // Append each line of recognized text to the StringBuilder
                foreach (var line in ocrResult.Lines)
                {
                    text.AppendLine(line.Text);
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error during OCR process: " + ex.Message);
        }
        // Return the extracted text
        return text.ToString();
    }
}
Imports System
Imports System.IO
Imports System.Text
Imports System.Threading.Tasks
Imports Windows.Graphics.Imaging
Imports Windows.Media.Ocr

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		' Provide the path to the image file
		Dim imagePath As String = "sample.png"
		Try
			' Call the ExtractText method to extract text from the image
			Dim extractedText As String = Await ExtractText(imagePath)
			' Display the extracted text
			Console.WriteLine("Extracted Text:")
			Console.WriteLine(extractedText)
		Catch ex As Exception
			Console.WriteLine("An error occurred: " & ex.Message)
		End Try
	End Function

	Public Shared Async Function ExtractText(ByVal image As String) As Task(Of String)
		' Initialize StringBuilder to store extracted text
		Dim text As New StringBuilder()
		Try
			' Open the image file stream
			Using fileStream = File.OpenRead(image)
				' Create a BitmapDecoder from the image file stream
				Dim bmpDecoder = Await BitmapDecoder.CreateAsync(fileStream.AsRandomAccessStream())
				' Get the software bitmap from the decoder
				Dim softwareBmp = Await bmpDecoder.GetSoftwareBitmapAsync()
				' Create an OCR engine from user profile languages
				Dim ocrEngine = OcrEngine.TryCreateFromUserProfileLanguages()
				' Recognize text from the software bitmap
				Dim ocrResult = Await ocrEngine.RecognizeAsync(softwareBmp)
				' Append each line of recognized text to the StringBuilder
				For Each line In ocrResult.Lines
					text.AppendLine(line.Text)
				Next line
			End Using
		Catch ex As Exception
			Console.WriteLine("Error during OCR process: " & ex.Message)
		End Try
		' Return the extracted text
		Return text.ToString()
	End Function
End Class
$vbLabelText   $csharpLabel

2.2.1 Ausgabe

Windows OCR Engine vs Tesseract (OCR Features Comparison): Abbildung 1 - Konsolenausgabe für den Windows OCR Engine-Code

3. Tesseract

Tesseract, eine von Google entwickelte Open-Source-OCR-Engine, hat sich durch ihre Genauigkeit und Vielseitigkeit große Beliebtheit erworben. Sie unterstützt über 100 Sprachen und kann verschiedene Bildformate verarbeiten, darunter TIFF, JPEG und PNG. Die Tesseract OCR Engine nutzt Deep-Learning-Algorithmen und neuronale Netzwerke, um ein hohes Maß an Texterkennungsgenauigkeit zu erreichen, was sie für eine Vielzahl von Anwendungen geeignet macht.

3.1 Hauptmerkmale von Tesseract

  • Unterstützung von Sprachen: Die Tesseract-Engine unterstützt über 100 Sprachen, einschließlich komplexer Schriftarten wie Arabisch und Chinesisch.
  • Bildvorverarbeitung: Sie bietet umfassende Bildvorverarbeitungsfunktionen, darunter Schräglagenkorrektur, Binarisierung und Rauschunterdrückung, um die Texterkennungsgenauigkeit zu verbessern.
  • Anpassungsoptionen: Tesseract ermöglicht es Benutzern, OCR-Parameter feinabzustimmen und benutzerdefinierte Modelle für spezielle Anwendungsfälle zu trainieren, um Genauigkeit und Leistung zu verbessern.

3.2 Codebeispiel

using Patagames.Ocr;

class TesseractExample
{
    static void Main(string[] args)
    {
        // Create an OCR API instance
        using (var api = OcrApi.Create())
        {
            // Initialize the OCR engine for the English language
            api.Init(Patagames.Ocr.Enums.Languages.English);
            // Extract text from the image
            string plainText = api.GetTextFromImage(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
            // Display the extracted text
            Console.WriteLine(plainText);
        }
    }
}
using Patagames.Ocr;

class TesseractExample
{
    static void Main(string[] args)
    {
        // Create an OCR API instance
        using (var api = OcrApi.Create())
        {
            // Initialize the OCR engine for the English language
            api.Init(Patagames.Ocr.Enums.Languages.English);
            // Extract text from the image
            string plainText = api.GetTextFromImage(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
            // Display the extracted text
            Console.WriteLine(plainText);
        }
    }
}
Imports Patagames.Ocr

Friend Class TesseractExample
	Shared Sub Main(ByVal args() As String)
		' Create an OCR API instance
		Using api = OcrApi.Create()
			' Initialize the OCR engine for the English language
			api.Init(Patagames.Ocr.Enums.Languages.English)
			' Extract text from the image
			Dim plainText As String = api.GetTextFromImage("C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png")
			' Display the extracted text
			Console.WriteLine(plainText)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

3.2.1 Ausgabe

Windows OCR Engine vs Tesseract (OCR Features Comparison): Abbildung 2 - Konsolenausgabe für den Tesseract-Code

4. IronOCR

IronOCR, eine leistungsstarke OCR-Engine, entwickelt von Iron Software, zeichnet sich durch ihre außergewöhnliche Genauigkeit, Benutzerfreundlichkeit und vielfältige Sprachunterstützung aus. Sie bietet OCR-Funktionalität vor Ort und unterstützt über 125 Sprachen, was sie für globale Anwendungen geeignet macht. IronOCR nutzt fortschrittliche maschinelle Lernalgorithmen und Cloud-Vision-Technologie, um präzise Texterkennungsergebnisse zu liefern, selbst in anspruchsvollen Szenarien.

4.1 Wichtige Funktionen von IronOCR

  • Hohe Genauigkeit: IronOCR liefert branchenführende Genauigkeit bei der Texterkennung und gewährleistet zuverlässige Ergebnisse über verschiedene Dokumententypen und Sprachen hinweg.
  • Vielfältige Sprachunterstützung: Es unterstützt über 125 Sprachen und bietet umfassende Sprachpakete für eine nahtlose mehrsprachige Texterkennung.
  • Einfache Integration: IronOCR bietet eine unkomplizierte Integration in .NET-Anwendungen mit intuitiven APIs und umfangreicher Dokumentation, um den Entwicklungsprozess mit Vor- und Nachbearbeitung ursprünglicher Bilder zur Textextraktion zu optimieren.

4.2 Installation von IronOCR

Bevor wir zum Codebeispiel übergehen, sehen wir uns an, wie IronOCR mithilfe des NuGet-Paket-Managers installiert wird.

  1. Gehen Sie in Visual Studio zum Menü Extras und wählen Sie den NuGet-Paket-Manager.
  2. Es erscheint eine neue Liste, hier wählen Sie den NuGet-Paket-Manager für Lösungen aus.

Windows OCR Engine vs Tesseract (OCR Features Comparison): Abbildung 3 - Wo Sie den Visual Studio NuGet-Paket-Manager finden

  1. Es erscheint ein neues Fenster. Gehen Sie zur Registerkarte 'Durchsuchen' und geben Sie 'IronOCR' in die Suchleiste ein.
  2. Es erscheint eine Liste von Paketen. Wählen Sie das neueste IronOCR-Paket aus und klicken Sie auf Installieren.

Windows OCR Engine vs Tesseract (OCR Features Comparison): Abbildung 4 - Installation des IronOCR-Pakets

4.3 Codebeispiel (C#)

using IronOcr;

class IronOCRExample
{
    static void Main(string[] args)
    {
        // Create an IronTesseract instance
        var ocr = new IronTesseract();
        // Set the language for OCR recognition
        ocr.Language = OcrLanguage.English;
        // Perform OCR on the specified image
        var result = ocr.Read(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
        // Display the extracted text
        Console.WriteLine(result.Text);
    }
}
using IronOcr;

class IronOCRExample
{
    static void Main(string[] args)
    {
        // Create an IronTesseract instance
        var ocr = new IronTesseract();
        // Set the language for OCR recognition
        ocr.Language = OcrLanguage.English;
        // Perform OCR on the specified image
        var result = ocr.Read(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
        // Display the extracted text
        Console.WriteLine(result.Text);
    }
}
Imports IronOcr

Friend Class IronOCRExample
	Shared Sub Main(ByVal args() As String)
		' Create an IronTesseract instance
		Dim ocr = New IronTesseract()
		' Set the language for OCR recognition
		ocr.Language = OcrLanguage.English
		' Perform OCR on the specified image
		Dim result = ocr.Read("C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png")
		' Display the extracted text
		Console.WriteLine(result.Text)
	End Sub
End Class
$vbLabelText   $csharpLabel

4.3.1 Ausgabe

Windows OCR Engine vs Tesseract (OCR Features Comparison): Abbildung 5 - Konsolenausgabe für den IronOCR-Code

5. Vergleichsbewertung

5.1 Genauigkeit und Leistung

  • Windows OCR Engine und Tesseract bieten eine gute Genauigkeit, können jedoch bei komplexen Layouts Schwierigkeiten haben.
  • IronOCR: Überzeugt durch Genauigkeit und liefert zuverlässige Ergebnisse über verschiedene Dokumententypen und Sprachen hinweg, einschließlich verrauschter Bilder.

5.2 Einfachheit der Integration

  • Windows OCR Engine: Lässt sich nahtlos in Windows-Anwendungen integrieren, bietet jedoch keine Anpassungsoptionen.
  • Tesseract: Erfordert zusätzliche Konfigurationen und Abhängigkeiten für die Integration, bietet aber umfangreiche Anpassungsoptionen.
  • IronOCR: Bietet einfache Integration mit .NET-Anwendungen, mit intuitiven APIs und umfassender Dokumentation.

5.3 Sprachunterstützung

  • Windows OCR Engine unterstützt im Vergleich zu Tesseract und IronOCR nur eine begrenzte Anzahl von Sprachen.
  • Tesseract: Bietet Unterstützung für über 100 Sprachen.
  • IronOCR: Bietet Unterstützung für über 125 Sprachen, was es für globale Anwendungen geeignet macht.

6. Fazit

Zusammenfassend lässt sich sagen, dass während Windows OCR Engine und Tesseract beliebte Optionen für die Texterkennung sind, IronOCR als die genaueste und vielseitigste OCR-Engine hervorsticht. Seine branchenführende Genauigkeit, umfangreiche Sprachunterstützung und einfache Integration machen es zu einer herausragenden Lösung für Unternehmen und Entwickler, die eine zuverlässige OCR-Funktionalität suchen. Durch die Nutzung von IronOCR können Organisationen Dokumentenverarbeitungs-Workflows optimieren, die Genauigkeit der Datenerfassung verbessern und wertvolle Einblicke aus gescannten Dokumenten und Bildern gewinnen.

IronOCR bietet eine kostenlose Testversion. Um mehr über IronOCR und seine Funktionen zu erfahren, besuchen Sie hier.

Kannaopat Udonpant
Software Ingenieur
Bevor er Software-Ingenieur wurde, absolvierte Kannapat ein PhD in Umweltressourcen an der Hokkaido University in Japan. Während seines Studiums wurde Kannapat auch Mitglied des Vehicle Robotics Laboratory, das Teil der Fakultät für Bioproduktionstechnik ist. Im Jahr 2022 nutzte er seine C#-Kenntnisse, um dem Engineering-Team von Iron Software ...
Weiterlesen