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)