VisioForge

.NET 视频流本地 OCR

在 C# 中识别 RTSP 摄像头流、网络摄像头和视频文件中的文字。OCR 作为 Media Blocks SDK .NET 管道中的一个模块运行——在设备本地,与预览、录制和推流同时进行。

每年 €500 起 · Lifetime 许可证 €1,500 起

视频 OCR 不是循环调用图像 OCR

图像 OCR 库一次只接收一张位图。用它从摄像头或录像中读取文字,你仍需自己解码视频流、挑选并转换帧、调用库,并记录每一帧显示的时间。在 VisioForge SDK 中,OCR 是视频管道中的一个模块:SDK 解码源,OcrBlock 读取经过的帧,同样的帧继续送往屏幕、文件或网络流。

图像 OCR 库与视频管道内 OCR 对比

典型的图像 OCR 库VisioForge 管道中的 OcrBlock
输入由你的代码传入的位图来自任意 SDK 源(文件、网络摄像头、RTSP 摄像头)的已解码帧
视频解码由你的代码借助单独的解码器或抓帧工具完成由管道完成
读取哪些帧由你挑选并转换FramesToSkip;OCR 忙碌时到达的帧会被跳过并计数
文字出现的时间需要你自己记录每个 OnTextDetected 事件都带有时间戳
同时录制或推流需要另一条视频管道同一条管道:OcrBlock 的输出继续送往编码器、文件或流
视频中的框和文字由你自己绘制DrawResults

管道内 OCR 带来的好处

OcrBlock 包含在 VisioForge.DotNet.Core.AI 包中。它有一个视频输入和一个视频输出,对收到的帧运行 PP-OCR 模型。

  • 解码已由 SDK 完成:SDK 能打开的任何源——视频文件、网络摄像头、RTSP IP 摄像头——都可直接接入 OcrBlock
  • 带时间和位置的文字:每个 OnTextDetected 事件包含帧的 Timestamp,以及每一行的 Text、Confidence 和 BoundingBox
  • OCR 与录制、推流并行:帧离开 OcrBlock 时保持原样或已绘制文字,并在同一管道中继续送往编码器、文件或网络输出
  • 在设备本地运行:PP-OCR 模型基于 ONNX Runtime,可使用 CPU、CUDA、DirectML 或 CoreML 提供程序——无需云 API,没有按次计费,视频不离开本机
  • 支持 100 多种语言:将 RecognitionModelPath 和 CharacterDictionaryPath 指向对应语言的 PP-OCR 模型和字典;示例附带拉丁文模型
  • 跨平台:一套 C# 代码支持 Windows、macOS、Linux、Android 和 iOS;OCR 示例也提供 .NET MAUI 版本
  • 控制实时视频的开销:FramesToSkip = N 时每 N + 1 帧运行一次 OCR;每项设置及其默认值见 OCR 指南

应用场景

可检索的录像

提取课程、网络研讨会和录屏中的文字,附上每一行的时间戳并建立索引。

广播与数字标牌监测

在直播画面或录像中检查字幕条、滚动字幕和数字标牌是否显示了预期文字。

生产线

用固定摄像头读取序列号、批次号和印刷标签,同时录制同一路视频流用于追溯。

零售与仓库中的 IP 摄像头

在现场通过 RTSP 摄像头读取货架标签和产品标签,无需把视频发送到云端 OCR 服务。

代码示例

基于 OCR Text Recognition Demo 编写;录制分支按 Media Blocks 示例的方式连接 H.264 编码器和 MP4 输出。

提取视频文件中的文字及时间戳

C#

读取 RTSP 摄像头中的文字并录制为 MP4

C#

管道

在 RTSP 示例中,OcrBlock 位于摄像头和编码器之间。识别出的文字通过 OnTextDetected 事件输出;帧继续送往 H.264 编码器和 MP4 文件。

RTSPSourceBlock
OcrBlock
H264EncoderBlock
MP4SinkBlock

常见问题

视频会离开本机吗?▼
不会。OcrBlock 在你的进程内通过 ONNX Runtime 运行 PP-OCR 模型。没有云服务,也不需要 API 密钥;帧和识别出的文字都留在设备上。模型是随应用一起分发的文件。
这与图像 OCR 库有什么不同?▼
使用图像 OCR 库时,你需要自己解码视频、挑选帧并逐张位图调用它。OcrBlock 是负责解码源的管道的一部分:它接收已解码的帧,按 FramesToSkip 跳帧,报告每个区域及其所在帧的时间戳,并把帧继续交给渲染、编码或推流。
能否在识别文字的同时录制视频流?▼
可以。像上面的 RTSP 示例那样,把 OcrBlock 的输出连接到编码器和文件输出即可。是否把框和文字烧录进录像由 DrawResults 决定。
我需要哪个 SDK?▼
OcrBlock 位于 VisioForge.DotNet.Core.AI 包中。自行搭建管道时,在 Media Blocks SDK .NET 管道中使用它;如果应用已经基于采集或播放引擎构建,则通过 Video_Processing_AddBlock 将其添加到 Video Capture SDK .NET 的 VideoCaptureCoreX 或 Media Player SDK .NET 的 MediaPlayerCoreX。
能否在商业产品中分发 OCR 模型?▼
SDK 运行第三方 ONNX 模型,NuGet 包中不包含模型权重。示例附带的 PP-OCRv5 mobile 模型采用 Apache-2.0 许可。模型的许可取决于其来源,因此在分发其他模型之前,请核实该模型、其权重及训练数据的许可。
能否将 OCR 与其他 AI 模块组合使用?▼
可以。LicensePlateRecognizerBlock、YOLOObjectDetectorBlock 和 PIIRedactionBlock 与 OcrBlock 具有相同的视频输入和输出,因此可以在同一条管道中依次串联。如果要隐藏屏幕上的文字而不是读取它,PIIRedactionBlock 会对 PaddleOCR 模型找到的文字区域进行模糊或马赛克处理。