什么方法适合从文档的照片中捕获(检测)MRZ ?我正在考虑级联分类器(例如Viola-Jones),但是用它来解决这个问题似乎有点奇怪。
如果您知道要在护照中查找文本,为什么不首先尝试查找护照模型点呢?使用ASM/AAM(主动形状模型,主动外观模型)技术匹配护照模板。一旦你有了护照位置信息,你就可以去掉你感兴趣的地区。这需要一些时间来实现。
将此方法视为一个很好的起点:
- 黑色大礼帽后面的水平衍生品突出显示长行字符。
- 形态学闭合操作将附近的字符和字符行合并成一个大的blob。
- 可选侵蚀操作,去除小斑点。
- Otsu阈值,然后进行轮廓检测,过滤掉那些明显太小、太圆或位于错误位置的轮廓,将为MRZ提供少量可能的位置
- 最后,计算你找到的位置的边界框,看看你是否可以成功地OCR它们。
这可能不是解决问题的最有效的方法,但它令人惊讶地健壮。
更好的方法是使用投影剖面方法。投影轮廓法基于以下思想:
创建一个数组A,为b/w输入文档中的每一行创建一个条目。现在将A[i]设置为原始图像第i行黑色像素的数量。
(您还可以通过考虑原始图像中的列而不是行来创建垂直投影配置文件)
现在数组A是文档的投影行/列直方图,检测mrz的问题可以通过检查A直方图中的谷来解决。
然而,这个问题并没有完全解决,所以有很多变化和改进。下面是一些额外的文档:
- 投影配置文件在谷歌学者:http://scholar.google.com/scholar?q=projection+profile+method
- Tesseract-ocr,一个伟大的开源OCR库:https://code.google.com/p/tesseract-ocr/
紫紫&Jones的haar类特征生成许多(许多)个特征来尝试描述一个对象,并且在缩放等方面更加健壮。他们的方法是解决难题的独特方法。
然而,在这里,您对问题有很多约束,这样的任何事情似乎都有点过头了。比起"尽早优化",我更倾向于评估现成的标准OCR工具,看看它们能带给你什么。我相信你会感到惊喜的。 PS:
您将需要预处理图像以隔离白色背景上的字符。这可以很容易地完成,并将大大帮助OCR算法。
你可以考虑使用描边宽度变换。
您可以按照这些提示来实现它。