• 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)
  • 相关阅读:
    linux LTIB学习笔记
    wince WaitForMultipleObjects需要注意的问题
    微信小程序在苹果上出现[request:fail 发生了 SSL 错误无法建立与该服务器的安全连接。]错误的解决方案
    Windows 2008之PKI实战4:吊销
    十个不找工作的理由
    [zt]我奋斗了18年不是为了和你一起喝咖啡
    [zt]Java/PHP/C 几种语言 RSA 的互操作
    全职共享和兼职的一些思考pkill
    定价策略(翻译稿)
    Windows 2008之PKI实战1:管理
  • 原文地址:https://www.cnblogs.com/Guishuzhe/p/9858111.html
Copyright © 2020-2023  润新知