2009年12月3日 星期四

用Office內建的MODI來玩OCR

星期二下班前,Jason把我拉到他的辦公室裡面。其實一開始我嚇到了,還以為我做錯什麼事情。可是我想想也不對勁,我在公司表現還算優良呀。後來想說他會不會要幫我加薪呀,結果真的是我想太多了 囧rz。其實他只是希望我在電子書裡面加上OCR的辨識功能啦,可是OCR很難耶,怎麼可能這麼簡單就做的出來。

後來Jason傳了兩個網址給我,分別是「[C#]使用 Microsoft Office Document Imaging(MODI) 做光學字元辨識(OCR)」以及「利用Microsoft Office Document Image Writer的ActiveX元件做OCR」。我查了一下資料,原來Office就已經有OCR的功能了,這個OCR元件的名稱叫做Microsoft Office Document Imaging(MODI),而且辨識率還算OK,不會說太差啦。


於是我就自己仿照文章內的程式碼寫了一個範例,程式就是上面這些囉。不過其實在做extract的時候會有一些問題,就是有時候丟進去的圖片沒辦法被release,翻了很多文章之後才知道,這應該是MODI的bug,於是我就寫了程式強迫GC回收(39~42行),還有使用暫存檔(54行)的方式做處理,暫時解決了這些問題,順便給有興趣玩OCR的朋友參考看看囉。

參考資料:
Optical character recognition - Wikipedia, the free encyclopedia
[C#]使用 Microsoft Office Document Imaging(MODI) 做光學字元辨識(OCR)
利用Microsoft Office Document Image Writer的ActiveX元件做OCR
Microsoft Office Document Imaging - Wikipedia, the free encyclopedia
MODI Release Image Problem in Office Developer Automation
MODI - Cannot delete file after document closed - ASP.NET Forums
MODI - Cannot delete file after document closed - microsoft.public.dotnet.framework.interop | Google 網上論壇

1 則留言:

約翰-提托 提到...

你好~我是今天剛接觸的新手
我把他COPY進去後他一直說 txtExtract.Text = Recognition(tmpFileName);
又錯...我程式設計那邊只有拉一個按鈕 還缺什麼??
感謝!!!