Como Processar em Lote Múltiplas Imagens com Aspose.OCR FOSS for .NET
Aspose.OCR FOSS para .NET pode reconhecer várias imagens em uma chamada Recognize(). Este guia mostra como enfileirar vários arquivos em uma única OcrInput e ler de volta seus resultados na ordem.
Guia passo a passo
Etapa 1: Instalar o pacote
dotnet add package Aspose.OCR.FOSSEtapa 2: Adicionar vários arquivos a um OcrInput
Todos os arquivos adicionados ao mesmo OcrInput devem compartilhar o mesmo InputType. Eles são processados sequencialmente e retornados na ordem em que foram adicionados.
using Aspose.OCR;
var api = new AsposeOcr();
using var input = new OcrInput(InputType.SingleImage);
input.Add("page-1.jpg");
input.Add("page-2.png");Etapa 3: Reconhecer e Ler Resultados em Ordem
Chame AsposeOcr.Recognize() uma vez para todo o lote, depois itere OcrOutput por índice para associar cada resultado ao arquivo de origem.
OcrOutput output = api.Recognize(input);
for (int index = 0; index < output.Count; index++)
{
Console.WriteLine($"Image {index + 1}");
Console.WriteLine(output[index].RecognitionText);
}OcrOutput é uma lista ordenada de RecognitionResult, com uma entrada por imagem na ordem em que OcrInput.Add() foi chamado.
Etapa 4: Agrupar um PDF de Múltiplas Páginas Em Vez Disso
O mesmo modelo de agrupamento se aplica a um PDF: construa OcrInput com InputType.PDF, adicione um caminho de PDF, e Recognize() retorna um RecognitionResult por página, na ordem das páginas.
using var pdfInput = new OcrInput(InputType.PDF);
pdfInput.Add("multi-page-document.pdf");
OcrOutput pages = api.Recognize(pdfInput);
Console.WriteLine($"Pages recognized: {pages.Count}");Problemas Comuns e Soluções
Mixing InputType.SingleImage and InputType.PDF caminhos em um OcrInput. Não suportado — cada OcrInput é construído com um único InputType e aceita apenas arquivos desse tipo. Use dois separados OcrInput instâncias (e duas Recognize() chamadas) se precisar processar imagens e PDFs juntos.
Os resultados aparecem fora de ordem. Eles não deveriam — OcrOutput preserva a ordem exata OcrInput.Add() foi chamado. Se os arquivos aparecerem reordenados, verifique se o código que faz a chamada os adiciona na ordem pretendida antes de chamar Recognize().
Um arquivo com problema falha todo o lote. Recognize() valida cada caminho enfileirado antes de executar qualquer inferência de modelo; se algum caminho não existir, toda a chamada lança uma exceção FileNotFoundException em vez de pular esse arquivo. Valide os caminhos você mesmo primeiro se resultados parciais de um grande lote forem aceitáveis.
Perguntas Frequentes
A execução em lote processa arquivos em paralelo?
Não. Arquivos e páginas PDF são processados sequencialmente — não há multithreading ao nível de entrada API. Microsoft.ML.OnnxRuntime paraleliza o trabalho apenas dentro de cada chamada de inferência individual.
Existe um limite de quantos arquivos um OcrInput pode conter?
A API pública não documenta um limite fixo; OcrInput.Add() simplesmente enfileira um caminho. Lotes muito grandes são processados um arquivo por vez, portanto a taxa de transferência escala linearmente, não em paralelo.
Posso reutilizar a mesma instância de AsposeOcr em vários lotes?
Sim — AsposeOcr não possui estado por chamada; construir um novo OcrInput para cada lote e chamar Recognize() na mesma instância de AsposeOcr é um padrão normal.