2012-04-18 31 views
5

我正在使用tesseract進行OCR,並且已經注意到有時會出現分割錯誤,並且「明顯」屬於一起的字符被分割爲分隔字符串。如何使用邊界矩形更正OCR分割錯誤?

根據在一行文本中找到的字符及其邊界框的列表以及首要的OCR結果提示哪些字符屬於一個字,哪些算法可用於糾正分割錯誤或驗證結果?

因此,這此提供的數據:

List<Word> words; 
for(Word word : words){ 
    for(Char c : word.getChars()){ 
     char ch = c.getValue(); 
     Rectangle rect = c.getRect(); 
    } 
} 

回答

5

對於OCR校正後,考慮到該字符和單詞,但不可否認沒有邊框,一個常見的做法是

  • 使用一個字典的有效詞,儘可能全面
  • 檢查從針對字典
  • 的OCR算法的結果,如果一個字不能被發現在詞典中的精確匹配的話,試圖找到一個類似一個

爲了使這成爲可能,您需要準備詞典實施,以便它能夠搜索類似的字符串,也稱爲近似字符串匹配模糊字符串匹配

這是我所知道的是

  • 萊文斯坦atomata,由Schulz et al描述的兩種主要方法(DOI:10.1007/s10032-002-0082-8)
  • 公制樹,諸如通過Baeza-Yates and Navarro(DOI:10.1109/SPIRE.1998.712978)中描述的BK樹

這些方法,以及一般的近似字符串匹配方法(如搜索嘗試,q-gram匹配和n-gram匹配)都固有地使用某種編輯距離度量,或多或少類似於Levenshtein distance。在分析您正在處理的具體OCR錯誤後,您可能需要調整編輯距離算法以及您正在使用的其他資源以滿足您的特定需求。這可能涉及到的東西,如:

  • 假設您的OCR程序中經常混淆的字符,或者顯得格外相似字符之間較低的替代距離,當你正在處理
  • 字體或樣式呈現亦有可能因此而分割錯誤爲通過將頻繁出現雙字在字典(除單個詞)帳戶
  • 確保您的字典有儘可能多的命名實體和其他特定領域(或黃特定)元素

此外,您可以嘗試使用語法和/或統計語言模型,例如隱藏馬爾可夫模型或條件隨機場模型(類似於POS標記器使用的模型)來生成單詞在上下文中更正