Windows OCR Engine vs. Tesseract: Ein detaillierter Vergleich
Veröffentlicht 3. April 2024
Teilen Sie:
Im heutigen digitalen Zeitalter ist die optische Zeichenerkennung (Optical Character Recognition(OCR) technologie ist aus verschiedenen Branchen nicht mehr wegzudenken und ermöglicht die Umwandlung von Bildern und gescannten Dokumenten in bearbeitbaren und durchsuchbaren Text.
Unter den vielen verfügbaren OCR-Programmen, wie z. B. Google Cloud Vision(Cloud Vision API)adobe Acrobat Pro DC, ABBYY Finereader und viele andere, Windows OCR Engine vs. Tesseract, undIronOCR heben sich als herausragende Konkurrenten hervor, die jeweils einzigartige Funktionen und Möglichkeiten zur Unterstützung der Dokumentenanalyse bieten.
Ziel dieses Artikels ist es, eine umfassende vergleichende Analyse dieser drei OCR-Engines vorzunehmen und ihre Genauigkeit, Leistung und einfache Integration zu bewerten.
1. Einführung in OCR-Engines
OCR-Engines sind Softwaretools zur Erkennung und Extraktion von Klartext aus Bildern, PDF-Dateien und anderen gescannten Dokumenten. Sie verwenden hochentwickelte Algorithmen und maschinelle Lerntechniken, um Zeichen genau zu erkennen und in eine maschinenlesbare Textdatei zu konvertieren. Windows OCR Engine, Tesseract und IronOCR sind drei weit verbreitete OCR-Lösungen, die jeweils ihre Stärken und Anwendungen haben.
2. Windows OCR-Engine
DieWindows OCR Enginedie in das Windows-Betriebssystem integrierte Software bietet eine komfortable und benutzerfreundliche Lösung für die Extraktion von Text aus Eingabebildern und gescannten Dokumenten. Mithilfe fortschrittlicher Bildverarbeitungstechniken kann es Text in verschiedenen Sprachen und Schriftarten genau erkennen. Die Windows OCR Engine ist über die Windows Runtime API zugänglich, was eine nahtlose Integration in Windows-Anwendungen mit den Möglichkeiten eines Befehlszeilen-Tools ermöglicht.
2.1 Hauptmerkmale der Windows OCR Engine
Sprachunterstützung: Die Windows-OCR-Engine unterstützt viele Sprachen und eignet sich daher für mehrsprachige Dokumente.
Bildverarbeitung: Es verwendet hochentwickelte Bildverarbeitungsalgorithmen, um die Erkennungsgenauigkeit von gedrucktem Text zu verbessern, selbst bei Bildern von schlechter Qualität.
Integration in Windows-Anwendungen: Die Windows OCR Engine lässt sich nahtlos in Windows-Anwendungen integrieren, so dass Entwickler OCR-Funktionen vollständig in ihre Software einbinden können.
2.2 Code Beispiel
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string [] args)
{
// Provide the path to the image file
string imagePath = "sample.png";
try
{
// Instantiate the program class
Program program = new Program();
// Call the ExtractText method to extract text from the image
string extractedText = await program.ExtractText(imagePath);
// Display the extracted text
Console.WriteLine("Extracted Text:");
Console.WriteLine(extractedText);
}
catch (Exception ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
}
public 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 = System.IO.File.OpenRead(image))
{
Console.WriteLine("Extracted Text:");
// Create a BitmapDecoder from the image file stream
var bmpDecoder = await Windows.Graphics.Imaging.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 = Windows.Media.Ocr.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)
{
throw ex; // Propagate the exception
}
// Return the extracted text
return text.ToString();
}
}
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string [] args)
{
// Provide the path to the image file
string imagePath = "sample.png";
try
{
// Instantiate the program class
Program program = new Program();
// Call the ExtractText method to extract text from the image
string extractedText = await program.ExtractText(imagePath);
// Display the extracted text
Console.WriteLine("Extracted Text:");
Console.WriteLine(extractedText);
}
catch (Exception ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
}
public 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 = System.IO.File.OpenRead(image))
{
Console.WriteLine("Extracted Text:");
// Create a BitmapDecoder from the image file stream
var bmpDecoder = await Windows.Graphics.Imaging.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 = Windows.Media.Ocr.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)
{
throw ex; // Propagate the exception
}
// Return the extracted text
return text.ToString();
}
}
Imports System
Imports System.IO
Imports System.Text
Imports System.Threading.Tasks
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
' Instantiate the program class
Dim program As New Program()
' Call the ExtractText method to extract text from the image
Dim extractedText As String = Await program.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 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 = System.IO.File.OpenRead(image)
Console.WriteLine("Extracted Text:")
' Create a BitmapDecoder from the image file stream
Dim bmpDecoder = Await Windows.Graphics.Imaging.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 = Windows.Media.Ocr.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
Throw ex ' Propagate the exception
End Try
' Return the extracted text
Return text.ToString()
End Function
End Class
$vbLabelText $csharpLabel
2.2.1 Ausgabe
3. Tesserakt
*Tesserakt, eine von Google entwickelte Open-Source-OCR-Engine, hat aufgrund ihrer Genauigkeit und Vielseitigkeit große Popularität erlangt. Es 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 Netze, um eine hohe Texterkennungsgenauigkeit zu erreichen, so dass sie für eine Vielzahl von Anwendungen geeignet ist.
3.1 Hauptmerkmale von Tesseract
Sprachunterstützung: Die Tesseract-Engine unterstützt über 100 Sprachen, einschließlich komplexer Schriften wie Arabisch und Chinesisch.
Bildvorverarbeitung: Die Software bietet umfangreiche Bildvorverarbeitungsfunktionen, einschließlich Entzerrung, Binarisierung und Rauschunterdrückung, um die Genauigkeit der Texterkennung zu verbessern.
Anpassungsoptionen: Mit Tesseract können Benutzer die OCR-Parameter feinabstimmen und benutzerdefinierte Modelle für bestimmte Anwendungsfälle trainieren, um die Genauigkeit und Leistung zu verbessern.
3.2 Code Beispiel
using Patagames.Ocr;
using (var api = OcrApi.Create())
{
api.Init(Patagames.Ocr.Enums.Languages.English);
string plainText = api.GetTextFromImage(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
Console.WriteLine(plainText);
}
using Patagames.Ocr;
using (var api = OcrApi.Create())
{
api.Init(Patagames.Ocr.Enums.Languages.English);
string plainText = api.GetTextFromImage(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
Console.WriteLine(plainText);
}
Imports Patagames.Ocr
Using api = OcrApi.Create()
api.Init(Patagames.Ocr.Enums.Languages.English)
Dim plainText As String = api.GetTextFromImage("C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png")
Console.WriteLine(plainText)
End Using
$vbLabelText $csharpLabel
3.2.1 Ausgabe
4. IronOCR
IronOCR, eine von Iron Software entwickelte leistungsstarke OCR-Engine, zeichnet sich durch ihre außergewöhnliche Genauigkeit, Benutzerfreundlichkeit und vielseitige Sprachunterstützung aus. Es bietet OCR-Funktionalität vor Ort und unterstützt über 127 Sprachen, wodurch es sich für globale Anwendungen eignet. IronOCR nutzt fortschrittliche Algorithmen des maschinellen Lernens und Cloud-Vision-Technologie, um selbst in schwierigen Szenarien präzise Texterkennungsergebnisse zu liefern.
4.1 Hauptmerkmale von IronOCR
Hohe Genauigkeit: IronOCR bietet eine branchenführende Genauigkeit bei der Texterkennung und gewährleistet zuverlässige Ergebnisse bei verschiedenen Dokumenttypen und Sprachen.
Vielseitige Sprachunterstützung: Die Software unterstützt über 127 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 einer umfangreichen Dokumentation, um den Entwicklungsprozess mit Vorverarbeitung und Nachverarbeitung von Originalbildern zur Textextraktion zu optimieren.
4.2 IronOCR installieren
Bevor wir uns dem Programmierbeispiel zuwenden, wollen wir sehen, wie IronOCR mit dem NuGet Package Manager installiert wird.
Gehen Sie in Visual Studio zum Menü Tools und wählen Sie NuGet Package Manager.
Es erscheint eine neue Liste, in der Sie den NuGet Package Manager für Lösungen auswählen.
Es öffnet sich ein neues Fenster. Gehen Sie auf die Registerkarte 'Durchsuchen' und geben Sie 'IronOCR' in die Suchleiste ein.
Es erscheint eine Liste von Paketen Wählen Sie das neueste IronOCR-Paket aus und klicken Sie auf Installieren.
4.3 Codebeispiel (C#)
using IronOcr;
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
var result = ocr.Read("C:\\Users\\buttw\\source\\repos\\ironqr\\ironqr\\bin\\Debug\\net5.0\\Iron.png");
Console.WriteLine(result.Text);
using IronOcr;
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
var result = ocr.Read("C:\\Users\\buttw\\source\\repos\\ironqr\\ironqr\\bin\\Debug\\net5.0\\Iron.png");
Console.WriteLine(result.Text);
Imports IronOcr
Private ocr = New IronTesseract()
ocr.Language = OcrLanguage.English
Dim result = ocr.Read("C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png")
Console.WriteLine(result.Text)
$vbLabelText $csharpLabel
4.3.1 Ausgabe
5. Vergleichende Bewertung
5.1 Genauigkeit und Leistung
Windows-OCR-Engine und Tesseract bieten ordentliche Genauigkeit, können jedoch bei komplexen Layouts Schwierigkeiten haben.
IronOCR: Überzeugt durch Genauigkeit und liefert zuverlässige Ergebnisse über verschiedene Dokumenttypen und Sprachen hinweg, einschließlich verrauschter Bilder.
5.2 Leichtigkeit der Integration
Windows OCR-Engine: Lässt sich nahtlos in Windows-Anwendungen integrieren, bietet aber keine Anpassungsmöglichkeiten.
Tesseract: Erfordert zusätzliche Konfiguration und Abhängigkeiten für die Integration, bietet aber umfangreiche Anpassungsmöglichkeiten.
IronOCR: Bietet eine einfache Integration in .NET-Anwendungen, mit intuitiven APIs und umfassender Dokumentation.
5.3 Sprachunterstützung
Die Windows OCR Engine und Tesseract unterstützen im Vergleich zu Tesseract und IronOCR eine begrenzte Anzahl von Sprachen.
IronOCR: Unterstützt über 127 Sprachen und eignet sich damit für globale Anwendungen.
6. Schlussfolgerung
Zusammenfassend lässt sich sagen, dass die Windows OCR Engine und Tesseract zwar eine beliebte Wahl für die Texterkennung sind,IronOCR entwickelt sich zur genauesten und vielseitigsten OCR-Engine. Die branchenführende Genauigkeit, die umfassende Sprachunterstützung und die einfache Integration machen sie zu einer herausragenden Lösung für Unternehmen und Entwickler, die zuverlässige OCR-Funktionen suchen. Durch den Einsatz von IronOCR können Unternehmen ihre Arbeitsabläufe in der Dokumentenverarbeitung optimieren, die Genauigkeit der Datenextraktion verbessern und wertvolle Erkenntnisse aus gescannten Dokumenten und Bildern gewinnen.
IronOCR bietet einekostenlos testen. Um mehr über IronOCR und seine Funktionen zu erfahren, besuchen Sie*hier.
Regan schloss sein Studium an der University of Reading mit einem BA in Elektrotechnik ab. Bevor er zu Iron Software kam, konzentrierte er sich in seinen früheren Jobs auf einzelne Aufgaben. Was ihm bei Iron Software am meisten Spaß macht, ist das Spektrum der Aufgaben, die er übernehmen kann, sei es im Vertrieb, im technischen Support, in der Produktentwicklung oder im Marketing. Es macht ihm Spaß, die Art und Weise zu verstehen, wie Entwickler die Bibliothek von Iron Software nutzen, und dieses Wissen zu nutzen, um die Dokumentation und die Produkte kontinuierlich zu verbessern.
< PREVIOUS Cloud-basierte OCR (OCR-Funktionen im Vergleich)
NÄCHSTES > Azure OCR vs. Google OCR (Vergleich der OCR-Funktionen)