核心 API

核心 API

本页介绍四种核心类型的对象生命周期和异常行为:AsposeOcr、OcrInput、OcrOutput和RecognitionResult。


OcrInput 生命周期

OcrInput 实现了 IDisposable,应在 using 语句中创建。它的构造函数接受一个 InputType(InputType.SingleImage 或 InputType.PDF),并且 OcrInput.Add(string) 每次排队一个文件路径——同一 OcrInput 实例可以容纳多个相同输入类型的文件。

using Aspose.OCR;

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

识别和读取 OcrOutput

AsposeOcr.Recognize(OcrInput) 返回一个 OcrOutput,它是一个 List<RecognitionResult>——可以像任何列表一样索引,每个图像对应一个 RecognitionResult(对于 InputType.SingleImage,每个添加的文件对应一个),或每个 PDF 页面对应一个(对于 InputType.PDF)。

var api = new AsposeOcr();
OcrOutput output = api.Recognize(input);
RecognitionResult first = output[0];

RecognitionResult 与嵌套的 LinesResult 类型

RecognitionResult.LinesResult 是一个嵌套类——请引用为 RecognitionResult.LinesResult,而不是作为独立类型。每个 RecognitionResult 暴露:

  • RecognitionText — 该图像或页面的完整识别文本,行之间以换行符连接。
  • RecognitionLinesResult — 一个 List<RecognitionResult.LinesResult>,每个检测到的文本行对应一个条目,每个条目包含 TextInLine(该行的文本)和 Line(一个 System.Drawing.Rectangle,提供该行在源图像中的像素坐标)。
RecognitionResult result = output[0];
Console.WriteLine(result.RecognitionText);

foreach (RecognitionResult.LinesResult line in result.RecognitionLinesResult)
{
    System.Drawing.Rectangle bounds = line.Line;
    Console.WriteLine($"x={bounds.X}, y={bounds.Y}: {line.TextInLine}");
}

异常

AsposeOcr.Recognize(OcrInput) 在运行识别之前会验证其输入:

ConditionException
input 是 nullArgumentNullException
input的 InputType 不是 SingleImage 或 PDFNotSupportedException
通过 OcrInput.Add() 添加的路径在磁盘上不存在FileNotFoundException

这些检查在任何模型推理之前运行,因此错误的输入会立即失败,而不是在部分识别后才失败。


提示与最佳实践

  • OcrOutput 在 OcrInput 未添加任何文件时为空(Count == 0)——在索引之前检查 Count。
  • RecognitionResult.LinesResult 嵌套在 RecognitionResult 中;仅有的顶层类型名称 LinesResult 在该嵌套之外不是可解析的类型。

常见问题

问题原因修复
ArgumentNullException 在 Recognize()null 被传递,而不是 OcrInput始终在调用 Recognize() 之前构造一个 OcrInput
NotSupportedException 在 Recognize()OcrInput 使用了非 SingleImage/PDF 的输入类型进行构造仅 InputType.SingleImage 和 InputType.PDF 有效
FileNotFoundException 在 Recognize()排队的路径不存在在调用 OcrInput.Add() 之前验证文件路径

FAQ

RecognitionResult.LinesResult 是它自己的顶层类吗?

不 — 它嵌套在 RecognitionResult 中。请将其引用为 RecognitionResult.LinesResult。

OcrOutput 是否保证 PDF 的页面顺序?

是 — 对于 InputType.PDF,OcrOutput 按源顺序为每页返回一个 RecognitionResult。

如果我使用空的 OcrInput 调用 Recognize() 会怎样?

它返回一个带有 Count == 0 的 OcrOutput,而不是抛出异常。


API Reference 摘要

类/方法描述
AsposeOcr.Recognize(OcrInput)验证并识别;在输入无效时抛出 ArgumentNullException、NotSupportedException 或 FileNotFoundException
OcrInput.OcrInput(InputType)为一种输入类型构建输入容器
OcrInput.Add(string)将文件路径排入队列
OcrInput.Dispose()释放资源(通过 IDisposable)
OcrOutput由 Recognize() 返回的 List<RecognitionResult>
RecognitionResult.RecognitionText单个图像/页面的完整识别文本
RecognitionResult.RecognitionLinesResultList<RecognitionResult.LinesResult>
RecognitionResult.LinesResult.TextInLine识别的一行文本
RecognitionResult.LinesResult.LineSystem.Drawing.Rectangle 一行的边界框

另请参阅

 中文