最近在搞一套OCR的程序,底層的OCR引擎是購買來,外面用VB包裝了一層。這套程序已經在其他地方的項目中使用過的。花了點時間把VB程序改造了下,在本機調試通過,準備部署到實際的服務器上。部署之后一運行,從log中發現沒有識別成功。懷疑是ocr引擎的問題,先用引擎自帶的demo程序測試下,一識別報找不到DLL的錯誤,查看了下該dll,發現的卻是在當前目錄有這個dll,用其他語言寫的demo也一樣報錯。
?查了下OCR SDK的開發手冊,手冊中到是提到了這個問題,給出的解決方案是把DLL和exe都放在同一個目錄下,二我當前就是這么做的。奇怪的,再測copy了DLL測試DLL本身并無損壞。把DLL都copy到system32下面也一樣無濟于事。把當然的路徑加到系統的path里面,也無效。怪事了,某非設置path要重啟之后才能生效。還好現在是下班時間,把服務器重新啟動了下。
重啟之后立刻彈出N個對話框,ocr.exe因為遇到問題被系統數據執行保護關閉。TNN的原來是數據保護惹的禍。到數據保護里設置為只為系統進程和服務啟用,再次重啟果然解決問題了。這讓我想起以前在安裝一些
InstallAnywhere打包的程序時也會遇到問題就好似數據執行保護引起的。
把程序開起來進行識別,確發現識別數量一多就會報某某內存地址不能read的錯誤。kao,真是一bug剛滅一bug又起啊。調了半天也沒有結果,算了先回去睡覺,明天再解決。
? 第二天,也就是今天 呵呵,在msn向一個同事(VB高手)請教,他也說可能是數據執行保護的問題。我又查看了下程序的日志,突然來了靈感,發現出錯的有規律,有的錯誤是在識別同一份文件時發生的,查了下原來這份圖片是png格式的,測試了下果然是png不能識別。問題解決,特寫本篇blog記錄下。
posted on 2007-07-28 12:21
南哥 閱讀(674)
評論(0) 編輯 收藏 所屬分類:
項目經驗