OCR识别系列之一-----文档字符识别

时间:2021-03-13 01:23:35

假如输入系统的图像是一页文本,那么识别时的第一件事情是判断页面上的 文本朝向,因为我们得到的这页文档往往都不是很完美的,很可能带有倾斜或者污渍,那么我们要做的第一件事就是进行 图像预处理,做角度矫正和去噪。

然后我们要对文档版面进行分析,每一行进行行分割,把每一行的文字切割下来,最后再对每一行文本进 行列分割,切割出每个字符,将该字符送入训练好的OCR识别模型进行 字符识别,得到结果。

但是模型识别结果往往是不太准确的,我们需要对其进行识别结果的矫正和优化,比如我们可以设计一个语法检测器,去检测字符的组合逻辑是否合理。比如,考虑单词Because,我们设计的识别模型把它识别为8ecause,那么我们就可以用语法检测器去纠正这种拼写错误,并用B代替8并完成 识别矫正。这样子,整个OCR流程就走完了。从大的模块总结而言,一套OCR流程可以分为:

版面分析 -> 预处理-> 行列切割 -> 字符识别 -> 后处理识别矫正

比如在对电表数字进行识别时,考虑到电表上的字体较少(可能就只有阿拉伯数字),而且字体很统一,清晰度也很高,所以识别难度不高。针对这种简单的识别场景,我们首先考虑的识别策略当然是最为简单和暴力的模板匹配法。我们首先定义出数字模板(0~9),然后用该模板滑动匹配电表上的字符,这种策略虽然简单但是相当有效。