Python tesserocr模塊使用示例

安裝tesseract

OCR,即Optical Character Recognition,光學字符識別,是指通過掃描字符,然後通過其形狀將其翻譯成電子文本的過程。對於圖形驗證碼來說,它們都是一些不規則的字符,這些字符確實是由字符稍加扭曲變換得到的內容。

tesseract下載地址

https://digi.bib.uni-mannheim.de/tesseract/

進入下載頁面,可以看到有各種.exe文件的下載列表,這裏可以選擇最新下載5.0版本。

其中文件名中帶有dev的爲開發版本,不帶dev的爲穩定版本,可以選擇下載不帶dev的版本,例如可以選擇下載箭頭指向的3.05exe。

下載完成後雙擊,此時會出現如下圖所示的頁面。

此時可以勾選Additional language data(download)選項來安裝OCR識別支持的語言包,這樣OCR便可以識別多國語言。然後一路點擊Next按鈕即可。

接下來,爲了在python代碼中使用tesseract功能,

tesserocr 下載地址:https://github.com/simonflueckiger/tesserocr-windows_build/releases

在這裏插入圖片描述
所以我們這裏選擇下載 tesserocr v2.3.1 和 tesseract 3.05.02。

安裝 tesseract 可以比較簡單,我們介紹一下關於 tesserocr 的安裝過程。
比如說:
在這裏插入圖片描述
把下載下來的 tesserocr 安裝包放在 python 安裝路徑裏,在該目錄下打開 dos 窗口。

運行 pip3 install tesserocr-2.3.1-cp37-cp37m-win_amd64.whl 即可成功。

2、配置環境變量

爲了在全局使用方便,比如安裝路徑爲D:\Program Files (x86)\Tesseract-OCR,將該路徑添加到環境變量的path中

3.代碼案例

以中國知網的註冊頁面爲例,我們常被要求輸入這類簡單的字母組成,背景含很多雜線的驗證碼,如下圖所示:

我們對驗證碼另存爲到本地代碼所在目錄,取名:test.png.

下圖是直接用對應模塊識別的代碼示例:

1

2

3

4

5

6

import tesserocr

from PIL import Image

image=Image.open('test.png')

 

image.show()  #可以打印出圖片,供預覽

print(tesserocr.image_to_text(image))

  

  原始圖片尺寸較小,極少情況下如果無法正常識別,可以藉助圖片處理工具PIL模塊進行圖片等比例放大後保存。此例中直接運行上述代碼,結果爲“VHIHI”,即使是肉眼可見較爲清晰的驗證碼,如果圖片未經處理直接交由tesserocr解析,也可能識別率很低。

  通常情況下,我們還需要做些額外的圖片處理,如轉灰度圖,二值化等。

利用Image對應的convert()方法傳參L,即可將圖片轉爲灰度圖。

image=image.convert('L')

image.show()

傳入1即可完成二值化,如下:

image=image.convert('1')

image.show()

當然我們更多時候需要根據圖片的實際情況指定二值化的閾值,比如我們將閾值設定爲80,先轉灰度圖,再二值化,代碼如下:

import tesserocr
from PIL import Image
image=Image.open('test.png')
image=image.convert("L")
threshold=80
table=[]
for i in range(256):
    if i <threshold:
        table.append(0)
    else:
        table.append(1)
image=image.point(table,'1')
image.show()
print(tesserocr.image_to_text(image))

觀察到處理後圖片如右:

  儘管圖片已經轉爲灰度圖,且過濾了大部分雜線,但是圖片關鍵像素丟失嚴重,識別結果自然也不盡如人意,結果:“VH.”。

此時我們根據圖片的實際情況,人爲調整程序中預設的閾值到130,再觀察:,這次的圖片轉換效果顯著,我們再次查看識別結果,“VHRU”,與肉眼觀察到的別無二致,合乎要求。

可見驗證碼的識別除了用好識別模塊,還需要在必要時引入PIL(圖片處理模塊)進行圖片預處理,預處理過程中的閾值等設定也存有技巧,不同的參數設定,會完全影響最終的識別率。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章