Введение

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.


Начало работы

Связанные ресурсы