Simba/Doc/sphinx/scriptref/ocr.rst

189 lines
4.8 KiB
ReStructuredText

.. _scriptref_ocr:
OCR
===
Simba has OCR functions (Optical Text Recognition); these are used to *read* text from an image.
It also has a wide variation of text *finding* functions. Both will be covered in
this article.
Fonts
-----
Fonts are an essential part of the text finding and identifying.
Now follows a brief explanation of the Font related functions in Simba.
All fonts have an unique identifier in the shape of a ``string``.
If you create or load a new font, they will need to be given a name.
LoadSystemFont
~~~~~~~~~~~~~~
.. _scriptref_fonts:
.. code-block:: pascal
function LoadSystemFont(const SysFont: TFont; const FontName: string):
boolean;
This font loads a previously created Font with the name specified by
*FontName*.
Example:
.. code-block:: pascal
program new;
var
Font : TFont;
begin
Font := TFont.Create;
Font.Name := 'Courier New';
Font.Size := 10;
Font.Style := [];
LoadSystemFont(Font,'test');
DisplayDebugImgWindow(0,0);
DisplayDebugImgWindow(150,50);
DrawBitmapDebugImg(BitmapFromText('BMP[0] has not been freed','test'));
Font.free;
end.
LoadFont
~~~~~~~~
.. code-block:: pascal
function LoadFont(const FontName: string; shadow: boolean): boolean;
Load the font specific by the *FontName*. The font has to recide in the Fonts
directory.
FreeFont
~~~~~~~~
.. code-block:: pascal
function FreeFont(const FontName: string): boolean;
This function is used to free a font identified by *FontName*.
BitmapFromText
~~~~~~~~~~~~~~
.. code-block:: pascal
function BitmapFromText(const text, font: String): integer;
This function creates a bitmap from a string *text* with the given *font*.
For an explanation on how to use and work with Bitmaps, please refer to
:ref:`scriptref-bitmaps`.
TPAFromText
~~~~~~~~~~~
.. code-block:: pascal
function TPAFromText(const text, font: String;var w,h : integer): TPointArray;
This function creates a TPA from a string *text* with the given *font*.
For an explanation on how to use and work with TPAs, please refer to
:ref:`scriptref-tpointarray`.
TPAFromTextWrap
~~~~~~~~~~~~~~~
.. code-block:: pascal
procedure TPAFromTextWrap(const text, font: String;var w,h : integer;var TPA : TPointArray);
A wrapper function for the previously mentioned function. Required to
work arounds bugs in the interpreter.
MaskFromText
~~~~~~~~~~~~
.. code-block:: pascal
function MaskFromText(const text, font: String): TMask;
This function creates a Mask from a string *text* with the given *font*.
For an explanation on how to use and work with TPAs, please refer to
:ref:`scriptref-masks`.
Reading Text
------------
rs_GetUpText
~~~~~~~~~~~~
.. code-block:: pascal
function rs_GetUpText: string;
This function is a function specific to RuneScape(tm); it reads the text
in the upper left corner into a string.
How these functions actually work can be found here: :ref:`uptext-filter`.
rs_GetUpTextAt
~~~~~~~~~~~~~~
.. code-block:: pascal
function rs_GetUpTextAt(x, y : integer): string;
This function is a function specific to RuneScape(tm); it reads the text
at the specified position in (*x*, *y*) into a string.
GetTextAt
~~~~~~~~~
.. code-block:: pascal
function GetTextAt(const atX, atY, minvspacing, maxvspacing, hspacing,color, tol, len: integer;const font: string): string;
A general function for reading text.
Reads text at (*atX*, *atY*) with a minimal vertical spacing of *minvspacing*
and a maximal vertical spacing of *maxvspacing*, the text colour should match
the colour *color* with the given tolerance *Tolerance*; the length of the text
is specified with *len*. Finally, the font to use for the identifying is
specified with the fontname *font*.
GetTextAtEx
~~~~~~~~~~~
.. code-block:: pascal
function GetTextAtEx(const xs,ys,xe,ye, minvspacing, maxvspacing, hspacing,color, tol: integer;const font: string): string;
A general function for reading text.
Reads text in the rectangle defined by (*xs*, *ys*), (*xe*, *ye*)
with a minimal vertical spacing of *minvspacing*
and a maximal vertical spacing of *maxvspacing*, the text colour should match
the colour *color* with the given tolerance *Tolerance*; the length of the text
is specified with *len*. Finally, the font to use for the identifying is
specified with the fontname *font*.
GetTextATPA
~~~~~~~~~~~
.. code-block:: pascal
function GetTextATPA(const ATPA : T2DPointArray; const maxvspacing : integer; const font : string): string;
Similar to GetTextAt but reads the text from a ATPA rather than the client.
GetTextAtExWrap
~~~~~~~~~~~~~~~
.. code-block:: pascal
function GetTextAtExWrap(const xs,ys,xe,ye, minvspacing, maxvspacing, hspacing,color, tol: integer;const font: string): string;
A wrapper function for the previously mentioned function. Required to
work arounds bugs in the interpreter.