使用office2003附帶的MODI可以進行OCR文字識別,不需要取樣,使用簡單,識別率很不錯。
適合用于識別比較規(guī)范的文本。缺點是必須安裝office2003及Microsoft Document Imaging組件。
這種方法適合于普通文字識別,不太適合做驗證碼識別。
驗證碼識別請參考教程:f2/ix.html
本程序使用了comx插件,請參考:使用com插件
下面是演示源代碼:
img = image.new();--創(chuàng)建一個圖片對象
img:capture(0,100,200,300,400);--抓屏,范圍x=100,y=200,寬=300,高=400
img:save(_LASDIR.."\\test.bmp"); --保存圖片到腳本目錄(也就是_LASDIR)下
--導(dǎo)入comx插件
import("std");
import2("comx","http://www.yhhe.net/ape/import/comx/comx.dll");
--創(chuàng)建MODI對象(必須安裝office2003中的Microsoft Document Imaging組件)
mdoc = comx.CreateObject("MODI.Document");
if(not mdoc)then
win.messageBox("請將安裝office2003及Microsoft Document Imaging組件","屏幕ocr文字識別")
return false;
end;
--導(dǎo)入圖片
mdoc:Create(_LASDIR.."\\test.bmp");
--進行OCR識別,參數(shù)分別為語言ID,是否自動誘轉(zhuǎn),是否自動拉伸
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 函數(shù)的第一個參數(shù)指定語言ID
在簡體中文office中可選的語言ID有:
在繁體中文office中可選的語言ID有:
正確的指定語言ID可以提高識別率。如果mdoc:OCR 沒有在圖片中找到文字,會報錯并終止模擬程序。