tesseract圖片識別庫的簡單操作


https://digi.bib.uni-mannheim.de/tesseract/    下載連接中有dev的是分支,穩妥選擇沒有dev的4.0最新版本
解壓到D\E盤下                        一直next安裝,選擇安裝到  E:\tesseract\Tesseract-OCR
設置系統路徑               變量名|TESSDATA_PREFIX      值(value)|E:\tesseract\Tesseract-OCR\tessdata
設置tesseract命令路徑                在系統環境變量(Path)中添加E:\tesseract\Tesseract-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:\tesseract\Tesseract-OCR\tesseract.exe"
# 獲取將要識別的圖片
image = Image.open(r"E:\imgs\3.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:\tesseract\Tesseract-OCR\tesseract.exe"
    url = "驗證碼地址"
    while True:
        # 先下載驗證圖片到本地
        request.urlretrieve(url, r"E:\imgs\captcha.png")
        # 打開已下載驗證圖片地址
        image = Image.open(r"E:\imgs\captcha.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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM