Pytesser3字符识别
前言
这里使用python3.6
Pytesser3是一个可以在python内部使用Tesseract-Ocr的库.
Tesseract-Ocr是一个开源的字符识别引擎(engine), 可以供我们使用来识别一些简单的图形验证码.
安装与使用
windows配置Pytesser3
url: https://download.youkuaiyun.com/download/one_of_them/10640272 (我也不知道该怎么免费…)
安装pytesser3: pip install pytrsser3
安装速度慢查看: https://blog.youkuaiyun.com/One_of_them/article/details/81456255 (= .= )
配置:
将pytesser3包下的__init__文件内的tesseract_exe_name的值设置为tesseract.exe的路径.
eg: ./tesseract.exe
linux配置Pytesser3
安装tesseract:
sudo apt-get install tesseract-ocr
sudo apt-get install libtesseract-dev
安装pytesser3: pip3 install pytrsser3
配置:
将pytesser3包下的__init__文件内的tesseract_exe_name的值设置为tesseract.exe的路径.
eg: ./tesseract.exe
使用Pytesser3
windows
需识别的图片(默认识别字母类型):
from PIL import Image
import pytesser3
im1 = Image.open('a.png')
im1.show()
im2 = im1.convert('L') # 将图片模式转为灰度图像, 灰度处理.
im2.show()
pixelData = im2.load() # 加载图片数据.
w, h = im2.size
# 二值化: 判断一个像素点的值, 要么设置为白色, 设置为黑色.
for x in range(w):
for y in range(h):
if pixelData[x, y] < 125: # 255为白色, 0为黑色. pixel小于某个值就转为黑色.
pixelData[x, y] = 0
else:
pixelData[x, y] = 255 # 否则白色.
# 降噪: 去除图片多余的杂乱黑点, 即对每个像素点进行判断, 判断其周围像素是否与自己相同, 然后处理.
for x in range(1, w - 1):
for y in range(1, h - 1):
count = 0
if pixelData[x - 1, y] == 255:
count += 1
if pixelData[x + 1, y] == 255:
count += 1
if pixelData[x, y - 1] == 255:
count += 1
if pixelData[x, y + 1] == 255:
count += 1
if count > 3:
pixelData[x, y] = 255
im2.show()
result = pytesser3.image_to_string(im2)
print(result)
im2.close()
im1.close()
结果:
AHCa
Process finished with exit code 0