2013-04-07 230 views
4

我有這樣的圖像(白色背景和黑色文本)。如果沒有噪音(如您所見:數字線的頂部和底部有許多噪音),Tesseract可以識別出數字非常好。如何自定義Tesseract忽略噪音?

但是當有噪音時,Tesseract嘗試將其識別爲數字並添加更多數字。這真的很糟糕。我如何使Tesseract忽略噪音?我無法制作預處理圖像,使其更加鮮明或鮮明。這沒有任何幫助。

如果某些工具只能高亮字符串行。這對Tesseract來說可能是非常好的輸入。請幫幫我。謝謝大家。

enter image description here

回答

2

你可以嘗試下采樣的二進制圖像,並再次品嚐它(pyrDownPyrUp)或你可以嘗試smooth你的形象與高斯模糊。並且,如已經暗示的那樣,erodedilate您的圖像。

1

我看到你的問題的解決方案3:

  1. 正如已經sugested - 嘗試使用erodedilate或某種模糊的。這是最簡單的解決方案。
  2. 查找所有等高線(findContours函數),然後刪除面積小於某個值的所有等值線(嘗試不同的值,您應該找到正確的等高線)。請注意,該值可能不是恆定的 - 例如,您可以嘗試使用平均輪廓面積的80%(只需添加所有輪廓面積,再除以輪廓數量並乘以0.8)。
  3. 查找所有等高線。創建一個整數數組,長度等於圖像高度。用零填充數組。現在爲每個輪廓:
    I.找到頂部和底部點(y座標的最大值和最小值的點)。我們來命名這個點TB
    二,將一個索引在B.yT.y之間的所有元素添加一個。 (所以如果B =(1,4)並且T =(3,11),則向數組[4],數組[5],數組[6] ...,數組[11])加1。
    找到數組的最大元素。我們將這個值命名爲v。所有輪廓B.y <= v <= T.y應該是字母,其他輪廓 - 噪音。
0

做連接組件標籤....這是blob計數....所有劑量噪聲永遠不會匹配數字的大小....與形態學技術的數字也得到修改...標籤image ...計算每個標記區域中的像素數量並設置一個閾值(您可以輕鬆設置,因爲您只會有數字和噪音)... cvblob是用C++編寫的代碼庫,可供用戶使用...

1

通過使用圖像處理技術(形態學操作,如侵蝕和擴張),您可以輕鬆去除這些噪音,您可以選擇opencv進行此操作。