最簡單的屏幕OCR文字識別

使用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有:

自動選擇 0x800
英語 9
簡體中文 0x804

在繁體中文office中可選的語言ID有:

自動選擇 0x800
英語 9
繁體中文 0x404

正確的指定語言ID可以提高識別率。
如果mdoc:OCR 沒有在圖片中找到文字,會報錯並終止模擬程序。

發佈了5 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章