如何使用 Aspose.OCR FOSS for .NET 批量处理多个图像
Aspose.OCR FOSS for .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:使用 InputType.PDF 构建 OcrInput,添加一个 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 并在同一个 AsposeOcr 实例上调用 Recognize() 是一种常见模式。