2011-04-13 491 views
17

我正在將掃描文檔的大量集合數字化,並使用Tesseract 3作爲我的OCR引擎。它的輸出質量平庸,因爲它經常在實際文本之前和之後產生垃圾字符,並在文本中產生拼寫錯誤。OCR糾錯算法

對於前面的問題,似乎必須有策略來確定哪些文本實際上是文本,哪些文本不是(大部分文本是人的名字,所以我尋找的解決方案除了看詞典中的單詞)。

對於錯字的問題,大部分錯誤從字母幾個錯誤分類幹(代l1,並且I對彼此,例如),而且好像應該有方法來猜測哪些單詞拼寫錯誤(因爲英語中沒有太多單詞在它們中間有一個「1」),並且猜測適當的修正是什麼。

這個空間的最佳實踐是什麼?有這樣的事情的算法的免費/開源實現?谷歌已經收到了大量的論文,但沒有多少具體。如果沒有可用的實施方案,那麼許多論文中的哪一個將成爲一個好的起點?

+0

我有這樣的問題,沒有任何經驗,但請你分享索姆e你找到的鏈接?他們會做出非常有趣的閱讀。 – 2011-04-14 08:15:09

+6

@coffee這裏有幾個:[非交互式OCR糾正千兆級數字化項目](http://www.springerlink.com/content/l2724747mt78039l/),[使用學習的OCR錯誤的低成本校正多引擎環境](http://www.google.com/research/pubs/archive/35525.pdf),[在上下文中自動OCR糾錯的統計方法](http://www.ldc.upenn .edu/acl/W/W96/W96-0108.pdf)和[文憑論文:OCR錯誤的無監督後校正](http://www.l3s.de/~tahmasebi/Diplomarbeit_Niklas.pdf)。 – 2011-04-14 14:23:04

+0

@coffee這些主要處理修正拼寫錯誤,而不是消除輸出中的非文本。 – 2011-04-14 14:23:23

回答

0

對你有用的東西是嘗試this free online OCR並將結果與​​你的結果進行比較,以查看是否通過播放圖像(例如向上/向下縮放)來改善結果。

我使用它作爲使用tesseract自己(使用OpenCV修改圖像後)自己得到的結果的「上限」。

11

對於「確定哪些文本實際上是文本和哪些文本不是」,您可能需要查看來自開發Tesseract(ISRI)的同一部門的rmgarbage。我寫了一個Perl implementation,還有一個Ruby實現。對於1對l問題,我正在試驗ocrspell(同樣來自同一部門),其中their original source可用。

我只能發佈兩個環節,因此缺少的是:

  • ocrspell:在dx.doi.org]
  • rmgarbage進入 「10.1007/PL00013558」:搜索「垃圾自動刪除字符串在OCR文字:一種實現」
  • ruby implementation:搜索‘docsplit textcleaner’