Jak przetwarzać wsadowo wiele obrazów przy użyciu Aspose.OCR FOSS for .NET

Jak przetwarzać wsadowo wiele obrazów przy użyciu Aspose.OCR FOSS for .NET

Aspose.OCR FOSS dla .NET może rozpoznawać kilka obrazów w jednym wywołaniu Recognize(). Ten przewodnik pokazuje, jak umieścić wiele plików w jednej OcrInput i odczytać ich wyniki w kolejności.

Przewodnik krok po kroku

Krok 1: Zainstaluj pakiet

dotnet add package Aspose.OCR.FOSS

Krok 2: Dodaj wiele plików do jednego OcrInput

Wszystkie pliki dodane do tego samego OcrInput muszą mieć ten sam InputType. Są przetwarzane kolejno i zwracane w kolejności, w jakiej zostały dodane.

using Aspose.OCR;

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

Krok 3: Rozpoznaj i odczytaj wyniki w kolejności

Wywołaj AsposeOcr.Recognize() raz dla całej partii, a następnie iteruj OcrOutput po indeksie, aby dopasować każdy wynik do pliku, z którego pochodzi.

OcrOutput output = api.Recognize(input);

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

OcrOutput jest uporządkowaną listą RecognitionResult, z jednym wpisem na każdy obraz w kolejności, w jakiej wywołano OcrInput.Add().


Krok 4: Zamiast tego grupuj wielostronicowy PDF

Ten sam model grupowania zastosowany jest do PDF: skonstruuj OcrInput przy pomocy InputType.PDF, dodaj jedną ścieżkę PDF, a Recognize() zwraca jeden RecognitionResult na stronę, w kolejności stron.

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

Typowe problemy i rozwiązania

Mixing InputType.SingleImage and InputType.PDF ścieżki w jednym OcrInput. Nieobsługiwane — każdy OcrInput jest konstruowany przy użyciu jednego InputType i akceptuje tylko pliki tego typu. Użyj dwóch oddzielnych OcrInput instancji (i dwóch Recognize() wywołań), jeśli musisz przetwarzać zarówno obrazy, jak i pliki PDF razem.

Wyniki pojawiają się w nieprawidłowej kolejności. Nie powinny — OcrOutput zachowuje dokładną kolejność OcrInput.Add() zostało wywołane. Jeśli pliki pojawiają się w innej kolejności, sprawdź, czy kod wywołujący dodaje je w zamierzonym porządku przed wywołaniem Recognize().

Jeden wadliwy plik powoduje niepowodzenie całej partii. Recognize() waliduje każdą zakolejkowaną ścieżkę przed uruchomieniem jakiejkolwiek inferencji modelu; jeśli jakakolwiek ścieżka nie istnieje, całe wywołanie zgłasza błąd FileNotFoundException zamiast pomijać ten plik. Zweryfikuj ścieżki samodzielnie najpierw, jeśli akceptowalne są częściowe wyniki z dużej partii.

Najczęściej zadawane pytania

Czy przetwarzanie wsadowe uruchamia pliki równolegle?

Nie. Pliki i strony PDF są przetwarzane kolejno — nie ma wielowątkowości na poziomie wejścia API. Microsoft.ML.OnnxRuntime paralelizuje pracę tylko wewnątrz każdego pojedynczego wywołania inferencji.

Czy istnieje limit liczby plików, które może pomieścić jeden OcrInput?

Publiczny API nie dokumentuje stałego limitu; OcrInput.Add() po prostu kolejkowuje ścieżkę. Bardzo duże partie są przetwarzane po jednym pliku, więc przepustowość rośnie liniowo, a nie równolegle.

Czy mogę ponownie używać tej samej instancji AsposeOcr w wielu partiach?

Tak — AsposeOcr sam nie przechowuje stanu per-wywołania; tworzenie nowego OcrInput dla każdej partii i wywoływanie Recognize() na tej samej instancji AsposeOcr jest normalnym wzorcem.

Zobacz także

 Polski