核心 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) 在运行识别之前会验证其输入:
| Condition | Exception |
|---|---|
input 是 null | ArgumentNullException |
input的 InputType 不是 SingleImage 或 PDF | NotSupportedException |
通过 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.RecognitionLinesResult | List<RecognitionResult.LinesResult> |
RecognitionResult.LinesResult.TextInLine | 识别的一行文本 |
RecognitionResult.LinesResult.Line | System.Drawing.Rectangle 一行的边界框 |