• <menu id="w2i4a"></menu>
  • logo LEADTOOLS使用教程

    文檔首頁>>LEADTOOLS使用教程>>LEADTOOLS教程:使用LEADTOOLS OMR處理大型測試和調查

    LEADTOOLS教程:使用LEADTOOLS OMR處理大型測試和調查


    LEADTOOLS (Lead Technology)由Moe Daher and Rich Little創(chuàng)建于1990年,其總部設在北卡羅來納州夏洛特。LEAD的建立是為了使Daher先生在數碼圖象與壓縮技術領域的發(fā)明面向市場。在過去的發(fā)展歷程中,LEAD以其在全世界主要國家中占有的市場領導地位,在數碼圖象開發(fā)工具領域中已成為既定的全球領導者。LEADTOOLS開發(fā)與發(fā)布的LEAD是屢獲殊榮的開發(fā)工具包。

    點擊查看LEADTOOLS系列產品

    光學標記識別(OMR)是形式識別的重要組成部分,但可能非常復雜。從表面上看,僅通過計數像素就可以很容易地檢測出盒子是否被填充。盡管這對于小區(qū)域而言可能是正確的,但您如何處理帶有數百個復選框的圖像,如選擇試卷或調查問卷?

    充滿泡沫的文檔面臨幾個獨特的挑戰(zhàn):

    • 設置模板,以便識別引擎知道要查找的氣泡以及在何處

    • 為每個氣泡或氣泡組分配適當的值

    • 處理與模板匹配的填充文檔

    • 理解所有數據并處理人為錯誤

    • 提供分析信心報告

    LEADTOOLS通過一套直觀、易于使用的API和示例應用程序來解決這些問題,并在文檔圖像中創(chuàng)建和處理大量OMR字段。

    創(chuàng)建模板

    對于大型OMR數據集,第一個(也可能是最大的)問題是必須設置主表單模板的麻煩。LEADTOOLS表單識別的第一版包括OMR支持。但是,該版本的主要目標是捕獲單個復選框,而不是捕獲大量復選框。由于您必須在每個OMR字段周圍繪制一個矩形,因此如果要設置大型調查表或考試表很麻煩。

    對于版本20,LEADTOOLS添加了一個用戶友好的單擊和拖動界面來創(chuàng)建整個字段分組。解析后,您可以選擇是按行還是按列細分每個答案,以及分配給每個單元格的值。提供了常見的答案集(1-9,A-Z等)以及分配自定義值的功能。您還可以告訴它以逗號分隔(用于多項選擇答案)或組合為單個字符串(用于名稱和日期)輸出數據。

    在后臺,界面和對話框正在創(chuàng)建和編輯OmrFieldOptions對象。通過簡單地傳遞邊界矩形和一些選項,主模板的ITemplateForm.ExtractInfo方法將找到并創(chuàng)建所有單獨的子字段,并對數據是什么進行一些初步猜測。(例如,方向、值、使用答案鍵等)

    使用LEADTOOLS OMR處理大型測試和調查

    圖1:想象一下在此表單的每個OMR氣泡周圍繪制一個矩形!

    OmrField omrField = new OmrField();
    omrField.Bounds = lr;
    omrField.PageNumber = _currentPageIndex + 1;
    omrField.Name = "Answers 1-15";
    
    // Parse the area defined by the OmrField and populate the individual OMR sub-// fields within it
    templateForm.ExtractInfo(_currentPageIndex + 1, new Field[] { omrField });
    for (int i = 0; i < omrField.Fields.Count; i++)
    {
    	if (string.IsNullOrWhiteSpace(omrField.Fields[i].Name))
    	{
    		omrField.Fields[i].Name = string.Format("Area {0}", i.ToString());
    	}
    }
    
    // Set additional options (you can also do this programmatically if desired)
    OmrFieldDialog dlg = new OmrFieldDialog(omrField, formPage.Image.Clone());
    if (dlg.ShowDialog() == DialogResult.OK)
    {
    	return omrField;
    }



    “現在更像是它!”

    處理填寫的文件

    設置主模板后,就該對它處理已填寫的表單了。您可以選擇單個文件,也可以選擇整個文件夾來加載并與模板進行比較。如果要處理測試結果,則還可以在此步驟中提供答案鍵,以及其他選項,例如及格分數。

    使用LEADTOOLS OMR處理大型測試和調查

    圖2:管理要處理的已填寫表格

    使用LEADTOOLS OMR處理大型測試和調查

    圖3:選擇和配置答案鍵

    不要讓截圖的簡單性蒙騙您,OMR引擎本能地處理了很多幕后工作。自動預處理和對齊算法正是使LEADTOOLS如此特別的原因。掃描文檔時,可能會出現一些常見的缺陷,例如角度稍微偏斜或黑色邊框。這些問題由LEADTOOLS OMR引擎自動處理和解決。最重要的是,豐富的LEADTOOLS圖像處理庫為您提供了專門用于校正圖像缺陷和變形的綜合工具。但是,即使使用更高質量的分辨率,諸如主表單和填充表單之間不同的掃描分辨率之類的不太明顯的問題也會極大地影響圖像比較算法。這是因為填寫的表單圖像和模板的物理坐標將不匹配。另外,來自ADF掃描儀的非線性變形(例如,文檔的某些部分的垂直拉伸)通常會繞開未經訓練的眼睛,并且還會困擾處理。LEADTOOLS Forms Processing引擎會自動處理此類場景以及更多場景。這就是使其成為市場上功能最強大且最可靠的SDK之一的原因。

    評分和分析結果

    啟用對模板中的OMR字段評分的選項時,LEADTOOLS會將用戶的已填寫響應與答案鍵進行匹配。除了檢索結果之外,還將顯示其他統(tǒng)計信息。

    使用LEADTOOLS OMR處理大型測試和調查

    圖4:處理結果,答案以黃色突出顯示以供審核

    根據模板處理填寫的表格后,用戶可以查看結果。LEADTOOLS將使用其可信度報告,然后根據顏色代碼,正確(綠色),錯誤(紅色)和需要審查(黃色)。當氣泡沒有完全填充或沒有被淺色陰影填充時,通常會發(fā)生低置信度值??梢栽谠O計模板時微調OMR靈敏度,但是通常最好在靈敏度低的方面犯錯,因為大多數檢查在氣泡內都有字母或數值,可能會導致假陽性。此外,如果該字段為空白,或者對于同一答案填充了多個氣泡,則應用程序將通知審閱者。

    使用LEADTOOLS OMR處理大型測試和調查

    圖5:查看答案

    審閱窗格將顯示已處理表格中的區(qū)域和答案鍵,以進行簡單驗證。例如,如果部分填充的氣泡導致引擎將答案檢測為空白,則用戶可以更改答案并獲取更新的統(tǒng)計信息。用戶單擊“下一步”按鈕后,它將更改概述中單元格的背景顏色,表明答案已被查看。

    您還可以在處理表單之前或之后自定義“需求審查”標準。這使用戶能夠過濾出結果,然后對需要檢查的結果進行分類。

    使用LEADTOOLS OMR處理大型測試和調查

    圖6:設置要審查的新過濾器

    使用LEADTOOLS OMR處理大型測試和調查

    圖7:帶有新突出顯示顏色的復習考試

    結論

    LEADTOOLS OMR SDK超越了簡單填充/未填充文檔圖像上光學標記的檢測范圍。它為應用程序開發(fā)人員提供了設計,處理和分析從考試和調查中發(fā)現的大量氣泡中檢索到的數據所需的一切。

    本文內容到這里就結束了,感興趣的朋友可以繼續(xù)關注我們,了解更多產品信息~


    LEADTOOLS Imaging Pro Developer Toolkit、LEADTOOLS Document Imaging Suite Developer Toolkit、LEADTOOLS Medical Imaging Developer Toolkit是LEADTOOLS的產品,點擊查看產品詳情

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();