標籤:http os java 使用 io for 檔案 ar 資料
ABBYY FineReader Engine是一款功能強大的光學字元辨識(OCR)軟體開發套件(SDK),整合了ABBYY最先進的文檔識別和轉換軟體技術,如:光學字元辨識(OCR)、智能字元識別(ICR)、光學標記識別(OMR)、條碼識別(OBR)、文檔影像和PDF轉換。
如果開發人員需要開發具有以下任一功能的應用程式,可以考慮使用ABBYY FineReader Engine軟體開發套件(SDK):
•文檔轉換
•檔案歸檔
•檔案分類
•書籍歸檔
•文本提取
•欄位識別
•條碼識別
•名片識別
•映像預先處理
•掃描
這個SDK中包含有十幾個應用程式樣本,包括C++、C#、VB.NET、VB、Delphi、Java和幾種指令碼語言(JavaScript、Perl和VBScript)樣本。你可以查看代碼開發庫(Code Development Library)來快速入門,代碼開發庫中包含了SDK編程的各個方面。每個截面程式碼程式庫包含一個或多個程式碼片段並逐步描述了如何運行一項任務。
原文來自http://www.twain100.com/doc/3784
安裝和設定
在開發機上安裝FineReader時有幾個步驟。首先,必須安裝授權伺服器。如果只有1個開發人員使用SDK,此時可以將它直接安裝在開發機上。如果多個開發人員要從多個工作站使用FineReader,此時應該將授權伺服器安裝在所有開發人員都能訪問的應用程式伺服器上。授權伺服器必須安裝在物理機器上,而不是虛擬機器上。(請注意,該技術可以在虛擬機器和雲環境中運行)。通過授權管理員,您可以添加和啟用您的許可證,無論您的許可證是試用版或購買的正品版本。
接下來,可以將FineReaderEngine安裝在開發機上,並串連到授權伺服器。
安裝完成後,如果您使用的是Visual Studio2010或2012,此時必須再完成幾個步驟,才能夠使用可視化組件(控制項)。這些步驟在其內建的SDK協助檔案“在不同版本的Visual Studio中使用可視化組建”頁可以找到。
現在您就可以使用SDK進行開發了。你可以按照上文代碼開發庫中描述的應用程式範例進行開發或你可以著手建立自己的程式。
建立項目
首先,在C#或Visual Basic中建立1個新的Windows表單應用程式。我在開發應用程式時使用的是Visual Studio2010。
隨後將ABBYY控制項添加到Visual Studio工具箱視窗。我在工具箱中建立了1個新的ABBYY <section>。
將該項目的引用添加到ABBYY \Inc\.Net Interops\ 檔案夾下的三個Interop DLL檔案中,在安裝過程中,這三個檔案都登入並被添加到了GAC裡面。
UI控制項
下面介紹設計檢視Windows表單中的五個ABBYY控制項。
從左上方開始,沿順時針方向依次是:
檔案瀏覽器-該控制項顯示了從映像/檔案載入的頁面清單以及每個頁面的處理狀態。這些頁面可以顯示為縮圖或詳細資料檢視。
映像瀏覽器 –應用程式使用者可以通過該控制項來查看和編輯在檔案瀏覽器中選中的頁面。
文字編輯器 –使用者可以使用文字編輯器查看和編輯FREngine在指定頁面中識別出來的文字。
動態瀏覽器 – 使用者可以使用該控制項來放大或縮小映像瀏覽器中選定的地區。
文本校正器 – 使用者可以使用該控制項來調整掃描和驗證過程中未能識別的文本地區。這也是用於檔案拼字檢查的使用者介面。
在這些控制項中,將檔案和頁面同步是非常簡單的事情,只需將每個控制項添加到代碼中的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();
引擎
下面舉個簡單的例子,來說明如何運用所有五個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();
}
當然,在實際應用中,您可能會建立一個按鈕,使用者通過點擊這個按鈕可以從檔案系統中選擇需要開啟的檔案。必須注意的是,卸載引擎非常重要。如果不這樣做,就會佔用您的工作站所獲得的授權,直到手動將它從授權伺服器中釋放出來為止。我們在進行COM互動操作……資源和記憶體管理非常重要。
識別
對載入的檔案運行識別處理也是一件比較簡單的事情。下面是管理該進程的方法:
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保持響應,並能夠讓使用者啟動“取消”命令,以終止某個長時間啟動並執行文檔識別進程。
本軟體的預設識別語言是英語,如果您需要識別其他語言或任意語言群組合的文檔,你可以在開啟文檔前更改RecognizerParams中的SetPredefinedTextLanguage選項,步驟如下:
processingParams.PageProcessingParams.RecognizerParams.SetPredefinedTextLanguage(“ChinesePRC,English”);
匯出
要匯出某個負載檔案,可以調用文檔對象的Export()方法。以下程式碼片段將載入的檔案匯出到RTF檔案:
synthesizeIfNeed();
Document.Export(fileName,FREngine.FileExportFormatEnum.FEF_RTF, null);
設定檔
ABBYY FineReader Engine也支援“設定檔”,使引擎能夠根據當前使用方式來最佳化進程。這些設定檔可以使程式自行啟動,並自動化佈建OCR品質的最佳的處理參數。下面是目前可用的設定檔:
•DocumentConversion_Accuracy-在將文檔轉換為可編輯格式時最佳化其精確度。
•DocumentConversion_Speed-在將文檔轉換為可編輯格式時最佳化其速度。
•DocumentArchiving_Accuracy-在建立電子檔案時最佳化其精確度。
•DocumentArchiving_Speed- 在建立電子檔案時最佳化其速度。
•BookArchiving_Accuracy-在建立電子書館時最佳化其精度。
•BookArchiving_Speed-在建立電子書館時最佳化其速度。
•TextExtraction_Accuracy-在從檔案中提取文字時最佳化其精度。
•TextExtraction_Speed-在從文檔中提取文字時最佳化其速度。
•FieldLevelRecognition-識別短的文本片段。
•BarcodeRecognition-提取條碼。
• BusinessCardsProcessing–識別名片。
• HighCompressedImageOnlyPdf–無損壓縮檔,將所有檔案以圖片的形式儲存。
可以用Engine.LoadPredefinedProfile來載入這些設定檔。也可以通過.ini格式來建立自訂的使用者定義設定檔。該軟體內建的協助檔案中有詳細說明,可以協助使用者建立自訂的設定檔。可以調用Engine.LoadProfile來載入自訂的使用者設定檔。
其他平台和產品
我只使用了FineReaderEngine的Windows SDK,但ABBYY也提供一些其他產品。FineReader Engine還支援Mac OS、Linux、移動SDK平台使用,其中FlexiCapture EngineSDK還能進行資料擷取。通過ABBYY託管在Azure的雲環境,開發人員還能獲得Web API。此外,ABBYY還有某些功能強大的、即裝即用的OCR產品和資料擷取產品可供使用者選擇。您可以訪問他們的網站,查看他們的全部產品。
ABBYY FineReader軟體開發套件解析