Python+OCR图片文字识别,验证码识别,银行卡识别

利用测试如下:
1.识别文字
2.识别简单的验证码
3.识别银行卡

准备工作
1.安装pytesseract库:pytesseract是Tesseract关于Python的接口,在cmd中可以直接使用pip install pytesseract安装
2.用电脑下载安装tesseract,下载地址 http://digi.bib.unimannheim.de/tesseract/tesseract-ocr-setup-4.00.00dev.exe
一直点确定后完成安装,并配置环境变量,在这里插入图片描述
在CMD中输入tesseract -v, 如显示以下界面,则表示Tesseract安装完成且添加到系统变量中。
在这里插入图片描述
3.下载tesseract的简体中文语言包,下载地址为:https://github.com/tesseract-ocr/tessdata/find/master/chi_sim.traineddata ,再将chi_sim.traineddata放在C:\Program Files (x86)\Tesseract-OCR\tessdata目录下。
在这里插入图片描述

做好准备工作就可以实现OCR文字识别了,代码非常简单:

import pytesseract
from PIL import Image
import cv2
img = Image.open('0.jpg')
#text = pytesseract.image_to_string(img,lang='chi_sim')
pytesseract.pytesseract.tesseract_cmd = 'C://Program Files (x86)/Tesseract-OCR/tesseract.exe'
text = pytesseract.image_to_string(img,lang='chi_sim')
print(text)

0.jpg 如下:
在这里插入图片描述

运行结果如下
在这里插入图片描述
如果出现报错:
pytesseract.pytesseract.TesseractError: (1, ‘Error opening data file \Program Files (x86)\Tesseract-OCR\chi_sim.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your “tessdata” directory. Failed loading language ‘chi_sim’ Tesseract couldn’t load any languages! Could not initialize tesseract.’)

请移步这篇文章:https://blog.csdn.net/weixin_43746433/article/details/89922155

2.笔者突然想到,利用Ocr 能不能识别简单的验证码呢?

于是在网上随便找了个验证码,如图:6.png:
0.jpg
运行结果并不是让人满意,
在这里插入图片描述
为了更好的处理图片,可以将图片转为灰度图片,再去掉黑点,进行二值化降噪,
代码如下:

import pytesseract
from PIL import Image,ImageEnhance,ImageFilter
import cv2
img = Image.open('6.png')
text = pytesseract.image_to_string(img,lang='chi_sim')
print(text)
# 将图片变成灰色
img_gray = img.convert('L')
img_gray.save('./tmp/ode_gray.png')
 # 转成黑白图片
img_black_white = img_gray.point(lambda x: 0 if x > 200 else 255)
pic1='./tmp/code_black_white.png'
img_black_white.save(pic1)

#要去掉黑点,就是一个二值化降噪的过程。可以用PIL(Python Image Library)试试
im = Image.open(pic1)
im = im.filter(ImageFilter.MedianFilter())
enhancer = ImageEnhance.Contrast(im)
im = enhancer.enhance(2)
im = im.convert('1')
im.save('./tmp/jiangzao.png')
#im.show()
pytesseract.pytesseract.tesseract_cmd = 'C://Program Files (x86)/Tesseract-OCR/tesseract.exe'
#text = pytesseract.image_to_string(Image.open('./tmp/jiangzao.png'),lang='chi_sim')##,lang='eng 数字
text = pytesseract.image_to_string(im,lang='chi_sim')
print(text)

运行结果如下,成功!
在这里插入图片描述
3.如果利用ocr识别银行卡呢?
修改图片如下

在这里插入图片描述
运行结果如下:

在这里插入图片描述
银行卡的识别结果却差强人意,这涉及到更深层次的opencv知识,笔者会在下篇详细的讲述如何使用OpenCV和python进行信用卡识别

参考文献“:
1.https://blog.csdn.net/jclian91/article/details/80628188
2.https://segmentfault.com/q/1010000005686388

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值