Як пакетно обробляти кілька зображень за допомогою 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 є звичайним шаблоном.