使用office2003附帶的MODI可以進行OCR文字識別,不需要取樣,使用簡單,識別率很不錯。
適合用於識別比較規範的文本。缺點是必須安裝office2003及Microsoft Document Imaging組件。
這種方法適合於普通文字識別,不太適合做驗證碼識別。
驗證碼識別請參考教程:http://www.yhhe.net/ape/book/fap/f2/ix.html
本程序使用了comx插件,請參考貼子:http://www.yhhe.net/bbs/dispbbs.asp?BoardID=4&ID=179&replyID =
下面是演示源代碼:
下載模擬精靈: http://www.yhhe.net/Fairy_Ape.exe
打開模擬精靈
,把下面的代碼粘貼到源碼編輯,按F5運行即可。
img = image.new(
)
;--創建一個圖片對象
img:capture(
0
,100
,200
,300
,400
)
;--抓屏,範圍x=100,y=200,寬=300,高=400
img:save(
_LASDIR.."
//
test.bmp"
)
; --保存圖片到腳本目錄(也就是_LASDIR)下
--導入comx插件
import(
"std"
)
;
import2(
"comx"
,"http://www.yhhe.net/ape/import/comx/comx.dll"
)
;
--創建MODI對象(必須安裝office2003中的Microsoft Document Imaging組件)
mdoc = comx.CreateObject(
"MODI.Document"
)
;
if
(
not
mdoc)
then
win.messageBox(
"請將安裝office2003及Microsoft Document Imaging組件"
,"屏幕ocr文字識別"
)
return
false
;
end
;
--導入圖片
mdoc:Create(
_LASDIR.."
//
test.bmp"
)
;
--進行OCR識別,參數分別爲語言ID,是否自動誘轉,是否自動拉伸
mdoc:OCR(
0x804,_FALSE,_FALSE)
;
local
mi = mdoc.Images(
0
)
;
--快速獲取取全部文本
win.messageBox(
mi.Layout.Text,"mdoc.Images(0).Layout.Text"
)
;
--獲取字符詳細信息
local
word = mi.Layout.Words(
0
)
local
str = "Id: "
.. word.Id .. "
/r
/n
"
str = str .. "Line Id: "
.. word.LineId .. "
/r
/n
"
;
str = str .. "Region Id: "
.. word.RegionId .. "
/r
/n
"
;
str = str .. "Font Id: "
.. word.FontId .. "
/r
/n
"
;
str = str .. "Recognition confidence: "
.. word.RecognitionConfidence .. "
/r
/n
"
;
str = str .. "Text: "
.. word.Text;
win.messageBox(
str,"mdoc.Images(0).Layout.Words(0)"
)
mdoc:OCR 函數的第一個參數指定語言ID
在簡體中文office中可選的語言ID有:
英語 9
簡體中文 0x804
在繁體中文office中可選的語言ID有:
英語 9
繁體中文 0x404
正確的指定語言ID可以提高識別率。
如果mdoc:OCR 沒有在圖片中找到文字,會報錯並終止模擬程序。