原創(chuàng)|使用教程|編輯:龔雪|2015-07-07 09:36:30.000|閱讀 383 次
概述:在本白皮書中,我們將討論處理大量主表單的若干種策略,以及如何使用LEADTOOLS表單識別SDK快速準(zhǔn)確地處理表單。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
無數(shù)公司使用紙質(zhì)表單收集顧客、病人、學(xué)生的信息。表單的自動識別應(yīng)用非常廣泛,從一個簡單的明信片到復(fù)雜的多頁稅單都能使用,同時它還節(jié)省了時間和財力。然而,大型企業(yè)如金融機構(gòu)、政府機構(gòu)和醫(yī)院每天都要處理大量的表單,這會導(dǎo)致一些特殊的問題,若想正確有效的解決這些問題,必須有好的計劃、合理的表單設(shè)計和正確的軟件。
首先,在任何表單處理應(yīng)用程序中有兩種不同的表單:主表單和填寫的表單。主表單是空模板,定義了從哪里提取數(shù)據(jù)。客戶填寫并提交填寫好的表單,這些表單會與主表單比較(如,表單識別或分類),然后提取數(shù)據(jù)(如表單處理)。在任何組織中大量填寫的表單都非常常見,但是大企業(yè)面臨的特殊問題是存在大量的主表單。數(shù)以百計甚至數(shù)以千計的主表單需要指數(shù)級的處理時間。表單中可能存在相似的部分造成識別出錯,因此準(zhǔn)確率也會降低。
本白皮書中,我們將討論處理大量主表單的若干種策略,以及如何使用LEADTOOLS表單識別SDK快速準(zhǔn)確地處理表單。LEADTOOLS結(jié)合了多線程、云計算、條碼和兩階段分類識別,因此創(chuàng)建的表單識別和處理程序可以處理任何大規(guī)模場景。
當(dāng)今,使用多線程提高速度是不言而喻的。然而,確保你的應(yīng)用程序充分利用了硬件提供的一切也是必須的。大多數(shù)SDK廠商意識到了這點,并以庫的“線程安全”招徠顧客。但是一些客戶可能沒有理解這個表述有多模糊,因為他們沒有保證這到底是怎么回事。很有可能“線程安全”功能被劃分的非常簡單,因為它強行運行在一個單獨的線程上。
LEADTOOLS與它們不同的地方在于:可以非常簡單、集成化和容易的支持多線程控制。無需大量創(chuàng)建線程、無需傳遞信息時還要確保沒有緩沖區(qū)溢出、沒有內(nèi)存泄露,一切都正常運行。初始化AutoFormsEngine時為核心系統(tǒng)上的每一個處理器傳遞一個IOcrEngine,LEADTOOLS會為你處理接下來的事情。
// 為機器上的每一個處理器創(chuàng)建一個OCR引擎。允許在識別和處理過程中優(yōu)先使用線程。 ocrEngines = new List<IOcrEngine>(); for (int i = 0; i < Environment.ProcessorCount; i++) { ocrEngines.Add(OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false)); ocrEngines[i].Startup(formsCodec, null, String.Empty, String.Empty); } // 將資源庫指向包含已有主表單的文件夾 formsRepository = new DiskMasterFormsRepository(formsCodec, masterFormsFolder); autoEngine = new AutoFormsEngine(formsRepository, ocrEngines, null, AutoFormsRecognitionManager.Default | AutoFormsRecognitionManager.Ocr, 30, 80, true);
LEADTOOLS Cloud SDK基于與多線程一樣的基本原理,但是使用電腦網(wǎng)絡(luò)將大量工作進行下一級別的分發(fā)。通過設(shè)計和控制自己的云端基礎(chǔ)架構(gòu),識別速度的提升幾乎是沒有限制的。
在云上執(zhí)行處理器集中任務(wù)的好處遠遠超出了效率和速度。你還可以顯著減少運營成本,因為你的網(wǎng)絡(luò)上的任意電腦都可以作為一個工作機器使用。當(dāng)數(shù)以百計的電腦可以集合資源時,為什么要購置昂貴的專用服務(wù)器呢?LEADTOOLS充足的自定義讓你能夠利用正在使用的工作站上的未使用的處理能力。專注于電子表格和文字處理的員工真的充分利用了八核處理器的價值嗎?你可以選擇最大的CPU百分比、CPU核數(shù)、線程的數(shù)量 - 甚至一天的時間 - 這樣你的工作進程利用了員工的機器,同時還沒有阻礙他們的日常工作。云在處理填充表格的大量流時讓人非常驚訝,但是網(wǎng)絡(luò)上的每個節(jié)點仍有可能被大量主表單阻礙。既然你已經(jīng)最大化了硬件的潛力,就必須專注于設(shè)計主表單,繼續(xù)提高企業(yè)級表單識別應(yīng)用程序的速度。
條碼可能是將一個表單與其他大量表單區(qū)分開的最快速直接的方法。最明顯的好處是,條碼將大量信息存儲在一個小空間里。尤其是二維碼,如QR碼能夠存儲4296個字母數(shù)字字符。盡管這個獨特的標(biāo)識符很小,但是它們提供了一個非常實用的手段,以最小的變化適應(yīng)大量的在生產(chǎn)表單。
如果你可以使用簡單的條碼識別來識別表單,為什么要使用表單識別呢?使用表單識別可能乍一看有點夸張,但是LEADTOOLS高級的表單識別和處理技術(shù)有很有超出分類的好處。如果你打算使用OCR識別表單中用戶提供的信息字段,必須采用額外的步驟準(zhǔn)確提取信息。這包括但是不限于:圖像清理、頁面對齊、不同DPI的補償偏移量以及識別提取的文本。實現(xiàn)這些步驟是一個艱巨的任務(wù),需要成千上萬行復(fù)雜的代碼,但是使用LEADTOOLS用很少的代碼就能自動完成。
// 創(chuàng)建AutoFormsEngine來使用條碼識別 autoEngine = new AutoFormsEngine(formsRepository, ocrEngines, null, AutoFormsRecognitionManager.Barcode, 30, 70, true); // 在文檔中運行表單識別和處理 AutoFormsRunResult runResult = autoEngine.Run(document, null);if (runResult != null) { // 處理識別的表單,提取需要的信息 foreach (FormPage formPage in runResult.FormFields) { foreach (FormField field in formPage) { // 使用提取出的字段數(shù)據(jù)... } } }
對于異常龐大的場景,運行表單識別算法兩次通常更快一些:第一次確定類別,第二次在類別中識別表單。減少與填充表單比較的主表單數(shù)目可以節(jié)省時間。
例如,你的公司在多個國家或地區(qū)開展業(yè)務(wù)。每個區(qū)域使用相似的表格,但是有輕微的變化如聯(lián)系信息、logo或字段。當(dāng)設(shè)計表單時,識別和修正模板圖像間的不同,創(chuàng)建一個類別主表單,如下圖所示。
看看上面的示例,你會發(fā)現(xiàn)當(dāng)我們對填充表單3進行兩階段識別時,它首先被確認(rèn)為B類,在第二階段與所有B類的其他表單進行比較,最后確認(rèn)為表單3。使用LEADTOOLS,你可以縮小表單識別算法,只搜索庫中指定的類別。盡管兩階段識別看起來是個很復(fù)雜的過程,但是代碼卻非常簡單:
// 第一階段我們識別類別 recognizeResult = autoEngine.RecognizeForm(filledForm, formsRepository.RootCategory.ChildCategories.Where( i => i.Name == "Categories").ToList()); if (recognizeResult != null) { // 第二階段在已確認(rèn)的類別里識別表單 foundMasterFormCategory = recognizeResult.MasterForm.Name; recognizeResult = autoEngine.RecognizeForm(filledForm, formsRepository.RootCategory.ChildCategories.Where( i => i.Name == foundMasterFormCategory).ToList()); if (recognizeResult != null) { foundMasterForm = recognizeResult.MasterForm.Name; } }
上面的例子非常簡單,只有兩個類別且每個類別只包含兩個表單,速度的優(yōu)勢很難體現(xiàn)出來。然而,當(dāng)處理包含成百上千個主表單的庫時,優(yōu)勢非常明顯。LEADTOOLS將精心設(shè)計的主表單與屢獲殊榮的文檔圖像技術(shù)相結(jié)合,你可以使用它創(chuàng)建任何大型企業(yè)要求的在減少時間和成本上都有突破的表單識別應(yīng)用程序。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn