Как работать с Aspose.OCR FOSS Core API в .NET
Aspose.OCR FOSS для .NET распознаёт текст в растровых изображениях и PDF-документах с помощью небольшого ядра API: AsposeOcr, OcrInput, OcrOutput и RecognitionResult. Это руководство проходит процесс установки пакета и использования этого ядра API от начала до конца.
Пошаговое руководство
Шаг 1: Установить пакет
dotnet add package Aspose.OCR.FOSSШаг 2: Импортировать пространство имён
Добавьте пространство имён Aspose.OCR в любой исходный файл, который вызывает AsposeOcr, OcrInput или RecognitionResult:
using Aspose.OCR;Это единственное пространство имён предоставляет AsposeOcr, OcrInput, OcrOutput, InputType и RecognitionResult.
Шаг 3: Создать OcrInput и распознать изображение
Создать AsposeOcr, построить OcrInput с InputType.SingleImage, поставить файл в очередь с помощью OcrInput.Add() и вызвать AsposeOcr.Recognize().
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);Шаг 4: Читать отдельные строки и ограничивающие рамки
Каждая запись RecognitionResult.LinesResult в RecognitionLinesResult содержит текст строки (TextInLine) и её ограничивающий прямоугольник в пиксельных координатах (Line).
foreach (RecognitionResult.LinesResult line in result.RecognitionLinesResult)
{
System.Drawing.Rectangle bounds = line.Line;
Console.WriteLine($"x={bounds.X}, y={bounds.Y}: {line.TextInLine}");
}Шаг 5: Распознать многостраничный PDF
Для InputType.PDF AsposeOcr.Recognize() возвращает один RecognitionResult на страницу в порядке исходного расположения.
using var pdfInput = new OcrInput(InputType.PDF);
pdfInput.Add("document.pdf");
OcrOutput output = api.Recognize(pdfInput);
foreach (RecognitionResult page in output)
{
Console.WriteLine(page.RecognitionText);
}Распространённые проблемы и решения
NotSupportedException при вызове Recognize(). Эта OcrInput был построен с типом ввода, отличным от InputType.SingleImage or InputType.PDF. Поддерживаются только эти два типа ввода.
FileNotFoundException при вызове Recognize(). Путь, добавленный через OcrInput.Add() не существует на диске. Проверьте путь перед вызовом Add().
ArgumentNullException при вызове Recognize(). null было передано вместо OcrInput экземпляр. Всегда создавайте OcrInput сначала.
Empty RecognitionLinesResult. Не обнаружена строка текста — подтвердите, что исходное изображение содержит разборчивый, не повернутый текст латинского алфавита.
Часто задаваемые вопросы
Сохраняет ли OcrOutput порядок файлов?
Да. OcrOutput — это список RecognitionResult, по одному на изображение (или на страницу PDF), в порядке, в котором файлы были добавлены через OcrInput.Add().
Нужно ли мне освобождать OcrInput?
Да — OcrInput реализует IDisposable. Используйте оператор using или вызовите Dispose() явно после завершения распознавания.
Могу ли я обрабатывать и изображения, и PDF в одном OcrInput?
Нет — каждый OcrInput создаётся с одним InputType (SingleImage или PDF) и принимает только файлы этого типа.