Введение
Aspose.OCR FOSS for .NET — это новая open-source C# библиотека для обнаружения и распознавания текста в растровых изображениях и PDF-документах. Она создана для разработчиков .NET, которым требуется распознавание текста без зависимости от внешнего OCR-сервиса, облачного API или любой проприетарной среды выполнения.
Библиотека лицензирована по MIT и не имеет внешних зависимостей OCR: весь конвейер распознавания — обнаружение строк текста, уточнение регионов и распознавание латинского скрипта — выполняется локально с помощью трёх моделей ONNX, встроенных непосредственно в сборку и исполняемых на CPU через Microsoft.ML.OnnxRuntime. Шаг загрузки модели и сетевой вызов не требуются во время выполнения.
Что включено
Распознавание изображений и PDF через одну точку входа
AsposeOcr.Recognize() является единственной точкой входа для обоих типов ввода. OcrInput создаётся с помощью InputType.SingleImage или InputType.PDF, и один или несколько путей к файлам ставятся в очередь с помощью OcrInput.Add(). Для InputType.PDF каждая страница распознаётся и возвращается в порядке источника.
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);
Текст на уровне строк и пиксельные координаты
Каждый RecognitionResult возвращает полный текст страницы через RecognitionText и отдельные распознанные строки через RecognitionLinesResult — список записей RecognitionResult.LinesResult, каждая из которых содержит TextInLine и System.Drawing.Rectangle в Line, указывающие пиксельные координаты этой строки в исходном изображении.
foreach (RecognitionResult.LinesResult line in result.RecognitionLinesResult)
{
Console.WriteLine($"{line.Line}: {line.TextInLine}");
}
Пакетная обработка нескольких файлов
OcrInput может содержать более одного файла. OcrOutput — возвращаемое значение Recognize() — представляет собой список RecognitionResult, по одному на изображение или страницу PDF, сохраняющий исходный порядок добавления файлов.
using var input = new OcrInput(InputType.SingleImage);
input.Add("page-1.jpg");
input.Add("page-2.png");
OcrOutput output = api.Recognize(input);
Быстрый старт
dotnet add package Aspose.OCR.FOSSПример ниже распознаёт каждую страницу PDF с помощью AsposeOcr.Recognize() и выводит текст каждой страницы вместе с её отдельными распознанными строками и их пиксельными координатами.
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}");
}
}
Единственными поддерживаемыми типами входных данных являются InputType.SingleImage и InputType.PDF; любой другой тип входных данных вызывает NotSupportedException.
Открытый исходный код и лицензирование
Aspose.OCR FOSS для .NET выпущен под лицензией MIT. Его можно использовать, модифицировать и распространять — в том числе в коммерческих продуктах — без дополнительных лицензионных сборов. Исходный код доступен на GitHub.