Class OcrBlock
- Namespace
- VisioForge.Core.MediaBlocks.AI
- Assembly
- VisioForge.Core.AI.dll
An OCR (optical character recognition) media block that recognizes text in video frames using a multi-stage PaddleOCR (PP-OCR) ONNX pipeline. Implements the VisioForge.Core.MediaBlocks.MediaBlock. Implements the VisioForge.Core.MediaBlocks.IMediaBlockInternals.
public class OcrBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternalsInheritance
-
MediaBlock
Implements
-
IMediaBlockIMediaBlockInternals
Inherited Members
-
MediaBlock._isBuiltMediaBlock._pipelineMediaBlock._pipelineCtxMediaBlock.GetPipelineContext()MediaBlock.SetPipelineContext(BlockPipelineContext)MediaBlock.SetPipeline(MediaBlocksPipeline)MediaBlock.ContextMediaBlock.NameMediaBlock.IsBuiltMediaBlock.OwnerMediaBlock.TypeMediaBlock.IDMediaBlock.InputMediaBlock.InputsMediaBlock.OutputMediaBlock.OutputsMediaBlock.HasInputsMediaBlock.HasOutputsMediaBlock.Build()MediaBlock.CreateElements()MediaBlock.AddElementsToPipeline()MediaBlock.RemoveElementsFromPipeline()MediaBlock.DeepCopy(string)MediaBlock.Reset()MediaBlock.ToYAMLBlock()MediaBlock.ClearPads()MediaBlock.Dispose(bool)MediaBlock.Dispose()
Remarks
Taps RGBA frames via an internal sample grabber, runs text detection → optional angle classification → recognition on each processed frame, optionally draws the recognized regions into the frame, and raises VisioForge.Core.MediaBlocks.AI.OcrBlock.OnTextDetected for every frame that yields at least one region. Inference runs on the pipeline's streaming thread; use VisioForge.Core.Types.X.AI.OcrSettings.FramesToSkip to reduce the OCR rate on live video.
Constructors
OcrBlock(OcrSettings)
Initializes a new instance of the VisioForge.Core.MediaBlocks.AI.OcrBlock class.
public OcrBlock(OcrSettings settings)Parameters
settingsOcrSettings-
The OCR settings. Must specify valid detection and recognition model paths and a character dictionary.
Exceptions
- ArgumentNullException
-
Thrown when
settingsisnull.
Properties
ActiveProvider
Gets the execution provider that the OCR sessions actually engaged. Valid after the block has been built; reports VisioForge.Core.Types.X.AI.OnnxExecutionProvider.CPU otherwise.
public OnnxExecutionProvider ActiveProvider { get; }Property Value
- OnnxExecutionProvider
DroppedFrameCount
Gets the number of frames that arrived while the background OCR worker was still busy and were therefore skipped for recognition (the live video is unaffected). A high value relative to the frame rate means OCR cannot keep up; raise VisioForge.Core.Types.X.AI.OcrSettings.FramesToSkip or use a faster execution provider.
public long DroppedFrameCount { get; }Property Value
Input
Gets the primary input pad.
public override MediaBlockPad Input { get; }Property Value
- MediaBlockPad
Inputs
Gets the array of all input pads.
public override MediaBlockPad[] Inputs { get; }Property Value
- MediaBlockPad[]
LastInferenceTimeMs
Gets the wall-clock time, in milliseconds, the most recent OCR run took (detection + optional angle classification + recognition). OCR runs on a background thread; use this to tune VisioForge.Core.Types.X.AI.OcrSettings.FramesToSkip to the hardware.
public float LastInferenceTimeMs { get; }Property Value
Output
Gets the primary output pad.
public override MediaBlockPad Output { get; }Property Value
- MediaBlockPad
Outputs
Gets the array of all output pads.
public override MediaBlockPad[] Outputs { get; }Property Value
- MediaBlockPad[]
Type
Gets the type of the media block.
public override MediaBlockType Type { get; }Property Value
- MediaBlockType
Methods
Build()
Constructs the internal GStreamer elements and pads for this block.
public override bool Build()Returns
- bool
-
trueif successful,falseotherwise.
CleanUp()
Cleans up internal resources, specifically the GStreamer element.
public void CleanUp()Dispose(bool)
Releases unmanaged and - optionally - managed resources.
protected override void Dispose(bool disposing)Parameters
disposingbool-
trueto release both managed and unmanaged resources;falseto release only unmanaged resources.
GetCore()
Gets the core GStreamer element wrapped by this block.
public BaseElement GetCore()Returns
- BaseElement
-
The VisioForge.Core.GStreamer.Base.BaseElement wrapper, or
nullif not built yet.
GetElement()
Gets the GStreamer element instance.
public Element GetElement()Returns
- Element
-
The Gst.Element, or
nullif not built yet.
IMediaBlockInternals.SetContext(MediaBlocksPipeline)
Sets the pipeline context for this block.
void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline)Parameters
pipelineMediaBlocksPipeline-
The pipeline.
OnTextDetected
Event raised when one or more text regions are recognized in a video frame.
public event EventHandler<OcrTextDetectedEventArgs> OnTextDetectedEvent Type
- EventHandler<OcrTextDetectedEventArgs>
See Also
-
MediaBlockIMediaBlockInternals