Come elaborare in batch più immagini con Aspose.OCR FOSS for .NET
Aspose.OCR FOSS per .NET può riconoscere diverse immagini in una singola chiamata Recognize(). Questa guida mostra come mettere in coda più file in un unico OcrInput e leggere i loro risultati nell’ordine.
Guida passo-passo
Passo 1: Installa il pacchetto
dotnet add package Aspose.OCR.FOSSPasso 2: Aggiungi più file a un OcrInput
Tutti i file aggiunti allo stesso OcrInput devono condividere lo stesso InputType. Vengono elaborati in sequenza e restituiti nell’ordine in cui sono stati aggiunti.
using Aspose.OCR;
var api = new AsposeOcr();
using var input = new OcrInput(InputType.SingleImage);
input.Add("page-1.jpg");
input.Add("page-2.png");Passo 3: Riconoscere e leggere i risultati in ordine
Chiama AsposeOcr.Recognize() una volta per l’intero batch, poi itera OcrOutput per indice per associare ogni risultato al file da cui proviene.
OcrOutput output = api.Recognize(input);
for (int index = 0; index < output.Count; index++)
{
Console.WriteLine($"Image {index + 1}");
Console.WriteLine(output[index].RecognitionText);
}OcrOutput è una lista ordinata di RecognitionResult, con una voce per immagine nell’ordine in cui OcrInput.Add() è stato chiamato.
Passo 4: Eseguire il batch di un PDF multi-pagina invece
Lo stesso modello di batching si applica a un PDF: costruisci OcrInput con InputType.PDF, aggiungi un percorso PDF, e Recognize() restituisce un RecognitionResult per pagina, nell’ordine delle pagine.
using var pdfInput = new OcrInput(InputType.PDF);
pdfInput.Add("multi-page-document.pdf");
OcrOutput pages = api.Recognize(pdfInput);
Console.WriteLine($"Pages recognized: {pages.Count}");Problemi comuni e soluzioni
Mixing InputType.SingleImage and InputType.PDF percorsi in uno OcrInput. Non supportato — ciascuno OcrInput viene costruito con un singolo InputType e accetta solo file di quel tipo. Usa due distinti OcrInput istanze (e due Recognize() chiamate) se devi elaborare sia le immagini sia i PDF insieme.
I risultati appaiono fuori ordine. Non dovrebbero — OcrOutput preserva l’ordine esatto OcrInput.Add() è stato chiamato. Se i file appaiono riordinati, verifica che il codice chiamante li aggiunga nell’ordine previsto prima della chiamata Recognize().
Un file difettoso fa fallire l’intero batch. Recognize() convalida ogni percorso in coda prima di eseguire qualsiasi inferenza del modello; se qualche percorso non esiste, l’intera chiamata genera un’eccezione FileNotFoundException invece di saltare quel file. Convalida prima i percorsi tu stesso se sono accettabili risultati parziali da un batch di grandi dimensioni.
Domande Frequenti
Il batching esegue i file in parallelo?
No. I file e le pagine PDF sono elaborati sequenzialmente — non esiste multithreading a livello di input API. Microsoft.ML.OnnxRuntime parallelizza il lavoro solo all’interno di ogni singola chiamata di inferenza.
Esiste un limite al numero di file che un OcrInput può contenere?
Il API pubblico non documenta un limite fisso; OcrInput.Add() semplicemente accoda un percorso. Batch molto grandi sono elaborati un file alla volta, quindi il throughput scala linearmente, non in parallelo.
Posso riutilizzare la stessa istanza di AsposeOcr per più batch?
Sì — AsposeOcr di per sé non conserva alcuno stato per chiamata; costruire un nuovo OcrInput per ogni batch e chiamare Recognize() sulla stessa istanza di AsposeOcr è un pattern normale.