Ядро 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) проверяет входные данные перед запуском распознавания:
| Condition | Exception |
|---|---|
input — null | ArgumentNullException |
У input InputType не является SingleImage или PDF | NotSupportedException |
Путь, добавленный через 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) |
OcrOutput | List<RecognitionResult> возвращено Recognize() |
RecognitionResult.RecognitionText | Полный распознанный текст для одного изображения/страницы |
RecognitionResult.RecognitionLinesResult | List<RecognitionResult.LinesResult> |
RecognitionResult.LinesResult.TextInLine | Распознанный текст для одной строки |
RecognitionResult.LinesResult.Line | System.Drawing.Rectangle ограничивающий прямоугольник для одной строки |