OCR匹配框架在信用卡中的字段位置

时间:2014-11-20 18:11:32

标签: ocr tesseract

我正在开发一种OCR来检测信用卡。

扫描图像后,我会得到一个带有位置的单词列表。 有关检测哪些字对应于信用卡各个字段(数字,日期,名称)的最佳方法的任何提示/建议?

例如:

    position = 96.00 491.00
    text = CARDHOLDER

enter image description here

提前致谢

2 个答案:

答案 0 :(得分:3)

您的第一个问题是大多数OCR都没有针对占据大部分"页面的少量文本进行优化。 (或卡片图像,在您的情况下)在空间分离的块中。他们期望来自扫描书籍或报纸的文字或文字页面。所以,他们在分析图像时不太可能

由于字体相当统一,他们可能会很好地识别字符,但布局会混淆页面分割算法,因此您输出的文本可能不是正确的顺序。例如," 1234"卡号和较小的" 1234"下面它构成一列文字,同样是第二组两个四个数字和有效期。

对于您事先了解布局的特殊情况,您确实需要开发自己的页面分割算法,将图像分解为区域,例如卡号,持卡人姓名,开始和到期日期。这不应该太强很难,因为我认为这些组件的位置是在信用卡上标准化的。假设良好的预处理和二值化,您基本上可以进行水平直方图并在低谷处分割图像。

然后将每个区域提取为一个单独的图像,其中只包含一行文本并将其提供给OCR。

或者(快速而肮脏的方法)

  • 指示OCR您要识别的内容由单列组成(即防止它试图找出页面布局本身)。你可以使用Tesseract使用-psm(页面分割模式)参数设置,可能是6(但尝试看看能给你最好的结果)
  • 制作Tesseract输出hOCR格式,您可以在配置文件中设置。 hOCR格式包括相对于整个图像输出的行的边界框。
  • 编写一个算法,将hOCR中的边界框与比较,你知道每个卡片组件应该(寻找一定比例的重叠,由于显而易见的原因,它不会完全匹配。 )

答案 1 :(得分:0)

除了Mikesname提供的优秀提示之外,无论您使用哪种OCR引擎,如果使用图像处理将图像转换为双色(纯黑色和白色),例如附加的副本,您都可以大大提高识别结果你的形象。Image converted to black and white