程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python爬蟲-31-python圖形驗證碼進階,識別中文(二)

編輯:Python

有些驗證碼是中文的,使用的時候可能發現了,並不能支持識別中文,那麼我們應該如何解決呢?

1、python識別圖片中的中文字符-old

先來看下默認的情況下識別中文是什麼樣子的呢,比如我們要識別下圖:

然後我們寫出如下代碼:

import pytesseract
from PIL import Image
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files (x86)\Tesseract-OCR\tesseract.exe"
image = Image.open(r"C:\Users\22768\Desktop\gzh\chinese_0.jpg")
text = pytesseract.image_to_string(image, lang='eng+osd')
print(text)

運行結果:

ffi’:
賴葷
蝴

可以看到並沒有識別出來,是亂碼;

2、安裝tesseract新版本+tesseract語言包

python通過tesseract識別圖形中文亂碼,是因為你安裝的時候沒有選擇合適的語言進行安裝,上一文中我們是直接默認下一步安裝的,且安裝版本是tesseract-ocr-setup-3.02.02.exe,這個版本在安裝的時候確實可以選擇其他語言進行支持,但是你只能選擇,並沒辦法進行下載。且官網也沒有對應該版本的語言支持包,所以我這裡重新找了一個**5.1.0**版本的程序包進行安裝,這個軟件包是沒有問題的;

獲取tesseract軟件包的方式為:

微信公眾號“運維家”,後台回復:resseract軟件包

即可獲取tesseract軟件包的網盤下載地址了;

tesseract這個軟件安裝的過程中,windows安裝路徑必須選擇:

C:\Program Files (x86)\Tesseract-OCR

如果是windows務必選擇以上路徑進行安裝哈;

我們可以選擇語言,點擊Additional language data(download)前面的符號,就會展示出來很多語言,如果識別的內容比較復雜,建議全選,將所有的語言包都下載下來,我這裡為了演示,只選擇了和中文有關的,也就是抬頭是“Chinese”的;

然後點擊下一步即可,這裡我們會看到下圖的安裝界面,可能會比較慢,因為他會一個個下載語言包,這裡我們耐心等待即可;

出現下面的界面就表示安裝成功了;

tesseract軟件無法下載語言包,或者tesseract下載語言包失敗,如果有這種問題,是因為啥呢?那簡單了,就是因為他的語言包在國外,網絡不穩定所導致的,那麼我們如何解決呢,我這裡准備了一份完整的語言包,直接解壓覆蓋你resseract安裝路徑中的tessdata這個文件夾即可。

獲取tesseract 5.1.0語言包的方式為:

微信公眾號“運維家”,後台回復:tesseract語言包

即可獲取tesseract語言包的網盤下載地址了;

然後我們需要將C:\Program Files (x86)\Tesseract-OCR\tessdata這個路徑下的內容全部拷貝到C:\Program Files (x86)\Tesseract-OCR目錄下方可,不然會報錯以下信息:

pytesseract.pytesseract.TesseractError: (1, 'Error opening data file C:\\Program Files (x86)\\Tesseract-OCR\\eng.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory. Failed loading language \'eng\' Tesseract couldn\'t load any languages! Could not initialize tesseract.')

3、再次使用tesseract進行中文識別

先來看下他現在支持多少種語言了吧;

import pytesseract
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files (x86)\Tesseract-OCR\tesseract.exe"
print(pytesseract.get_languages())

運行結果如下:

['chi_sim', 'chi_sim_vert', 'chi_tra', 'chi_tra_vert', 'eng', 'osd']

當使用我上面提供的語言包之後,就會發現支持的語言變成了下面這麼多:

['afr', 'amh', 'ara', 'asm', 'aze', 'aze_cyrl', 'bel', 'ben', 'bod', 'bos', 'bre', 'bul', 'cat', 'ceb', 'ces', 'chi_sim', 'chi_sim_vert', 'chi_tra', 'chi_tra_vert', 'chr', 'cos', 'cym', 'dan', 'deu', 'div', 'dzo', 'ell', 'eng', 'enm', 'epo', 'equ', 'est', 'eus', 'fao', 'fas', 'fil', 'fin', 'fra', 'frk', 'frm', 'fry', 'gla', 'gle', 'glg', 'grc', 'guj', 'hat', 'heb', 'hin', 'hrv', 'hun', 'hye', 'iku', 'ind', 'isl', 'ita', 'ita_old', 'jav', 'jpn', 'jpn_vert', 'kan', 'kat', 'kat_old', 'kaz', 'khm', 'kir', 'kmr', 'kor', 'lao', 'lat', 'lav', 'lit', 'ltz', 'mal', 'mar', 'mkd', 'mlt', 'mon', 'mri', 'msa', 'mya', 'nep', 'nld', 'nor', 'oci', 'ori', 'osd', 'pan', 'pol', 'por', 'pus', 'que', 'ron', 'rus', 'san', 'sin', 'slk', 'slv', 'snd', 'spa', 'spa_old', 'sqi', 'srp', 'srp_latn', 'sun', 'swa', 'swe', 'syr', 'tam', 'tat', 'tel', 'tgk', 'tha', 'tir', 'ton', 'tur', 'uig', 'ukr', 'urd', 'uzb', 'uzb_cyrl', 'vie', 'yid', 'yor']

這個時候我們再次來識別文章最開始的時候的圖片,來看看是否識別出來了吧。

import pytesseract
from PIL import Image
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files (x86)\Tesseract-OCR\tesseract.exe"
image = Image.open(r"C:\Users\22768\Desktop\gzh\1654881934269.jpg")
text = pytesseract.image_to_string(image, lang='chi_sim+chi_sim_vert+chi_tra+chi_tra_vert')
print(text)

運行結果如下:

運維家

那麼我們再來識別一張字比較多的圖片再試試呢,例如:

運行代碼

import pytesseract
from PIL import Image
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files (x86)\Tesseract-OCR\tesseract.exe"
image = Image.open(r"C:\Users\22768\Desktop\gzh\1654882172968.jpg")
text = pytesseract.image_to_string(image, lang='chi_sim+chi_sim_vert+chi_tra+chi_tra_vert')
print(text)

結果:

鐘山風雨起苔劃,百萬雄師過大江。
虎跟龍盤今勝苦,天翻地覆慨而慷。
二將剩筋追窮坪,不可沽名學等王。
天吞有情天訂老,人間正道是滄對 。

不可避免有一些錯字,但是已經很少了。

至此,本文結束。相關內容每日更新。

更多內容請轉至VX公眾號 “運維家” ,獲取最新文章。

------ “運維家” ------
------ “運維家” ------
------ “運維家” ------

linux系統下,mknodlinux,linux目錄寫權限,大白菜能安裝linux嗎,linux系統創建文件的方法,領克linux系統怎麼裝軟件,linux文本定位;
ocr識別linux,linux錨定詞尾,linux系統使用記錄,u盤有linux鏡像文件,應屆生不會Linux,linux內核64位,linux自啟動管理服務;
linux計算文件夾大小,linux設備名稱有哪些,linux能用的虛擬機嗎,linux系統進入不了命令行,如何創建kalilinux,linux跟so文件一樣嗎。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved