作者:馬健
郵箱:stronghorse_mj@hotmail.com
主頁:http://www.comicer.com/stronghorse
發布:2021.02.21
一年前隨着V1版MODI_Engine的發布,我發表了《程序員調用MODI的正確姿勢》,說明為什么要通過MODI_Engine這樣的橋接器來調用MODI進行OCR:
https://www.cnblogs.com/stronghorse/p/12302662.html
經過一年的實際應用,發現V1版MODI_Engine存在下列問題:
- 為了偷懶,V1采用了WM_COPYDATA消息機制實現進程間通信(interprocess communications,IPC),這就要求V1版MODI_Engine必須有消息隊列,所以采用了基於隱藏對話框的GUI架構。
- 由於V1版MODI_Engine是一個帶消息隊列的GUI程序,即使其主界面(對話框)不可見,但在啟動它時,操作系統仍然會嘗試將用戶交互的焦點(focus)轉移給它。這就可能造成一個問題:如果通過MODI_Engine橋接的應用軟件,例如說Pdg2Pic是在后台運行的,而前台應用軟件,例如說WORD正在輸入文字,這個時候如果OCR過程出錯導致MODI_Engine崩潰退出,Pdg2Pic在后台自動重新啟動MODI_Engine,則前台的WORD會因為焦點的切換而感覺閃爍,甚至時機趕得巧的話可能會出現輸入的文字丟失。
- 用戶必須自己手工把MODI_Engine及調用MODI_Engine的軟件設置為以管理員權限運行,否則OCR會失敗。
- 由於某些疏忽,V1版MODI_Engine在MODI的回調(callback)機制上出了點問題,導致用戶不能中斷OCR過程。
所以,MODI_Engine從V1版升級至V2版,進行了如下改進:
- IPC通信從消息機制改成共享內存(shared memory),因此不再要求MODI_Engine必須有消息隊列,框架也就從基於對話框的GUI改成控制台(console)命令方式。
- 由於沒有消息隊列,因此可以做到完全的靜默啟動,即后台自動重啟MODI_Engine時,前台應用不會再出現閃爍的問題。
- 在FreePic2Pdf_Lib中,自動以管理員權限啟動MODI_Engine,因此即使用戶疏忽,忘記設置以管理員權限運行,也不會造成OCR失敗。
- 改進了回調機制響應,用戶可以及時中斷OCR過程。
對於V1版MODI_Engine,我用了40萬頁進行測試。V2版沒那么誇張,但我也找了10萬頁,用不同的參數測試了3遍,以對參數進行優化。
(完)