Ядро API

Основной API

На этой странице рассматриваются жизненный цикл объектов и поведение исключений четырёх основных типов: AsposeOcr, OcrInput, OcrOutput и RecognitionResult.


OcrInput Жизненный цикл

OcrInput реализует IDisposable и должен создаваться в using операторе. Его конструктор принимает InputType (InputType.SingleImage или InputType.PDF), а OcrInput.Add(string) ставит в очередь один путь к файлу за раз — один и тот же экземпляр OcrInput может содержать несколько файлов того же типа ввода.

using Aspose.OCR;

using var input = new OcrInput(InputType.SingleImage);
input.Add("page-1.jpg");
input.Add("page-2.png");

Распознавание и чтение OcrOutput

AsposeOcr.Recognize(OcrInput) возвращает OcrOutput, который является List<RecognitionResult> — индексируемым как любой список, с одним RecognitionResult на изображение (для InputType.SingleImage — один на добавленный файл) или на страницу PDF (для InputType.PDF).

var api = new AsposeOcr();
OcrOutput output = api.Recognize(input);
RecognitionResult first = output[0];

RecognitionResult и вложенный тип LinesResult

RecognitionResult.LinesResult является вложенным классом — обращайтесь к нему как к RecognitionResult.LinesResult, а не как к отдельному типу. Каждый RecognitionResult раскрывает:

  • RecognitionText — полный распознанный текст для этого изображения или страницы, строки объединены переводами строк.
  • RecognitionLinesResult — List<RecognitionResult.LinesResult>, одна запись на каждую обнаруженную строку текста, каждая содержит TextInLine (текст строки) и Line (System.Drawing.Rectangle, задающий пиксельные координаты этой строки в исходном изображении).
RecognitionResult result = output[0];
Console.WriteLine(result.RecognitionText);

foreach (RecognitionResult.LinesResult line in result.RecognitionLinesResult)
{
    System.Drawing.Rectangle bounds = line.Line;
    Console.WriteLine($"x={bounds.X}, y={bounds.Y}: {line.TextInLine}");
}

Исключения

AsposeOcr.Recognize(OcrInput) проверяет входные данные перед запуском распознавания:

ConditionException
input — nullArgumentNullException
У input InputType не является SingleImage или PDFNotSupportedException
Путь, добавленный через OcrInput.Add(), не существует на дискеFileNotFoundException

Эти проверки выполняются до любой инференции модели, поэтому некорректный ввод отклоняется сразу, а не после частичного прохода распознавания.


Советы и рекомендации

  • OcrOutput пустой (Count == 0), если у OcrInput не добавлено файлов — проверьте Count перед индексированием.
  • RecognitionResult.LinesResult вложен в RecognitionResult; имя типа верхнего уровня LinesResult само по себе не является разрешимым типом вне этой вложенности.

Распространённые проблемы

ПроблемаПричинаИсправить
ArgumentNullException на Recognize()null был передан вместо OcrInputВсегда создавайте OcrInput перед вызовом Recognize()
NotSupportedException на Recognize()OcrInput был сконструирован с типом входных данных, отличным от SingleImage/PDFТолько InputType.SingleImage и InputType.PDF допустимы
FileNotFoundException на Recognize()Путь в очереди не существуетПроверьте пути к файлам перед вызовом OcrInput.Add()

FAQ

Является ли RecognitionResult.LinesResult собственным классом верхнего уровня?

Нет — он вложен в RecognitionResult. Обращайтесь к нему как к RecognitionResult.LinesResult.

Гарантирует ли OcrOutput порядок страниц для PDF?

Да — для InputType.PDF OcrOutput возвращает один RecognitionResult на страницу в порядке исходного документа.

Что произойдёт, если вызвать Recognize() с пустым OcrInput?

Он возвращает OcrOutput с Count == 0, а не бросает исключение.


API Reference Сводка

Класс/МетодОписание:
AsposeOcr.Recognize(OcrInput)Проверяет и распознаёт; выбрасывает ArgumentNullException, NotSupportedException или FileNotFoundException при недопустимом вводе
OcrInput.OcrInput(InputType)Создаёт контейнер ввода для одного типа ввода
OcrInput.Add(string)Помещает путь к файлу в очередь
OcrInput.Dispose()Освобождает ресурсы (через IDisposable)
OcrOutputList<RecognitionResult> возвращено Recognize()
RecognitionResult.RecognitionTextПолный распознанный текст для одного изображения/страницы
RecognitionResult.RecognitionLinesResultList<RecognitionResult.LinesResult>
RecognitionResult.LinesResult.TextInLineРаспознанный текст для одной строки
RecognitionResult.LinesResult.LineSystem.Drawing.Rectangle ограничивающий прямоугольник для одной строки

См. также:

 Русский