原理: 利用微軟OCR控件, 只須要不到10行代碼就可以實現自已的OCR文字識別軟件.spa
1. 添加控件,須要安裝office2003, 沒有安裝office2003的能夠從別人機子上拷貝相關文件,註冊regsvr32.exe mdivwctl.dll,orm
在運行中輸入regsvr32.exe "C:\Program Files\Common Files\Microsoft Shared\MODI\11.0\mdivwctl.dll"server
控件通常在這個目錄下:C:\Program Files\Common Files\Microsoft Shared\MODI\11.0, 只須要相關的幾個文件就能夠了, 此文件夾所有文件大概在21M左右.對象
工程->部件->添加這個控件:Microsoft Office Document Imaging 11.0 Type Libraryblog
2.在按鈕的Click事件裏:接口
Dim strLayoutInfo As String, strLPN As String事件
'初始化並加載文檔圖片
Set miDoc = CreateObject("MODI.Document") '建立對象開發
miDoc.Create "D:\未命名.jpg" '加載圖片文件文檔
Screen.MousePointer = vbHourglass '設置光標忙
'識別
miDoc.Images(0).OCR miLANG_CHINESE_SIMPLIFIED, True, True '有用的就此一句,識別爲中文簡體
Set modiLayout = miDoc.Images(0).Layout '讀出數據
strLayoutInfo = _
"Language: " & modiLayout.Language & vbCrLf & _
"Number of characters: " & modiLayout.NumChars & vbCrLf & _
"Number of fonts: " & modiLayout.NumFonts & vbCrLf & _
"Number of words: " & modiLayout.NumWords & vbCrLf & _
"Beginning of text: " & Left(modiLayout.Text, 50) & vbCrLf & _
"First word of text: " & modiLayout.Words(0).Text
MsgBox strLayoutInfo, vbInformation + vbOKOnly, "Layout Information"
Set modiLayout = Nothing
Set miDoc = Nothing
Screen.MousePointer = vbDefault
3. OK了, 是否是很簡單!
--------------------------
以上代碼用精簡版vb6編譯經過,可是是在徹底安裝office2003的前提下,單獨用個人包註冊,執行的時候,miDoc.Create "D:\未命名.jpg" '加載圖片文件 這步有問題,
在易語言下不能註冊該支持庫,應該是兼容性問題!
該ocr識別效果很好,望高手給看看,如何在易中掛接,改進下圖片對齊,作個車牌識別也能夠!
最近在開發 Delphi 7中須要使用Office 2003的OCR識別組件。 總結工做中發現的問題
1、 服務中建立MODI.Document,報未註冊 EOleException。
其實核心MDIVWCTL.DLL已reg,一樣的主exe中核心代碼運行沒問題, 緣由在於 原來exe程序中主窗體上丟了一個 TMiDocView可視OLE控件。
嘗試如下方法:
1. TService聲明Private MiDoc:TMiDocView對象, Create時建立該對象
2. 純接口方式 CoDocument.Create; IDocument.Create('文件名')
3. CreateOLEOBject('MODI.DOcument') 動態建立comserver as IDocument
4. way1 中指定 MiDoc.FileName, MiDoc.Document as IDocument
組合以上均未能解決問題
5. IDocument.Create時try 保護 except中再次 create;
偶爾能調過該問題,Create成功, 可是運行屢次後 exception明顯變多
此問題在網上搜索多日,碰到不少一樣的案例,均沒發現解決方法。
2、 核心的dll
C:\Program Files\Common Files\Microsoft Shared\MODI\11.0 下
MDIVWCTL.dll (核心COM)
MSPGIMME.dll
3、 文件鎖定問題
IDocument.Create('c:\aa.tif');
...
IDocument.Close; //運行完這行 文件仍是一直被鎖定,沒法刪除。
這個問題應該是能解決, 知道的朋友相煩告訴一下 :-)