1. 产品
  2.   Aspose.OCR
  3.   Aspose.OCR FOSS for .NET

.NET 的 Aspose.OCR FOSS

开源 .NET 库,用于检测和识别图像和 PDF 文档中的文本。采用 MIT 许可证,使用嵌入式 ONNX 模型离线运行。

开源 .NET 库用于文本检测和识别

Aspose.OCR FOSS for .NET 是一个免费、MIT 许可证的 C# 库,用于检测和识别
光栅图像和 PDF 文档中的文本,无需外部 OCR 软件或
服务。整个流水线——文本行检测、区域细化和拉丁脚本
识别——通过直接嵌入程序集的三个 ONNX 模型在本地运行,并
通过 Microsoft.ML.OnnxRuntime 在 CPU 上执行;运行时不需要下载模型,也不需要网络调用
。API 以 AsposeOcr.Recognize() 为核心,该方法接受一个
OcrInput,该输入由一个或多个文件构建(InputType.SingleImage 或 InputType.PDF),并
返回 OcrOutput——每个图像或 PDF 页面对应一个 RecognitionResult,按源顺序排列。
每个 RecognitionResult 通过 RecognitionText 暴露完整的页面文本,
并通过 RecognitionLinesResult 暴露各个识别行及其像素坐标的边界框。 PDF 页面在内部渲染(通过 Aspose.PDF.FOSS)` 在识别之前),
因此不需要单独的 PDF 转图像步骤。Aspose.OCR FOSS 针对
.NET 使用 MIT 许可证。使用 dotnet add package Aspose.OCR.FOSS 安装。对于
企业产品系列,请参阅
Aspose.OCR — Enterprise Product Family。

识别图像和 PDF 中的文本

  • AsposeOcr.Recognize(OcrInput) 是同时处理图像和 PDF 的唯一入口点
  • OcrInput 接受 InputType.SingleImage 或 InputType.PDF;添加一个或多个文件
    路径使用 OcrInput.Add()
  • 对于 InputType.PDF,每一页都会被识别并按源顺序返回
  • 结果是一个 OcrOutput —— 每个图像或 PDF 页对应一个 RecognitionResult

文本识别的使用场景

  • 将扫描文档数字化为可搜索、可复制的文本
  • 从没有嵌入文本层的扫描 PDF 中提取文本
  • 在批处理管道中处理扫描的表单、收据和发票
  • 为全文搜索索引大量扫描图像档案

行级文本和边界框

  • RecognitionResult.RecognitionText 返回完整的识别页面文本
  • RecognitionResult.RecognitionLinesResult 为每个检测到的文本行返回一个 RecognitionResult.LinesResult 每个检测到的文本行
  • 每个 RecognitionResult.LinesResult.TextInLine 保存该行的识别文本
  • 每个 RecognitionResult.LinesResult.Line 是一个 System.Drawing.Rectangle,提供该行在源图像中的像素坐标 在源图像中的像素坐标

使用行级数据的地方

  • 在源图像上绘制已识别区域的叠加层
  • 在扫描页上构建可搜索的文本层
  • 在质量检查期间审查每行识别准确性
  • 基于行坐标驱动编辑或注释工具

完全离线运行,无外部服务

  • 所有三个 ONNX 模型(检测、细化、Latin 识别)均嵌入为程序集资源——无需单独下载
  • 识别完全在本地 CPU 上通过 Microsoft.ML.OnnxRuntime 运行
  • OcrInput 可以容纳多个文件;OcrOutput 保持它们的原始顺序
  • 支持的输入类型仅为 InputType.SingleImage 和 InputType.PDF——任何其他输入类型都会抛出 NotSupportedException

离线识别重要之处

  • 空气隔离或受监管的环境,文档不能离开网络
  • 在构建期间没有外部网络访问的 CI/CD 流水线
  • 高批量批处理识别,担心每次调用的云 OCR 定价
  • 本地部署的文档处理,具有可预测的仅本地延迟

在 PDF 文档中识别文本

识别 PDF 的每一页并按源顺序打印每页的文本。

using Aspose.OCR;
var api = new AsposeOcr();
using var input = new OcrInput(InputType.PDF);
input.Add("document.pdf");
OcrOutput output = api.Recognize(input);
foreach (RecognitionResult page in output)
{
    Console.WriteLine(page.RecognitionText);
}

在单张图像中识别文本

识别单个光栅图像并打印其识别文本。

using Aspose.OCR;
var api = new AsposeOcr();
using var input = new OcrInput(InputType.SingleImage);
input.Add("scan.png");
RecognitionResult result = api.Recognize(input)[0];
Console.WriteLine(result.RecognitionText);

读取已识别的行及其边界框

遍历识别的行并打印每行的文本以及其像素坐标。

using Aspose.OCR;
var api = new AsposeOcr();
using var input = new OcrInput(InputType.SingleImage);
input.Add("document.jpg");
RecognitionResult result = api.Recognize(input)[0];
foreach (RecognitionResult.LinesResult line in result.RecognitionLinesResult)
{
    System.Drawing.Rectangle bounds = line.Line;
    Console.WriteLine($"x={bounds.X}, y={bounds.Y}, width={bounds.Width}, height={bounds.Height}: {line.TextInLine}");
}

常见问题

许可模式是什么?

Aspose.OCR FOSS for .NET 是 MIT 许可证的。您可以使用、修改和重新分发它,包括在商业产品中,而无需额外的许可费用。

我该如何安装 Aspose.OCR FOSS for .NET?

请参阅上面的安装章节以获取当前的安装命令。

它能识别哪些语言?

拉丁文脚本文本。没有语言选择参数,嵌入式识别模型不支持非拉丁脚本。

它需要互联网连接吗?

不。所有三个 ONNX 模型(检测、细化、识别)都嵌入在程序集里,并通过 Microsoft.ML.OnnxRuntime 本地运行。

我可以在一次调用中识别多个文件吗?

是的 — 在调用 AsposeOcr.Recognize() 之前,将多个文件添加到同一个 OcrInput 中。返回的 OcrOutput 会保留它们的顺序。

  

支持和学习资源

 中文