如何使用Opencv进行文档识别和OCR?

27

我是一个计算机视觉的初学者,但我知道如何使用一些opencv函数。我正在尝试使用Opencv进行文档识别,我想寻求帮助找到实现它的步骤。

我考虑使用opencv示例find_obj.cpp,但是文档(例如护照)有一些变量,如姓名、出生日期和图片。因此,我需要帮助定义实现这个目标的步骤,以及在这些步骤中需要使用哪些函数。

我不是要求整个代码,但如果有任何示例链接或者您可以提供详细解说,那将非常有帮助。

1个回答

38

这里有两个非常不同的步骤。一个是检测你的对象,另一个是分析它。

对于对象检测,您只需尝试确定对象是否在框架内以及大致位置。OpenCv特征框架非常适合此功能。有一些教程和全面的示例代码,请参见OpenCv features2d教程,特别是特征匹配教程

对于分析,您需要深入研究光学字符识别(OCR)。OpenCv不包括OCR库,但我建议尝试使用tesseract-ocr,它是一个出色的OCR库。如果您的文档具有固定的结构(文本字段的一致布局),那么tesseract-ocr就足够了。对于更高级的分析,请查看ocropus,它使用tesseract-ocr但添加了布局分析。


我尝试了这个解决方案,但如果在实际应用中没有成功,我认为使用模板匹配时必须只使用相同分辨率的图像。不是吗? - Ricardo Cunha
2
如果您在处理实际案例时遇到问题,可能需要为您使用的特定字体训练tesseract-ocr。否则,它将使用其默认数据库,这可能与您正在处理的文本不匹配。在将文本提供给tesseract-ocr之前,您可以尝试缩放文本,我发现高度约为20像素效果很好。 - Kyle McDonald
你有关于如何训练Tesseract的链接吗?我在获得良好结果方面遇到了一些麻烦,而且找不到易懂、好的教程来指导如何进行训练。 - Tjorriemorrie
1
@Tjorriemorrie 选择您需要的版本以获取训练指南 - eshirima

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接