2011-09-24 80 views
14

我是一名計算機視覺初學者,但我知道如何在opencv上使用一些函數。我嘗試使用Opencv進行文檔識別,我想找一個幫助來找到它的步驟。如何使用Opencv進行OCR文檔識別?

我想使用opencv的例子find_obj.cpp,但是文檔,例如護照,有一些變量,名稱,出生日期,圖片。所以,我需要一個幫助來爲它定義步驟,並且如果可能的話,我必須在步驟上使用功能。

我並不是要求一個完整的代碼,但如果任何人有任何示例鏈接,或者您只需鍵入演練,那就非常有幫助。

回答

24

這裏涉及兩個非常不同的步驟。一個是檢測你的對象,另一個是分析它。

對於對象檢測,你只是想弄清楚對象是否在框架中,以及它的大概位置。 OpenCv功能框架非常適合這一點。有關一些教程和全面的示例代碼,請參閱OpenCv features2d教程,尤其是feature matching tutorial

要進行分析,您需要深入研究光學字符識別(OCR)。 OpenCv不包含OCR庫,但我建議檢查tesseract-ocr,這是一個很好的OCR庫。如果您的文檔具有固定結構(文本字段的一致佈局),那麼tesseract-ocr就是您所需要的。要進行更高級的分析檢查ocropus,它使用tesseract-ocr但添加布局分析。

+0

我試試這個解決方案,但是如果我有我沒有在現實世界的例子上取得成功,我認爲模板數學我只能使用具有相同分辨率的圖像。或不? – Ricardo

+1

如果您在現實世界中遇到問題,您可能需要爲您正在使用的特定字體培訓tesseract-ocr。否則,它將使用它的默認數據庫,並且可能與您正在使用的文本不匹配。您可以嘗試縮放文本,然後再將其輸入到tesseract-ocr,我發現大約20像素的高度效果很好。 –

+0

你有鏈接如何訓練tesseract?我很難得到好的結果,找不到一個可以理解的,很好的教程如何做培訓 – Tjorriemorrie