【OCR识别验证码】--基于tesseract

目录

 

1、环境准备(windows)

2、实现目的:

3、代码实现

5、二值化处理

6、评价


 

1、环境准备(windows)

  1. 打开cmd(命令符窗口)输入以下命令:  pip install pytesseract 
  2. 安装Tesseract-OCR:下载地址为https://sourceforge.net/projects/tesseract-ocr-alt/files/,可以下载exe程序安装。

0da970a04a0140aea4ff28dc34803992.jpeg

 等待几秒自动下载(进不去多试几次)91d9528f953e4efe81b3898c479528f6.jpeg

 安装(next就行了,不过建议安装在C盘之外的盘)。。有点久

05c439a2148a48249da5b65e658352e5.jpeg

验证:cmd输入  tesseract -v

有下列信息即为成功:

72b1946b27dc4b7b8a7d011fb470f3ce.png

 

2、实现目的:

识别一张图片上的英文字母

b1017ed0e8e74547ab8e4663deda7ba5.png

 

3、代码实现

 

# -*- coding: utf-8 -*-
"""
@File  : OCR.py
@author: FxDr
@Time  : 2022/10/30 18:12
"""
from PIL import Image
import pytesseract

th = Image.open("img_out5.png")
print(pytesseract.image_to_string(th))

输出如下:

 

ac09bc14ba5f450dbb7b1b907d868c30.png

5、二值化处理去掉一些杂质

如下图:

a52ab78dac964ccf8820165d529828d3.png

二值化处理。上图文本的部分颜色比较深,

通过把大于某个临界灰度值的像素灰度设为灰度极大值,

把小于这个值的像素灰度设为灰度极小值,从而实现二值化

通过代码:

# -*- coding: utf-8 -*-
"""
@File  : OCR处理验证码.py
@author: FxDr
@Time  : 2022/10/30 17:17
"""

from PIL import Image
# 灰度处理
im = Image.open("img.png")
g = im.convert('L')
# g.show()

# 二值化处理
threshold = 150
table = []
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)
out = g.point(table, '1')
out.show()
out.save("img_out.png")

import pytesseract

th = Image.open("img_out.png")
print(pytesseract.image_to_string(th))

 会打开一张图片:img_out.png

31efd37d3d3248629661c09578197b4b.png

但是输出的结果为:

f3e23e9c4dac4770a7aeeba160860111.png

 可见:E的识别并不准确

 

 6、评价

我们通过上述示例可以知道,tesseract OCR

可以帮我们识别一些图片上的英文字母

而通过二值化我们可以去掉一些图片上的相比于文本较浅的的背景

但是也有不足:

识别并不是那么准确。

但是对那些简单的验证码来说,还是比较不错的

7、一些问题解决的参考方法

tesseract 安装及使用_showgea的博客-CSDN博客_tesseract

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值