2015-10-31 37 views
1

我經常使用掃描的文件。這些文件包含我需要手動鍵入到計算機中的表格(類似於Excel表格)。爲了使任務更糟糕,表格可以具有不同數量的列。手動輸入到Excel中至少可以說是平凡的。使用OpenCV檢測表

我覺得如果我能把一個程序放到OCR上,我可以節省一個星期的工作時間。是否有可能使用OpenCV和OCR檢測標題文本區域,檢測到圖像座標後面的文本。

我可以在OpenCV的幫助下實現嗎?還是需要完全不同的方法?

編輯:示例表實際上只是一個標準表,類似於您可以在Excel和其他電子表格應用程序中看到的內容,請參見下文。

enter image description here

+0

是的,你可以。但除非你有明確的約束條件,否則很難獲得100%完美的結果。你能顯示一些掃描的表格嗎? – Miki

+0

@Miki謝謝,我添加了一個例子。 – Datageek

+0

你能提供一個或兩個掃描文件嗎? scansion的質量對最終結果有很大的影響。 – Miki

回答

2

這個問題似乎有點老了,但我一直在工作,也對類似的問題,並得到了我自己的解決方案,我在這裏解釋。

對於使用任何OCR引擎有許多challanges在得到良好的精度,其包括以下主要箱子閱讀文本:

  1. 噪聲的存在由於圖像質量差/不需要的元素/斑點在背景區域。這需要進行一些預處理,如去除噪聲,這可以使用高斯濾波器或普通中值濾波器方法輕鬆完成。這些也可在opencv中獲得。

  2. 圖像方向錯誤:由於方向錯誤OCR引擎無法正確分割圖像中的線條和單詞,從而導致最差的準確性。

  3. 線條的存在:在做字或線段分割時OCR引擎有時也會嘗試將單詞和線條合併在一起,從而處理錯誤的內容並因此給出錯誤的結果。 還有其他問題,但這些是基本的。

在這種情況下,我認爲掃描圖像的質量是相當不錯,簡單,以下步驟可以用來解決問題。

  1. 簡單圖像二值化將刪除背景內容,只留下必要的內容,如下所示。 Binary image
  2. 現在我們必須刪除在這種情況下是表格網格的行。這也可以使用連接的組件和刪除大的連接組件來識別。因此,我們最終需要被提供給OCR引擎的圖像看起來就像這樣。

    enter image description here

  3. 對於OCR,我們可以使用Tesseract開源OCR引擎。我從OCR獲得以下結果:

    標題標題

    標題!HEADER2 header3

    row1cell1 row1cell2 row1cell3

    row2cell1 row2cell2 row2cell3

  4. 我們可以在這裏看到的結果還是比較準確的,但也有像 頭的一些問題!這應該是header1,這是因爲OCR引擎誤解了!與1.這個問題可以通過使用基於正則表達式的操作進一步處理結果來解決。

後處理OCR結果後,可以解析它,以讀取行和列值。

同樣在這種情況下,可以使用它們的字體信息來對圖紙標題,標題和正常單元格值進行分類。

+0

感謝您的詳細解答@ flamelite。你知道可以這樣做的任何開源代碼嗎?你有沒有公佈你的解決方案? – Datageek

+1

我不確定任何具體的開源應用程序,它執行所述的所有步驟。我沒有開發任何應用程序,只需點擊一下按鈕即可完成上述所有功能。 – flamelite