SilkTest提供了基本的OCR功能,其中OCR 代表Optical Character Recognition光学字符识别,它允许SilkTest从屏幕区域或者图片上获取文字内容。注意:这和silktest从对象上取得caption或者text是两回事(通过windows消息调用),OCR是根据像素的分布用一定的pattern来识别文字的。 Silktest的OCR函数定义在安装目录里的OCR.inc中,它主要提供了两个函数:OcrGetTextFromWnd(),OcrGetTextFromBmp().它们分别提供了从屏幕对象上和bmp文件中识别文字的功能。 帮助文件中对他们的描述如下: OCR.inc includes the following 4Test functions for OCR: · function: iRet = OcrGetTextFromBmp (sOcrText, sBitmapFile) · returns: iRet: Result length. If conversion fails, then an E_OCR exception will be raised. INTEGER. · parameter: sOcrText: The result of converting the bitmap to text. NULL if conversion failed. OUT. STRING. · parameter: sBitmapFile: The bitmap (.bmp) file to convert. STRING. · notes: Convert a bitmap file into text. The conversion uses the preconfigured pattern file, which is in the textract.ini file (Database Path setting). · function: iRet = OcrGetTextFromWnd (sText, wWindow[, rCapture]) · returns: iRet: Result length. If conversion fails, then an E_OCR exception will be raised. INTEGER. · parameter: sText: The result of converting a bitmap of the window to text. NULL if conversion failed. OUT. STRING. · parameter: wWindow: The window that will be the source of the bitmap to be converted to text. WINDOW. · parameter: rCapture: The capture region. OPTIONAL. RECT. · notes: Convert a bitmap of a window (or area within a window) into text. The conversion uses the preconfigured pattern file, which is specified in the textract.ini file (Database Path setting). SilkTest默认使用的textract来实现文本的识别,它的设置可以在textract.ini配置文件中找到,其中的配置行Database Path=C:/Program Files/Borland/SilkTest/SgOcrPattern.pat定义了使用sgOcrPattern.pat这个pattern库来进行识别工作。 然后运行下面的script: [-] testcase OCR() 它的目的是从记事本的TextField上用 OcrGetTextFromWnd() 直接识别文本内容,然后再抓屏在c盘上生成一个bmp文件,然后用 OcrGetTextFromBmp() 从该bmp文件识别文本内容。 [ ] 37 这说明用 OcrGetTextFromWnd() 和OcrGetTextFromBmp()得到的结果基本一致,但是都不太理想,因为有一些字符都没有识别出来。如果你把记事本中的文本内容改成大写: HERE IS AN EXAMPLE FOR OCR TEST [ ] 32 可见SilkTest自带的OCR识别库并不能很好的应对各种情况,所以在实际的项目中,你可能需要使用其他第三方或者开发自己的pattern库,这对自动化测试工程师来说是一个挑战。 |