代码已开源
github 地址:
https://github.com/KaiJin1995/tesseract_cardRecognition
本实验是识别放在桌子上的卡片上的英文人名、日期和编号。不要中文字符和其他英文字符。而限制条件在于没有大规模数据集,因此无法使用学习的方法完成这个任务。由于编号人名等信息在卡片上的位置相对固定,因此,采用了规则操作加图像形态学操作。分成了三个步骤:
1. 预处理(卡片区域获取)
2. 检测部分(定位卡片中的英文人名、编号和日期)
3. 识别部分(识别卡片中的人名编号和日期,这里采用tesseract)
关键点在于:灰度化、二值化、自适应、膨胀腐蚀、颜色变换。
解决的难点在于:有光照等亮度变化,对于灰度化和二值化等操作有影响。
预处理
首先检测图像中的card位置,在这里采用了膨胀腐蚀以及颜色变换的思想。由于数据集保密的原因,暂时不方便公开。
数据集特点:卡片是蓝色的、背景是桌面
颜色变换是图片中的使将蓝色部分保留。即灰度图只有蓝色部分是白色,其他均为黑色。
def img_change(img_a): # 保留蓝色部分
img_shape = img_a.shape
img = img_a.copy()
h = img_shape[0]
w = img_shape[1]
for i in range(h):
for j in range(w):
if (img[i, j, 0] > img[i, j, 1]