我正在开发一种OCR来检测信用卡。
扫描图像后,我会得到一个带有位置的单词列表。 有关检测哪些字对应于信用卡各个字段(数字,日期,名称)的最佳方法的任何提示/建议?
例如:
position = 96.00 491.00
text = CARDHOLDER
提前致谢
答案 0 :(得分:3)
您的第一个问题是大多数OCR都没有针对占据大部分"页面的少量文本进行优化。 (或卡片图像,在您的情况下)在空间分离的块中。他们期望来自扫描书籍或报纸的文字或文字页面。所以,他们在分析图像时不太可能 。
由于字体相当统一,他们可能会很好地识别字符,但布局会混淆页面分割算法,因此您输出的文本可能不是正确的顺序。例如," 1234"卡号和较小的" 1234"下面它构成一列文字,同样是第二组两个四个数字和有效期。
对于您事先了解布局的特殊情况,您确实需要开发自己的页面分割算法,将图像分解为区域,例如卡号,持卡人姓名,开始和到期日期。这不应该太强很难,因为我认为这些组件的位置是在信用卡上标准化的。假设良好的预处理和二值化,您基本上可以进行水平直方图并在低谷处分割图像。
然后将每个区域提取为一个单独的图像,其中只包含一行文本并将其提供给OCR。
或者(快速而肮脏的方法)
-psm
(页面分割模式)参数设置,可能是6(但尝试看看能给你最好的结果)答案 1 :(得分:0)
除了Mikesname提供的优秀提示之外,无论您使用哪种OCR引擎,如果使用图像处理将图像转换为双色(纯黑色和白色),例如附加的副本,您都可以大大提高识别结果你的形象。