# OCR This page is about WaspLib's OCR. - - - ## TPixelFont `TPixelFont` is the built-in Simba record that holds a font data. It might be worth checking Simba documentation or source code for more information on them but all you need to know as far as WaspLib is concerned is that they "hold" you a font. WaspLib extends `TPixelFont` to make make handling glyphs that are equal but represent different characters easier, for example, `O` and `0` or `l` and `I`. Characters like these often share the same glyphs in some fonts so the following methods try to give you tools to handle those scenarios. - - - ### TPixelFont.SameGlyph ```pascal function TPixelFont.SameGlyph(const a, b: Char): Boolean; ``` Compares `a` to `b` on the current `TPixelFont` and returns whether they share the same glyph or not. Example: ``` {$I WaspLib/main.simba} begin WriteLn Fonts.PLAIN_11.SameGlyph('O', '0'); WriteLn Fonts.QUILL.SameGlyph('O', '0'); end. ``` - - - ### TPixelFont.SameText ```pascal function TPixelFont.SameText(const s1, s2: String): Boolean; ``` Compares `s1` to `s2` on the current `TPixelFont` and returns whether their glyphs look the same. Example: ``` {$I WaspLib/main.simba} begin WriteLn Fonts.PLAIN_11.SameText('I AM lOCO', 'l AM I0C0'); WriteLn Fonts.QUILL.SameText('I AM lOCO', 'l AM I0C0'); end. ``` - - - ### TPixelFont.ReplaceAlignedGlyphs ```pascal function TPixelFont.ReplaceAlignedGlyphs(const s1, s2: String): String; ``` This will return a string with each character on `s1` replaced with the corresponding character of `s2` if the glyphs match. You can see this as a way to correct a string that may be read wrong if you know in advance what it should be. Example: ``` {$I WaspLib/main.simba} var str: String; begin str := 'l AM I0C0'; WriteLn Fonts.PLAIN_11.ReplaceAlignedGlyphs(str, 'I AM lOCO'); WriteLn Fonts.QUILL.ReplaceAlignedGlyphs(str, 'I AM lOCO'); end. ``` This should give you this result: ``` Succesfully compiled in 822.91 milliseconds. [00:00:01:0262]:[Client]: Client was resized, updating coordinates. I AM lOCO l AM I0C0 Succesfully executed in 537.23 milliseconds. ``` - - - ### TPixelFont.NormalizeGlyphs ```pascal function TPixelFont.NormalizeGlyphs(const str, normalized: String): String; ``` This will replace each character on `str` with the first character that has a matching glyph on `normalized`. You can see this as a way to correct a string that may be read wrong if you don't know exactly what it should be. For example, here is a way you could use to correct numbers: ``` {$I WaspLib/main.simba} var str: String; begin str := '10O0-OOO0-9O092'; //2nd param has all the valid characters for numbers WriteLn Fonts.PLAIN_11.NormalizeGlyphs(str, '0123456789'); WriteLn Fonts.QUILL.NormalizeGlyphs(str, '0123456789'); end. ``` This should give you this result: ``` Succesfully compiled in 815.96 milliseconds. [00:00:01:0262]:[Client]: Client was resized, updating coordinates. 1000-0000-90092 10O0-OOO0-9O092 Succesfully executed in 525.14 milliseconds. ``` - - - ## TOCR Record wrapping TPixelOCR with convenience methods for text recognition. - - - ### OCR.RecognizeStatic ```pascal function TOCR.RecognizeStatic(bounds: TBox; constref font: TPixelFont; colors: TColorArray; tolerance: Single): String; ``` Recognizes static text (non-moving) within bounds using specified font and colors. - - - ### OCR.RecognizeStaticInvert ```pascal function TOCR.RecognizeStaticInvert(bounds: TBox; constref font: TPixelFont; colors: TColorArray): String; ``` Recognizes static text with inverted colors (background becomes text). - - - ### OCR.Recognize ```pascal function TOCR.Recognize(bounds: TBox; constref font: TPixelFont; colors: TColorArray; tolerance: Single): String; ``` Recognizes text within bounds using specified font and colors. - - - ### OCR.RecognizeLines ```pascal function TOCR.RecognizeLines(bounds: TBox; constref font: TPixelFont; colors: TColorArray; tolerance: Single): TStringArray; ``` Recognizes multiple lines of text, returning each line as a separate string. - - - ### OCR.RecognizeShadow ```pascal function TOCR.RecognizeShadow(bounds: TBox; constref font: TPixelFont; tolerance: Single): String; ``` Recognizes text by detecting shadow pixels and finding adjacent text colors. - - - ### OCR.RecognizeNumber ```pascal function TOCR.RecognizeNumber(bounds: TBox; constref font: TPixelFont; colors: TColorArray; tolerance: Single): Integer; ``` Recognizes and extracts an integer from text within bounds. - - - ## OCR variable Global {ref}`TOCR` variable. - - - ## TFonts Record containing pre-loaded game fonts and common text colors. - - - ## Fonts variable Global {ref}`TFonts` variable.