zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    BIND简易教程(2):BIND视图配置
    BIND简易教程(1):安装及基本配置
    大学本科计算机专业应该学点什么?
    Bukkit之yaml动态读取
    将指定世界中的指定位置的Block转化为箱子
    iframe中父页面与子页面的传值方法
    ajax提交数据
    a标签响应onclick事件,并且不执行href动作
    jsp重新打开一个新的页面
    java.lang.NoClassDefFoundError: org/hibernate/QueryTimeoutException
  • 原文地址:https://www.cnblogs.com/Guishuzhe/p/9858111.html
Copyright © 2011-2022 走看看