F_VN_OCRExp
Detects and recognizes characters in a binary image (white characters on black background). (expert function)
Syntax
Definition:
FUNCTION F_VN_OCRExp : HRESULT
VAR_INPUT
ipSrcImage : ITcVnImage;
eModel : ULINT;
ipCharacters : Reference To ITcVnContainer;
sPattern : STRING;
eOcrOptions : UDINT;
ipBoundingBoxes : Reference To ITcVnContainer;
ipConfidences : Reference To ITcVnContainer;
hrPrev : HRESULT;
END_VAR
VAR_OUTPUT
fMinConfidence : REAL;
END_VAR
Inputs
Name |
Type |
Description |
---|---|---|
ipSrcImage |
Source image (USINT, 1 channel, binary) | |
eModel |
ULINT |
Selection of OCR model types (ETcVnOcrModelType) |
ipCharacters |
Reference To ITcVnContainer |
Returns the recognized characters (ContainerType_Vector_String_SINT) |
sPattern |
STRING |
String pattern containing the format in which characters are presented |
eOcrOptions |
UDINT |
Specifies which options must be applied to the function (ETcVnOcrOptions) |
ipBoundingBoxes |
Reference To ITcVnContainer |
Returns the corresponding bounding boxes of the recognized characters (ContainerType_Vector_TcVnRectangle_DINT, optional, set to 0 if not required) |
ipConfidences |
Reference To ITcVnContainer |
Returns the corresponding classification confidences of the recognized characters (ContainerType_Vector_REAL, optional, set to 0 if not required) |
hrPrev |
HRESULT indicating the result of previous operations (If SUCCEEDED(hrPrev) equals false, no operation is executed.) |
Outputs
Name |
Type |
Description |
---|---|---|
fMinConfidence |
REAL |
Returns the minimum value of the confidences |
Weiterführende Informationen
Die Funktion F_VN_OCRExp
ist die Expert-Variante von F_VN_OCR. Sie enthält zusätzliche Parameter.
Parameter
Eingangsbild
Das Eingangsbild was an ipSrcImage
übergeben wird, muss ein 1-kanaliges Binärbild sein. Es sind nur weiße Zeichen auf schwarzem Hintergrund zulässig.
Modell
Die Modell-Typen von ETcVnOcrModelType, die bei einem Funktionsaufruf zur Klassifizierung der Zeichen verwendet werden sollen, müssen an eModel
übergeben werden. Um mehrere Modelle mit einem Funktionsaufruf verwenden zu können, muss ein Zeichenkettenmuster über sPattern
angegeben werden. Die Modelle können mit einem OR
verkettet werden.
Um die einzelnen Modelle verwenden zu können, müssen diese zuvor mit dem Baustein FB_VN_InitializeFunction initialisiert werden.
Erkannte Zeichen
Die erkannten Zeichen werden über die Referenz ipCharacters
zurückgegeben.
Zeichenkettenmuster
Über sPattern
kann ein Zeichenkettenmuster, mit dem erwarteten Format der zu erkennenden Zeichenkette, übergeben werden.
Unterstützte Formatierungen und deren Bedeutung:
!
(Ausrufezeichen) zum Ignorieren von Zeichen (gilt nicht für Leerzeichen).
(Punkt) für ein beliebiges Zeichen (gilt nicht für Leerzeichen)
Die Verwendung des Punkts wird nur mit dem Modell TCVN_OMT_NUMBERS_SC_UCLETTERS unterstützt, ansonsten wirkt sich der Punkt wie ein Ausrufezeichen aus und es wird ein S_FALSE ausgegeben._
(Unterstrich) für ein Leerzeichen (unabhängig voneOcrOptions
)d
(Zahl) für eine erwartete Zahl von0-9
#
(Sonderzeichen) für ein erwartetes Sonderzeichen, unterstützt werden. / - : = +
u
(Großbuchstabe) für einen erwarteten Großbuchstaben vonA-Z
Optionen
Mit eOcrOptions
können Optionen (ETcVnOcrOptions) angegeben werden, die die Funktionsweise und Ergebnisausgabe beeinflussen. Wenn keine Optionen benötigt werden, muss eine 0 übergeben werden.
Bounding Boxes
Über die Referenz ipBoundingBoxes
können optional die entsprechenden Bounding Boxes der erkannten Zeichen zurückgegeben werden. Wenn keine Bounding Boxes benötigt werden, kann der Wert 0 übergeben werden.
Konfidenzen
Über die Referenz ipConfidences
können optional die entsprechenden Klassifizierungskonfidenzen der erkannten Zeichen zurückgegeben werden. Wenn keine Konfidenzen benötigt werden, kann der Wert 0 übergeben werden.
Minimale Konfidenz
Der optionale Rückgabewert fMinConfidence
gibt den minimalen Konfidenz-Wert aller gefundenen Zeichen zurück.
Anwendung
Ein Aufruf der OCRExp-Funktion, mit zwei Modellen zur Erkennung von Zahlen und Großbuchstaben, mit anschließendem String-Export sieht z.B. so aus:
sPattern := 'dd!uuu!dddd'; // e.g. 02-FEB-2024
hr := F_VN_OCRExp(
ipSrcImage := ipBinaryImage,
eModel := TCVN_OMT_NUMBERS OR TCVN_OMT_UCLETTERS,
ipCharacters := ipCharactersResults,
sPattern := sPattern,
eOcrOptions := eOcrOptions,
ipBoundingBoxes := ipBoundingBoxes,
ipConfidences := ipConfidences,
hrPrev := hr,
fMinConfidence => fMinConfidence);
// Export character to string
hr := F_VN_ExportSubContainer_String(ipCharactersResults, 0, sText, 255, hr);
// Get the bounding box of the first element
hr := F_VN_GetAt_TcVnRectangle_DINT(ipBoundingBoxes, stRectangle, 0, hr);
// Get the Confidence value of the first element
hr := F_VN_GetAt_REAL(ipConfidences, fConfidence, 0, hr);
Zur Auswertung der Konfidenz-Werte oder zum Zeichnen von Bounding Boxen kann über GetAt
auf einzelne Elemente der Container zugegriffen werden. Wenn man jedoch auf mehrere oder alle Elemente eines Containers zugreifen möchte, empfiehlt es sich, eine Schleife zu programmieren oder den ipConfidences
Container komplett als Array zu exportieren.
Required License
TC3 Vision OCR
System Requirements
Development environment | Target platform | PLC libraries to include |
---|---|---|
TwinCAT V3.1.4024.59 or later | PC or CX (x64) with PL50, e.g. Intel 4-core Atom CPU | Tc3_Vision |