2011-09-24 81 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