//-------------------------------------------------------------------------------
脚本大师文字识别(OCR)插件  版本v1.2
---------------------------------------------------------------------------------
如您想自己动手进行特征库的制作及编辑，建议下载HZFBuilder特征库制作工具，详情请访问http://bbs.dxqsoft.com
---------------------------------------------------------------------------------


本插件可将屏幕上的印刷体字符图形识别为相应的字符代码
主要功能为：
1、识别指定字号的汉字/英文字母/数字的混合图形。
2、识别指定字号的数字(单独识别数字时，速度及准确性都将大大提高)。
3、自动识别各种大小的数字串，甚至大小不同混合在一起的数字串。
4、识别指定字号的英文字母。

在先进的高性能识别引擎的支持下，本插件识别字符速度超快，在Core DUO T2300的配置下：
* 识别1000个汉字/英文/数字混合图形，一般只有120毫秒左右。
* 大小字号不同的1000个数字混合在一起，识别只需约100毫秒
* 如果指定数字字号，则识别速度比混合模式可提高至少3倍！

注意，插件在首次使用某种字体进行识别时，由于会对特征库文件进行导入，因此会导致额外
的100毫秒左右的时间开销，但第二次则不会产生这部分时间消耗。

关于字体特征库文件的获取：
1、请优先访问脚本大师论坛http://bbs.dxqsoft.com/ 获取字体特征库，如果找不到需要的特征库，请发贴询问。
2、或者请访问http://www.dxqsoft.com/，寻找脚本大师ScriptExpert相关下载资源。

有任何意见或建议或疑问或使用心得，欢迎访问脚本大师论坛发帖灌水:)
http://bbs.dxqsoft.com/


更新记录：
2009.6.8 v1.2
    改进字库识别，更好的与字库生成工具HZFBuilder配合。
    改进文字识别算法，识别率更高。
2008.1.4 v1.1beta1
    改进文字识别算法，提高文字识别率。
    随插件附带的字库进行了扩充，附加更多字体，具体请参见字库说明文件base.txt。
2007.12.21. v1.0beta1
    版本首发

//-------------------------------------------------------------------------------


//以下为插件提供的文字识别函数说明

::OcrHZ
function OcrHZ(hWnd:integer; x1:integer; y1:integer; x2:integer; y2:integer; FontInfo:string; Color:integer; ColorMode:integer; ColorDiff:integer; MatchRaio:float; TextToFind:string; var TextX:integer; var TextY:integer): string;
对指定窗口hWND的(x1,y1)(x2,y2)区域进行汉字识别，返回值为识别出的汉字、数字、英文字符。
此函数除了主要识别汉字外，附带也可以识别相同字体下的英文及数字字符，如果单纯识别数字或英文字符，请使用OcrDigit及OcrEN函数。
hWND表示需要在其中识别的窗口句柄，如果hWND=0，则表示在全屏幕中进行识别。
x1,y1 表示需要识别范围的左上角坐标，如果hWND=0，此坐标以屏幕左上角为原点，否则，以相应窗口左上角为原点。
x2,y2 表示需要识别范围的右下角坐标，如果hWND=0，此坐标以屏幕左上角为原点，否则，以相应窗口左上角为原点。
FontInfo 表示识别时采用的特征库信息，一般信息表示为“字体名+字号”，具体特征库文件中包含哪些特征库信息，请参见相应的特征库文件说明档。
         如果FontInfo指定的特征库不存在，则识别失败，立刻返回。
