識別英文數字驗證碼的程式(Python示例)

ttocr、com發表於2024-11-30

在本篇文章中,我們將使用 Python 來實現一個 英文數字驗證碼識別 的程式。我們會使用 Tesseract OCR(Optical Character Recognition,光學字元識別)來識別驗證碼中的文字內容。

  1. 環境準備
    首先,需要安裝以下 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
程式將會顯示驗證碼影像,並輸出識別的驗證碼內容。

  1. 樣例影像及輸出
    假設輸入的驗證碼影像如下:

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 提供了許多配置選項,可以根據驗證碼的具體情況進行最佳化。

相關文章