在本篇文章中,我們將使用 Python 來實現一個 英文數字驗證碼識別 的程式。我們會使用 Tesseract OCR(Optical Character Recognition,光學字元識別)來識別驗證碼中的文字內容。
- 環境準備
首先,需要安裝以下 Python 庫:
Pillow:用於影像處理。
pytesseract:Tesseract 的 Python 包,用於文字識別。
Tesseract OCR:一個開源的 OCR 引擎。
安裝 Python 庫:
bash
pip install Pillow pytesseract
同時,您需要安裝 Tesseract OCR 引擎。可以從 Tesseract GitHub頁面 下載並安裝,或者使用包管理工具安裝:
Windows:下載並安裝 tesseract-ocr-w32-x64.exe。
Linux:可以使用以下命令安裝:
bash
sudo apt-get install tesseract-ocr
MacOS:可以透過 Homebrew 安裝:
bash
brew install tesseract
2. 驗證碼識別程式
建立一個 Python 指令碼 captcha_recognition.py,並將以下程式碼寫入其中:
python
import pytesseract
from PIL import Image
import matplotlib.pyplot as plt
設定 Tesseract 可執行檔案路徑(僅在 Windows 上需要)
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
讀取驗證碼影像
image = Image.open('captcha_image.png')
顯示原始影像
plt.imshow(image)
plt.axis('off') # 不顯示座標軸
plt.show()
進行 OCR 識別
captcha_text = pytesseract.image_to_string(image, config='--psm 6')
輸出識別的驗證碼內容
print(f"識別的驗證碼是:{captcha_text.strip()}")
3. 程式碼解析
影像載入:使用 PIL 庫的 Image.open() 方法載入驗證碼影像。
OCR 識別:使用 pytesseract.image_to_string() 方法來識別影像中的文字。config='--psm 6' 配置告訴 Tesseract 我們預計影像包含的是一行文字(即驗證碼的常見格式)。
視覺化:用 matplotlib.pyplot 庫顯示原始影像,方便檢視輸入的驗證碼影像。
4. 如何執行
將驗證碼影像儲存為 captcha_image.png(您可以使用任何實際的驗證碼影像)。
執行 Python 指令碼:
bash
python captcha_recognition.py
程式將會顯示驗證碼影像,並輸出識別的驗證碼內容。
- 樣例影像及輸出
假設輸入的驗證碼影像如下:
captcha_image.png:
(這裡您可以將任何實際驗證碼影像替換)
執行後的輸出會類似於:
識別的驗證碼是:4k3d7
6. 改進方案
影像預處理:如果驗證碼影像包含噪聲或干擾,您可以使用 Pillow 庫來進行影像預處理,例如二值化、去噪等,增強識別率。
示例:更多內容訪問ttocr.com或聯絡1436423940
轉為灰度圖
gray_image = image.convert('L')
二值化處理
bw_image = gray_image.point(lambda x: 0 if x < 128 else 255, '1')
調整 Tesseract 配置:Tesseract 提供了許多配置選項,可以根據驗證碼的具體情況進行最佳化。