2019-02-25
Python 使用 Tesseract-OCR 做 Captcha 文字識別
markdown
使用 python 語言的 tesserocr 套件做 captcha 的文字驗證測試,此篇只簡要說明套件的安裝和使用。
# 簡介
在網站的登入或註冊過程,會在不同的網站遇到需要輸入驗證碼的場景,在自動化操作的過程可以透過光學文字識別(Optical Character Recognition,OCR)來將影像中的文字分析後輸出成文字。
Tesseract 是一款開源的 OCR 套件,在 python 中要使用 Tesseract-OCR 使用到 tesserocr。
## 安裝 Tesseract-OCR
首先在系統中安裝 Tesseract-OCR:
* 到 [Tesseract Wiki](https://github.com/tesseract-ocr/tesseract/wiki) 依自己使用的作業系統安裝
* Windows 安裝後要將 Tesseract-OCR 的路徑加到環境變數的 PATH 中。
將 `C:\Program Files (x86)\Tesseract-OCR` 加到 PATH 中
## 安裝 tesserocr
* Windows 系統必須下載 whl 檔安裝
step 1. 到[simonflueckiger/tesserocr-windows_build, github](https://github.com/simonflueckiger/tesserocr-windows_build/releases),下載 `tesserocr-2.4.0-cp37-cp37m-win_amd64.whl`。
step 2. 安裝 tesserocr
```
python -m pip install tesserocr-2.4.0-cp37-cp37m-win_amd64.whl
```
step 3. 設定環境設數
安裝完成要在環境變數指定 tessdata 路徑 `TESSDATA_PREFIX=C:\Program Files (x86)\Tesseract-OCR\tessdata`
如果沒有`TESSDATA_PREFIX`的路徑設定,執行時會出現找不到 tessdata path
```
RuntimeError: Failed to init API, possibly an invalid tessdata path?
```
解法一:將 `C:\Program Files (x86)\Tesseract-OCR\tessdata` 資料夾複製到 `C:\C:\Program Files\Python37\tessdata` 的資料夾
解法二:設定環境變數 `TESSDATA_PREFIX` 並指定正確的 tessdata 的路徑,設定好環境變數(可能需要重啟使用的編輯器 cmd 或 vs 才能正常取用新增的環境變數)
## 測試辨識
測試圖片 `000000.png`
測試從圖片中辨識
```
from PIL import Image
import tesserocr
image = Image.open("00000.png")
with tesserocr.PyTessBaseAPI() as api:
api.SetVariable("tessedit_char_whitelist", "0123456789")
ans = tesserocr.image_to_text(image)
print(ans)
```
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言