今天在github上偶然看见一个关于身份证号码识别的小项目,于是有点手痒,也尝试了一下。不过由于以前也没有太多关于这方面的经验,所以还是走了一些弯路,所以在这里分享一些自己的经验。
项目链接:(https://github.com/haoxinl/haosir_learning)
依赖
opencv
pytesseract
numpy
matplotlib
特别注意要安装Tesseract-OCR,并将其路径加入到系统环境变量中
流程
获取身份证号区域
image-》灰度=》反色=》膨胀=》findContours
数字识别
采用tesseract识别,由于本项目所处的环境较为简单,所以使用pytesseract.image_to_string(image, lang='ocrb', config=tessdata_dir_config)函数即可识别
引用
下面是具体代码细节
首先是第三方库的导入
-*- coding: UTF-8 -*-
import cv2
import matplotlib.pyplot as plt
import numpy as np
import pytesseract
from PIL import Image
debug = 1
然后是灰度化函数
def grayImg(img):
# 转化为灰度图
gray = cv2.resize(img, (img.shape[1] * 3, img.shape[0] * 3), in