轉(zhuǎn)帖|行業(yè)資訊|編輯:龔雪|2014-03-28 09:59:06.000|閱讀 5753 次
概述:在過去幾周,我在業(yè)余時(shí)間里利用ABBYY開發(fā)的FineReader Engine試用版來開發(fā)了一些簡單的OCR應(yīng)用程序。本文將分享一下FineReader Engine的一些入門經(jīng)驗(yàn)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
關(guān)于ABBYYFineReader Engine
ABBYY網(wǎng)站上對FineReaderEngine的描述如下:
ABBYY FineReader Engine是一款功能強(qiáng)大的光學(xué)字符識別(OCR)軟件開發(fā)工具包(SDK),集成了ABBYY最先進(jìn)的文檔識別和轉(zhuǎn)換軟件技術(shù),如:光學(xué)字符識別(OCR)、智能字符識別(ICR)、光學(xué)標(biāo)記識別(OMR)、條形碼識別(OBR)、文檔影像和PDF轉(zhuǎn)換。
如果開發(fā)人員需要開發(fā)具有以下任一功能的應(yīng)用程序,可以考慮使用ABBYY FineReader Engine軟件開發(fā)工具包(SDK):
這個(gè)SDK中包含有十幾個(gè)應(yīng)用程序示例,包括C++、C#、VB.NET、VB、Delphi、Java和幾種腳本語言(JavaScript、Perl和VBScript)示例。你可以查看代碼開發(fā)庫(Code Development Library)來快速入門,代碼開發(fā)庫中包含了SDK編程的各個(gè)方面。每個(gè)截面代碼庫包含一個(gè)或多個(gè)代碼片段并逐步描述了如何運(yùn)行一項(xiàng)任務(wù)。
選擇你需要執(zhí)行的任務(wù),查看操作步驟描述,查閱源代碼示例或運(yùn)行可執(zhí)行文件:
安裝和設(shè)置
在開發(fā)機(jī)上安裝FineReader時(shí)有幾個(gè)步驟。首先,必須安裝授權(quán)服務(wù)器。如果只有1個(gè)開發(fā)人員使用SDK,此時(shí)可以將它直接安裝在開發(fā)機(jī)上。如果多個(gè)開發(fā)人員要從多個(gè)工作站使用FineReader,此時(shí)應(yīng)該將授權(quán)服務(wù)器安裝在所有開發(fā)人員都能訪問的應(yīng)用程序服務(wù)器上。授權(quán)服務(wù)器必須安裝在物理機(jī)器上,而不是虛擬機(jī)上。(請注意,該技術(shù)可以在虛擬機(jī)和云環(huán)境中運(yùn)行)。通過授權(quán)管理器,您可以添加和激活您的許可證,無論您的許可證是試用版或購買的正品版本。
接下來,可以將FineReaderEngine安裝在開發(fā)機(jī)上,并連接到授權(quán)服務(wù)器。
安裝完成后,如果您使用的是Visual Studio2010或2012,此時(shí)必須再完成幾個(gè)步驟,才能夠使用可視化組件(控件)。這些步驟在其自帶的SDK幫助文件“在不同版本的Visual Studio中使用可視化組建”頁可以找到。
現(xiàn)在您就可以使用SDK進(jìn)行開發(fā)了。你可以按照上文代碼開發(fā)庫中描述的示例應(yīng)用程序進(jìn)行開發(fā)或你可以著手創(chuàng)建自己的程序。
創(chuàng)建項(xiàng)目
首先,在C#或Visual Basic中創(chuàng)建1個(gè)新的Windows窗體應(yīng)用程序。我在開發(fā)應(yīng)用程序時(shí)使用的是Visual Studio2010。
隨后將ABBYY控件添加到Visual Studio工具箱窗口。我在工具箱中創(chuàng)建了1個(gè)新的ABBYY 。
將該項(xiàng)目的引用添加到ABBYY \Inc\.Net Interops\ 文件夾下的三個(gè)Interop DLL文件中,在安裝過程中,這三個(gè)文件都已注冊并被添加到了GAC里面。
UI控件
下面介紹設(shè)計(jì)視圖Windows窗體中的五個(gè)ABBYY控件。
從左上角開始,沿順時(shí)針方向依次是:
文件瀏覽器-該控件顯示了從圖像/文件加載的頁面清單以及每個(gè)頁面的處理狀態(tài)。這些頁面可以顯示為縮略圖或詳細(xì)信息視圖。
圖像瀏覽器 –應(yīng)用程序用戶可以通過該控件來查看和編輯在文件瀏覽器中選中的頁面。
文本編輯器 –用戶可以使用文本編輯器查看和編輯FREngine在指定頁面中識別出來的文字。
動態(tài)瀏覽器 – 用戶可以使用該控件來放大或縮小圖像瀏覽器中選定的區(qū)域。
文本校驗(yàn)器 – 用戶可以使用該控件來調(diào)整掃描和驗(yàn)證過程中未能識別的文本區(qū)域。這也是用于文件拼寫檢查的用戶界面。
在這些控件中,將文件和頁面同步是非常簡單的事情,只需將每個(gè)控件添加到代碼中的ComponentSynchronizer對象即可:
// Attach components to Synchronizer Synchronizer =new FineReaderVisualComponents.ComponentSynchronizerClass(); Synchronizer.DocumentViewer = (FineReaderVisualComponents.DocumentViewer ) documentViewer.GetOcx(); Synchronizer.ImageViewer = (FineReaderVisualComponents.ImageViewer ) imageViewer.GetOcx(); Synchronizer.ZoomViewer = (FineReaderVisualComponents.ZoomViewer ) zoomViewer.GetOcx(); Synchronizer.TextEditor = (FineReaderVisualComponents.TextEditor ) textEditor.GetOcx();
引擎
下面舉個(gè)簡單的例子,來說明如何運(yùn)用所有五個(gè)FineReader控件來打開窗體并加載PDF文件。
IEngine engine; FRDocument document; ComponentSynchronizer synchronizer; IEngineLoader loader; privatevoid LoadEngine() { loader =new FREngine.InprocLoader(); engine = loader.GetEngineObject("xxxx-xxxx-xxxx-xxxx-xxxx-xxxx"); engine.ParentWindow =this.Handle.ToInt32(); engine.ApplicationTitle =this.Text; document = engine.CreateFRDocumentFromImage((@"C:\Users\ABBYYTest\Images\Documents\DemoSample.pdf"); synchronizer.Document = document; } privatevoid SyncComponents() { synchronizer =new ComponentSynchronizer(); synchronizer.DocumentViewer =(FineReaderVisualComponents.DocumentViewer)DocViewer.GetOcx(); synchronizer.ImageViewer =(FineReaderVisualComponents.ImageViewer)ImgViewer.GetOcx(); synchronizer.TextEditor =(FineReaderVisualComponents.TextEditor)textEdit.GetOcx(); synchronizer.ZoomViewer =(FineReaderVisualComponents.ZoomViewer)zoomView.GetOcx(); synchronizer.TextValidator =(FineReaderVisualComponents.TextValidator)textVal.GetOcx(); } privatevoid UnloadEngine() { // If Engine was loaded, unload it if (engine !=null) { engine =null; } } privatevoid DocumentForm_Load(object sender, EventArgs e) { SyncComponents(); LoadEngine(); } privatevoid DocumentForm_FormClosing(object sender, FormClosingEventArgs e) { UnloadEngine(); }
當(dāng)然,在實(shí)際應(yīng)用中,您可能會創(chuàng)建一個(gè)按鈕,用戶通過點(diǎn)擊這個(gè)按鈕可以從文件系統(tǒng)中選擇需要打開的文件。必須注意的是,卸載引擎非常重要。如果不這樣做,就會占用您的工作站所獲得的授權(quán),直到手動將它從授權(quán)服務(wù)器中釋放出來為止。我們在進(jìn)行COM交互操作……資源和內(nèi)存管理非常重要。
識別
對加載的文件運(yùn)行識別處理也是一件比較簡單的事情。下面是管理該進(jìn)程的方法:
privatevoid RecognizeDocument() { FREngine.ProcessingParams processingParams =synchronizer.ProcessingParams; FREngine.DIFRDocumentEvents_OnProgressEventHandler progressHandler = newFREngine.DIFRDocumentEvents_OnProgressEventHandler(document_OnProgress); document.OnProgress += progressHandler; document.Process(processingParams.PageProcessingParams, processingParams.SynthesisParamsForPage, processingParams.SynthesisParamsForDocument); document.OnProgress -= progressHandler; }
progressHandler 能夠讓UI保持響應(yīng),并能夠讓用戶啟動“取消”命令,以終止某個(gè)長時(shí)間運(yùn)行的文檔識別進(jìn)程。
本軟件的默認(rèn)識別語言是英語,如果您需要識別其他語言或任意語言組合的文檔,你可以在打開文檔前更改RecognizerParams中的SetPredefinedTextLanguage選項(xiàng),步驟如下:
processingParams.PageProcessingParams.RecognizerParams.SetPredefinedTextLanguage(“ChinesePRC,English”);
導(dǎo)出
要導(dǎo)出某個(gè)加載文件,可以調(diào)用文檔對象的Export()方法。以下代碼段將加載的文件導(dǎo)出到RTF文件:
synthesizeIfNeed(); Document.Export(fileName,FREngine.FileExportFormatEnum.FEF_RTF, null);
配置文件
ABBYY FineReader Engine也支持“配置文件”,使引擎能夠根據(jù)當(dāng)前使用情況來優(yōu)化進(jìn)程。這些配置文件可以使程序自行啟動,并自動設(shè)置OCR質(zhì)量的最佳的處理參數(shù)。下面是目前可用的配置文件:
可以用Engine.LoadPredefinedProfile來加載這些配置文件。也可以通過.ini格式來創(chuàng)建自定義的用戶定義配置文件。該軟件自帶的幫助文件中有詳細(xì)說明,可以幫助用戶創(chuàng)建自定義的配置文件。可以調(diào)用Engine.LoadProfile來加載自定義的用戶配置文件。
其他平臺和產(chǎn)品
我只使用了FineReaderEngine的Windows SDK,但ABBYY也提供一些其他產(chǎn)品。FineReader Engine還支持Mac OS、Linux、移動SDK平臺使用,其中FlexiCapture EngineSDK還能進(jìn)行數(shù)據(jù)采集。通過ABBYY托管在Azure的云環(huán)境(訪問www.ocrsdk.com),開發(fā)者還能獲得Web API。此外,ABBYY還有某些功能強(qiáng)大的、即裝即用的OCR產(chǎn)品和數(shù)據(jù)采集產(chǎn)品可供用戶選擇。您可以訪問他們的網(wǎng)站,查看他們的全部產(chǎn)品。
后記
ABBYY FineReader Engine軟件開發(fā)工具包的設(shè)置和使用非常簡單,有了它,您也可以開發(fā)出具有強(qiáng)大OCR功能的應(yīng)用程序。如果您自己的應(yīng)用程序需要用到OCR,我強(qiáng)烈建議您試用他們的產(chǎn)品。
本文轉(zhuǎn)載自!
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)