Color 表示一个颜色值，当ColorMode=0时，Color表示的是字符的颜色，当ColorMode=1时，表示的是背景颜色。
ColorMode 表示颜色模式，当ColorMode=0时，Color表示的是字符的颜色，当ColorMode=1时，表示的是背景颜色。
ColorDiff 表示颜色差异度，这个值越小，差异度越小，越难匹配，越精确，反之这个值越大，越容易匹配，匹配也越模糊。
MatchRatio 表示匹配度，取值范围0-1，当图像干扰大时，可适当减小这个值。一般可以取值为0.98。这个值越小，出现识别误差的概率越大。
TextToFind 表示在识别文字时，同时自动寻找识别出的文字中是否有指定的字符串，如果不需要此功能，这个参数可以设置为空字符串""
TextX 这应当是一个变量，当指定了TextToFind字符串时，TextX返回找到的字符串左上角的x坐标值，没找到返回-1
TextY 这应当是一个变量，当指定了TextToFind字符串时，TextY返回找到的字符串左上角的y坐标值，没找到返回-1
举例：
//以下代码在全屏幕(0,0)(1024,768)范围内识别字号为"宋体10"的汉字，汉字颜色为黑色$000000, 颜色误差28，匹配率0.98
set s=OcrHZ(0,0,0,1024,768,"宋体10",$000000,0,28,0.98,"",0,0)
//以下代码在全屏幕(0,0)(1024,768)范围内识别字号为"宋体9"的汉字，汉字颜色为黑色$000000, 颜色误差28，匹配率0.98
//如果在这个区域中发现了“脚本大师”字样，则返回该字样左上角在屏幕上的坐标(TextX,TextY)
set s=OcrHZ(0,0,0,1024,768,"宋体9",$000000,0,28,0.98,"脚本大师",TextX,TextY)

::OcrEN
function OcrEN(hWnd:integer; x1:integer; y1:integer; x2:integer; y2:integer; FontInfo:string; Color:integer; ColorMode:integer; ColorDiff:integer; MatchRaio:float; TextToFind:string; var TextX:integer; var TextY:integer): string;
对指定窗口hWND的(x1,y1)(x2,y2)区域进行文字识别，返回值为识别出的英文和数字字符。
此函数除了主要识别英文字母外，附带也可以识别相同字体下的数字字符，如果单纯识别数字字符，请使用OcrDigit函数。
hWND表示需要在其中识别的窗口句柄，如果hWND=0，则表示在全屏幕中进行识别。
x1,y1 表示需要识别范围的左上角坐标，如果hWND=0，此坐标以屏幕左上角为原点，否则，以相应窗口左上角为原点。
x2,y2 表示需要识别范围的右下角坐标，如果hWND=0，此坐标以屏幕左上角为原点，否则，以相应窗口左上角为原点。
FontInfo 表示识别时采用的特征库信息，一般信息表示为“字体名+字号”，具体特征库文件中包含哪些特征库信息，请参见相应的特征库文件说明档。
         如果FontInfo指定的特征库不存在，则识别失败，立刻返回。
Color 表示一个颜色值，当ColorMode=0时，Color表示的是字符的颜色，当ColorMode=1时，表示的是背景颜色。
ColorMode 表示颜色模式，当ColorMode=0时，Color表示的是字符的颜色，当ColorMode=1时，表示的是背景颜色。
ColorDiff 表示颜色差异度，这个值越小，差异度越小，越难匹配，越精确，反之这个值越大，越容易匹配，匹配也越模糊。
MatchRatio 表示匹配度，取值范围0-1，当图像干扰大时，可适当减小这个值。一般可以取值为0.98。这个值越小，出现识别误差的概率越大。
TextToFind 表示在识别文字时，同时自动寻找识别出的文字中是否有指定的字符串，如果不需要此功能，这个参数可以设置为空字符串""
TextX 这应当是一个变量，当指定了TextToFind字符串时，TextX返回找到的字符串左上角的x坐标值，没找到返回-1
TextY 这应当是一个变量，当指定了TextToFind字符串时，TextY返回找到的字符串左上角的y坐标值，没找到返回-1
举例：
//以下代码在全屏幕(0,0)(1024,768)范围内识别字号为"宋体EN10"的英文字母，字体颜色为黑色$000000, 颜色误差28，匹配率0.98
set s=OcrHZ(0,0,0,1024,768,"宋体EN10",$000000,0,28,0.98,"",0,0)
//以下代码在全屏幕(0,0)(1024,768)范围内识别字号为"宋体EN9"的英文字母，字体颜色为黑色$000000, 颜色误差28，匹配率0.98
//如果在这个区域中发现了“Script Expert”字样，则返回该字样左上角在屏幕上的坐标(TextX,TextY)
set s=OcrHZ(0,0,0,1024,768,"宋体EN9",$000000,0,28,0.98,"Script Expert",TextX,TextY)

::OcrDigit
function OcrDigit(hWnd:integer; x1:integer; y1:integer; x2:integer; y2:integer; FontInfo:string; Color:integer; ColorMode:integer; ColorDiff:integer; MatchRaio:float; TextToFind:string; var TextX:integer; var TextY:integer): string;
对指定窗口hWND的(x1,y1)(x2,y2)区域进行数字识别，返回值为识别出的数字字符。
此函数单纯识别数字，不识别英文及汉字字符，如需识别汉字，请使用OcrHZ函数。
hWND表示需要在其中识别的窗口句柄，如果hWND=0，则表示在全屏幕中进行识别。
x1,y1 表示需要识别范围的左上角坐标，如果hWND=0，此坐标以屏幕左上角为原点，否则，以相应窗口左上角为原点。
x2,y2 表示需要识别范围的右下角坐标，如果hWND=0，此坐标以屏幕左上角为原点，否则，以相应窗口左上角为原点。
FontInfo 表示识别时采用的特征库信息，一般信息表示为“Digit+字号”，具体特征库文件中包含哪些特征库信息，请参见相应的特征库文件说明档。
         * 如果FontInfo为空字符串，则自动识别所有可识别的数字字符。
Color 表示一个颜色值，当ColorMode=0时，Color表示的是字符的颜色，当ColorMode=1时，表示的是背景颜色。
ColorMode 表示颜色模式，当ColorMode=0时，Color表示的是字符的颜色，当ColorMode=1时，表示的是背景颜色。
ColorDiff 表示颜色差异度，这个值越小，差异度越小，越难匹配，越精确，反之这个值越大，越容易匹配，匹配也越模糊。
MatchRatio 表示匹配度，取值范围0-1，当图像干扰大时，可适当减小这个值。一般可以取值为0.98。这个值越小，出现识别误差的概率越大。
TextToFind 表示在识别数字时，同时自动寻找识别出的数字中是否有指定的数字串，如果不需要此功能，这个参数可以设置为空字符串""
TextX 这应当是一个变量，当指定了TextToFind字符串时，TextX返回找到的字符串左上角的x坐标值，没找到返回-1
TextY 这应当是一个变量，当指定了TextToFind字符串时，TextY返回找到的字符串左上角的y坐标值，没找到返回-1
举例：
//以下代码在全屏幕(0,0)(1024,768)范围内识别字号为"Digit10"的数字，数字颜色为黑色$000000, 颜色误差28，匹配率0.98
set s=OcrHZ(0,0,0,1024,768,"Digit10",$000000,0,28,0.98,"",0,0)
//以下代码在全屏幕(0,0)(1024,768)范围内识别字号为"Digit9"的数字，数字颜色为黑色$000000, 颜色误差28，匹配率0.98
//如果在这个区域中发现了“88888”数字串，则返回该字样左上角在屏幕上的坐标(TextX,TextY)
set s=OcrHZ(0,0,0,1024,768,"Digit9",$000000,0,28,0.98,"88888",TextX,TextY)
//以下代码在全屏幕(0,0)(1024,768)范围内自动识别任意字号的数字，数字颜色为黑色$000000, 颜色误差28，匹配率0.98
set s=OcrHZ(0,0,0,1024,768,"",$000000,0,28,0.98,"",0,0)