tesseract图片识别库的简单操作

https://digi.bib.uni-mannheim.de/tesseract/    下载连接中有dev的是分支,稳妥选择没有dev的4.0最新版本
解压到DE盘下                        一直next安装,选择安装到  E:	esseractTesseract-OCR
设置系统路径               变量名|TESSDATA_PREFIX      值(value)|E:	esseractTesseract-OCR	essdata
设置tesseract命令路径                在系统环境变量(Path)中添加E:	esseractTesseract-OCR
cmd切换到存放图片路径,识别带有英文(默认支持)的图片,tesseract 1.png a
这条命令的意思是:找到1.png图片并把识别的数据存放到a.txt文件中
下载培训中文数据:https://github.com/tesseract-ocr/tesseract/wiki/Data-Files    (chi_sim)
查看所有命令 tesseract -h
查看所有培训语言数据 tesseract --list-langs
识别带有中文的图片:tesseract 2.png b -l chi_sim
这条命令的意思是:找到2.png图片并用中文识别之后把数据存放到b.txt

 1.Python下tesseract的简单使用

import pytesseract
from PIL import Image

# 获取tesseract下的可执行文件
pytesseract.pytesseract.tesseract_cmd = r"E:	esseractTesseract-OCR	esseract.exe"
# 获取将要识别的图片
image = Image.open(r"E:imgs3.png")
# 开始识别图中文字,lang="带选择语言", 默认英文
text = pytesseract.image_to_string(image, lang="chi_sim")
print(text)

 2.网络下载验证码识别

import pytesseract
from urllib import request
from PIL import Image
import time


def main():
    # 获取图片识别可执行文件路径
    pytesseract.pytesseract.tesseract_cmd = r"E:	esseractTesseract-OCR	esseract.exe"
    url = "验证码地址"
    while True:
        # 先下载验证图片到本地
        request.urlretrieve(url, r"E:imgscaptcha.png")
        # 打开已下载验证图片地址
        image = Image.open(r"E:imgscaptcha.png")
        # 开始识别图中文字
        text = pytesseract.image_to_string(image)
        print(text)
        time.sleep(2)


if __name__ == '__main__':
    main()

 3.tesserocr识别验证码

"""图片识别
http://my.cnki.net/elibregister/CheckCode.aspx    获取图片地址
"""
import tesserocr
import requests
from PIL import Image
from urllib.request import urlretrieve


url = "http://my.cnki.net/elibregister/CheckCode.aspx "
# 调用urllib.request下的urlretrieve()方法请求图片地址并保存图片
urlretrieve(url, "code.png")

# 1.识别概率不高,容易受到线条、模糊化干扰
image = Image.open("code.png")      # 读取图片为Image对象
# 调用tesserocr模块下的image_to_text()方法识别出图片中的字符串
result = tesserocr.image_to_text(image)
print(result)


# 2.经过转灰度和二值化等操作识别概率更高
image = image.convert("L")      # 调用Image对象下的convert()方法,传入L。表示将彩色图像转换为灰度图像
threshold = 130                 # 指定二值化的阙值
table = []
for i in range(256):            # 根据调色板的默认颜色数遍历
    if i < threshold:           # 根据比指定阙值大和小分别添加二值化数字到列表
        table.append(0)
    else:
        table.append(1)
# 调用Image对象下的point()方法传入包含256个频段的二值化列表对图片进行处理,"1"为输出模式的一种
image = image.point(table, "1")
# 调用Image对象下的show()方法展示图片
image.show()
# 调用tesserocr模块下的image_to_text()方法识别出图片中的字符串
result = tesserocr.image_to_text(image)
print(result)
原文地址:https://www.cnblogs.com/Guishuzhe/p/9858111.html