Как пакетно обрабатывать несколько изображений с помощью Aspose.OCR FOSS for .NET

Как пакетно обрабатывать несколько изображений с помощью Aspose.OCR FOSS for .NET

Aspose.OCR FOSS для .NET может распознавать несколько изображений за один Recognize() вызов. Это руководство показывает, как поставить в очередь несколько файлов в одном OcrInput и получить их результаты в порядке добавления.

Пошаговое руководство

Шаг 1: Установить пакет

dotnet add package Aspose.OCR.FOSS

Шаг 2: Добавить несколько файлов в один OcrInput

Все файлы, добавленные в один и тот же OcrInput, должны иметь одинаковый InputType. Они обрабатываются последовательно и возвращаются в порядке их добавления.

using Aspose.OCR;

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

Шаг 3: Распознавать и считывать результаты в порядке

Вызовите AsposeOcr.Recognize() один раз для всей партии, затем переберите OcrOutput по индексу, чтобы сопоставить каждый результат с файлом, из которого он получен.

OcrOutput output = api.Recognize(input);

for (int index = 0; index < output.Count; index++)
{
    Console.WriteLine($"Image {index + 1}");
    Console.WriteLine(output[index].RecognitionText);
}

OcrOutput — упорядоченный список RecognitionResult, содержащий по одной записи на изображение в порядке, в котором вызывался OcrInput.Add().


Шаг 4: Вместо этого пакетировать многостраничный PDF

Та же модель пакетирования применяется к PDF: сформируйте OcrInput с помощью InputType.PDF, добавьте один путь к PDF, и Recognize() возвращает один RecognitionResult на страницу, в порядке страниц.

using var pdfInput = new OcrInput(InputType.PDF);
pdfInput.Add("multi-page-document.pdf");
OcrOutput pages = api.Recognize(pdfInput);
Console.WriteLine($"Pages recognized: {pages.Count}");

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

Mixing InputType.SingleImage and InputType.PDF пути в один OcrInput. Не поддерживается — каждый OcrInput создаётся с единственным InputType и принимает только файлы этого типа. Используйте два отдельных OcrInput экземпляра (и два Recognize() вызовов), если вам нужно обрабатывать одновременно и изображения, и PDF.

Результаты появляются в неправильном порядке. Они не должны — OcrOutput сохраняет точный порядок OcrInput.Add() был вызван. Если файлы появляются в другом порядке, проверьте, что вызывающий код добавляет их в нужном порядке перед вызовом Recognize().

Один плохой файл приводит к провалу всей партии. Recognize() проверяет каждый поставленный в очередь путь перед запуском любой инференции модели; если любой путь не существует, весь вызов бросает исключение FileNotFoundException вместо пропуска этого файла. Сначала проверьте пути сами, если приемлемы частичные результаты из большой партии.

Часто задаваемые вопросы

Запускает ли пакетная обработка файлы параллельно?

Нет. Файлы и страницы PDF обрабатываются последовательно — на уровне ввода нет многопоточности API. Microsoft.ML.OnnxRuntime параллелизует работу только внутри каждого отдельного вызова инференции.

Есть ли ограничение на количество файлов, которое может содержать один OcrInput?

Публичный API не фиксирует ограничение; OcrInput.Add() просто ставит путь в очередь. Очень большие партии обрабатываются по одному файлу за раз, поэтому пропускная способность масштабируется линейно, а не параллельно.

Могу ли я переиспользовать один и тот же экземпляр AsposeOcr в нескольких партиях?

Да — AsposeOcr сам по себе не хранит состояние между вызовами; создание нового OcrInput для каждой партии и вызов Recognize() на том же экземпляре AsposeOcr — обычный шаблон.

См. также:

 Русский