2010-03-09 58 views
16

我一直在尋找Web上圖像中數字識別的資源。我發現許多鏈接提供了有關該主題的大量資源。但不幸的是它比幫助更困惑,我不知道從哪裏開始。識別圖像中的數字

我已經有一個圖像,其中有5個數字,不受干擾(沒有驗證碼或類似的東西)。數字在白色背景上是黑色的,用標準字體書寫。

我的第一步是分開數字。我目前使用的算法非常簡單,它只是檢查列是否完全是白色,因此是空間。然後它修剪每個角色,以便它周圍沒有白色邊框。這工作得很好。

但現在我堅持與數字的實際承認。我不知道猜測正確的最好方法是什麼。我不認爲直接比較字體是一個好主意,因爲如果數字只有一點點差別,它就不會有更多的工作。

任何人都可以告訴我這是怎麼完成的?

這個問題並不重要,但我會在C#或Java中實現它。我找到了一些能夠完成這項工作的圖書館,但我想自己實施,學習一些東西。

回答

14

爲什麼不考慮使用開源的OCR引擎,如Tesseract?

http://code.google.com/p/tesseract-ocr/

C#包裝爲正方體

http://www.pixel-technology.com/freeware/tessnet2/

Java包裝爲正方體

http://sourceforge.net/projects/tessocrinjava/

當你migh不要考慮使用第三方庫作爲自己的實施方案,只需集成第三方工具即可投入大量工作。請記住,看似簡單的東西(承認數字5與數字6)通常非常複雜;我們正在談論成千上萬行代碼複雜。至少,看看tesseract的源代碼,它會給你一個很好的理由來利用第三方庫。

這裏還有一個SO質疑會向您提供有關興田算法的一些想法:https://stackoverflow.com/questions/850717/what-are-some-popular-ocr-algorithms

+0

謝謝你的提示。其實我在C/C++中不太好,而且有很多代碼。我仍然希望不必去嘗試理解整個OCR軟件項目,只是爲了學習號碼識別。 – svens 2010-03-09 19:31:50

+0

這將消除您使用C++的需要...... C#包裝器非常簡單。除非你想成爲機器學習和圖像優化方面的專家,否則你真的不想嘗試推出自己的OCR解決方案。 – 2010-03-09 19:32:56

+0

+1 Tesseract真棒。只要您在命令行中調用它,就可以使用任何您想要的語言。 – rook 2010-03-09 19:37:56