Einführung
Aspose.OCR FOSS für .NET ist eine neue Open-Source C# Bibliothek zur Erkennung und zum Erkennen von Text in Rasterbildern und PDF-Dokumenten. Sie ist für .NET-Entwickler konzipiert, die Texterkennung benötigen, ohne von einem externen OCR-Dienst, einem Cloud-API oder einer proprietären Laufzeitumgebung abhängig zu sein.
Die Bibliothek steht unter der MIT-Lizenz und hat keine externe OCR-Abhängigkeit: Die gesamte Erkennungspipeline — Zeilenerkennung, Regionsverfeinerung und Erkennung lateinischer Schriften — läuft lokal über drei ONNX-Modelle, die direkt in die Assembly eingebettet und über Microsoft.ML.OnnxRuntime auf der CPU ausgeführt werden. Ein Modell-Download-Schritt und kein Netzwerkaufruf sind zur Laufzeit erforderlich.
Was enthalten ist
Erkennen von Bildern und PDFs über einen einzigen Einstiegspunkt
AsposeOcr.Recognize() ist der einzige Einstiegspunkt für beide Eingabetypen. Ein OcrInput wird mit InputType.SingleImage oder InputType.PDF erstellt, und ein oder mehrere Dateipfade werden mit OcrInput.Add() in die Warteschlange gestellt. Für InputType.PDF wird jede Seite erkannt und in Quellreihenfolge zurückgegeben.
using Aspose.OCR;
var api = new AsposeOcr();
using var input = new OcrInput(InputType.SingleImage);
input.Add("scan.png");
RecognitionResult result = api.Recognize(input)[0];
Console.WriteLine(result.RecognitionText);
Zeilenbezogener Text und Pixelkoordinaten
Jedes RecognitionResult liefert den vollständigen Seitentext über RecognitionText und die einzelnen erkannten Zeilen über RecognitionLinesResult — eine Liste von RecognitionResult.LinesResult-Einträgen, die jeweils TextInLine und ein System.Drawing.Rectangle in Line bereitstellen, das die Pixelkoordinaten dieser Zeile im Quellbild angibt.
foreach (RecognitionResult.LinesResult line in result.RecognitionLinesResult)
{
Console.WriteLine($"{line.Line}: {line.TextInLine}");
}
Batch-Verarbeitung mehrerer Dateien
OcrInput kann mehr als eine Datei enthalten. OcrOutput — der Rückgabewert von Recognize() — ist eine Liste von RecognitionResult, jeweils für ein Bild oder eine PDF-Seite, wobei die ursprüngliche Reihenfolge, in der die Dateien hinzugefügt wurden, beibehalten wird.
using var input = new OcrInput(InputType.SingleImage);
input.Add("page-1.jpg");
input.Add("page-2.png");
OcrOutput output = api.Recognize(input);
Schnellstart
dotnet add package Aspose.OCR.FOSSDas nachstehende Beispiel erkennt jede Seite eines PDFs mit AsposeOcr.Recognize() und gibt den Text jeder Seite zusammen mit ihren einzelnen erkannten Zeilen und deren Pixelkoordinaten aus.
using Aspose.OCR;
var api = new AsposeOcr();
using var input = new OcrInput(InputType.PDF);
input.Add("document.pdf");
OcrOutput output = api.Recognize(input);
foreach (RecognitionResult page in output)
{
Console.WriteLine(page.RecognitionText);
foreach (RecognitionResult.LinesResult line in page.RecognitionLinesResult)
{
Console.WriteLine($"{line.Line}: {line.TextInLine}");
}
}
Die einzigen unterstützten Eingabetypen sind InputType.SingleImage und InputType.PDF; jeder andere Eingabetyp löst NotSupportedException aus.
Open Source & Lizenzierung
Aspose.OCR FOSS für .NET wird unter der MIT license veröffentlicht. Es kann verwendet, modifiziert und weiterverbreitet werden — auch in kommerziellen Produkten — ohne zusätzliche Lizenzgebühren. Der Quellcode ist verfügbar unter GitHub.