VisioForge

OCR na urządzeniu dla strumieni wideo w .NET

Rozpoznawaj tekst w strumieniach kamer RTSP, kamerach internetowych i plikach wideo z poziomu C#. OCR działa jako blok potoku Media Blocks SDK .NET — na urządzeniu, obok podglądu, nagrywania i streamingu.

OCR wideo to nie OCR obrazów w pętli

Biblioteka OCR do obrazów przyjmuje jedną bitmapę. Aby odczytać nią tekst z kamery lub nagrania, nadal musisz sam zdekodować strumień, wybrać klatki, przekonwertować je, wywołać bibliotekę i zapamiętać, kiedy każda klatka była wyświetlana. W SDK VisioForge OCR jest blokiem potoku wideo: SDK dekoduje źródło, OcrBlock odczytuje przechodzące klatki, a te same klatki trafiają dalej na ekran, do pliku lub do strumienia sieciowego.

Biblioteka OCR do obrazów a OCR w potoku wideo

Typowa biblioteka OCR do obrazówOcrBlock w potoku VisioForge
WejścieBitmapa przekazana przez Twój kodZdekodowane klatki z dowolnego źródła SDK: plik, kamera internetowa, kamera RTSP
Dekodowanie wideoTwój kod, z osobnym dekoderem lub grabberem klatekRobi to potok
Które klatki są odczytywaneWybierasz je i konwertujesz samFramesToSkip; klatki, które przychodzą, gdy OCR jest zajęty, są pomijane i zliczane
Kiedy pojawił się tekstŚledzisz to samZnacznik czasu w każdym zdarzeniu OnTextDetected
Jednoczesne nagrywanie lub streamingOsobny potok wideoTen sam potok: wyjście OcrBlock trafia dalej do enkodera, pliku lub strumienia
Ramki i tekst w wideoRysujesz je samDrawResults

Co daje OCR wewnątrz potoku

OcrBlock jest częścią pakietu VisioForge.DotNet.Core.AI. Ma jedno wejście i jedno wyjście wideo i uruchamia modele PP-OCR na otrzymanych klatkach.

  • Dekodowanie jest zrobione za Ciebie: każde źródło, które otwiera SDK — pliki wideo, kamery internetowe, kamery IP RTSP — zasila OcrBlock bezpośrednio
  • Tekst z czasem i miejscem: każde zdarzenie OnTextDetected zawiera Timestamp klatki oraz dla każdej linii jej Text, Confidence i BoundingBox
  • OCR obok nagrywania i streamingu: klatki opuszczają OcrBlock bez zmian lub z narysowanym tekstem i trafiają dalej do enkodera, pliku lub wyjścia sieciowego w tym samym potoku
  • Na urządzeniu: modele PP-OCR na ONNX Runtime z dostawcą CPU, CUDA, DirectML lub CoreML — bez API w chmurze, bez opłat za wywołanie, wideo zostaje na komputerze
  • Ponad 100 języków: wskaż w RecognitionModelPath i CharacterDictionaryPath model PP-OCR i słownik dla swojego języka; przykłady zawierają model łaciński
  • Wieloplatformowo: Windows, macOS, Linux, Android i iOS z jednej bazy kodu C#; przykład OCR jest dostępny także dla .NET MAUI
  • Koszty pod kontrolą przy wideo na żywo: FramesToSkip = N uruchamia OCR tylko na jednej klatce z N + 1; każde ustawienie i jego wartość domyślna są w przewodniku OCR

Gdzie się to stosuje

Przeszukiwalne nagrania

Wyodrębnij tekst z nagranych wykładów, webinarów i nagrań ekranu wraz ze znacznikiem czasu każdej linii i zaindeksuj go.

Monitorowanie emisji i digital signage

Sprawdzaj, czy belki, paski informacyjne i ekrany digital signage pokazują oczekiwany tekst — na żywo lub w nagraniu.

Linie produkcyjne

Odczytuj numery seryjne, kody partii i drukowane etykiety z kamery stacjonarnej, podczas gdy ten sam strumień jest nagrywany na potrzeby identyfikowalności.

Kamery IP w handlu i magazynach

Odczytuj etykiety półkowe i etykiety produktów z kamer RTSP na miejscu, bez wysyłania wideo do usługi OCR w chmurze.

Przykłady kodu

Na podstawie OCR Text Recognition Demo; gałąź nagrywania łączy enkoder H.264 i sink MP4 tak jak przykłady Media Blocks.

Wyodrębnianie tekstu z pliku wideo ze znacznikami czasu

C#

Odczyt tekstu z kamery RTSP i nagrywanie do MP4

C#

Potok

W przykładzie RTSP OcrBlock znajduje się między kamerą a enkoderem. Rozpoznany tekst wychodzi przez zdarzenie OnTextDetected; klatki trafiają dalej do enkodera H.264 i pliku MP4.

RTSPSourceBlock
OcrBlock
H264EncoderBlock
MP4SinkBlock

Najczęściej zadawane pytania

Czy wideo opuszcza komputer?▼
Nie. OcrBlock uruchamia modele PP-OCR z ONNX Runtime wewnątrz Twojego procesu. Nie ma usługi w chmurze ani klucza API; klatki i rozpoznany tekst pozostają na urządzeniu. Modele to pliki, które dostarczasz razem z aplikacją.
Czym to się różni od biblioteki OCR do obrazów?▼
Biblioteka OCR do obrazów oczekuje, że sam zdekodujesz wideo, wybierzesz klatki i wywołasz ją dla każdej bitmapy. OcrBlock jest częścią potoku, który dekoduje źródło: otrzymuje zdekodowane klatki, pomija je zgodnie z FramesToSkip, zgłasza każdy region ze znacznikiem czasu klatki i przekazuje klatki dalej do renderowania, kodowania lub streamingu.
Czy mogę rozpoznawać tekst i jednocześnie nagrywać strumień?▼
Tak. Połącz wyjście OcrBlock z enkoderem i sinkiem plikowym, jak w powyższym przykładzie RTSP. DrawResults decyduje, czy ramki i tekst zostaną wtopione w nagranie.
Którego SDK potrzebuję?▼
OcrBlock znajduje się w pakiecie VisioForge.DotNet.Core.AI. Używaj go w potoku Media Blocks SDK .NET, gdy budujesz potok samodzielnie, albo dodaj go przez Video_Processing_AddBlock do VideoCaptureCoreX w Video Capture SDK .NET lub do MediaPlayerCoreX w Media Player SDK .NET, gdy Twoja aplikacja jest już oparta na jednym z tych silników.
Czy mogę dostarczać modele OCR w produkcie komercyjnym?▼
SDK uruchamia modele ONNX innych firm i nie zawiera wag modeli w pakiecie NuGet. Modele PP-OCRv5 mobile dołączone do przykładów są na licencji Apache-2.0. Licencja modelu wynika z jego pochodzenia, więc przed dostarczeniem sprawdź licencję każdego innego modelu, jego wag i danych treningowych.
Czy mogę łączyć OCR z innymi blokami AI?▼
Tak. LicensePlateRecognizerBlock, YOLOObjectDetectorBlock i PIIRedactionBlock mają takie samo wejście i wyjście wideo jak OcrBlock, więc łączy się je jeden za drugim w tym samym potoku. Aby ukryć tekst na ekranie zamiast go odczytywać, PIIRedactionBlock rozmywa lub pikselizuje obszary tekstu znalezione przez modele PaddleOCR.