Python3.x 實(shí)現(xiàn)12306登錄之利用pytesseract文字識別

上一篇文章是爬取了12306的車次信息勃救,那么還有登錄碍讨,購票等等。
這里一步一步的文章來學(xué)習(xí)登錄蒙秒,圖片識別勃黍,驗(yàn)證碼等技術(shù)。不斷學(xué)習(xí)中晕讲。最近太忙覆获,都沒有搞py,有時(shí)間就弄一下马澈,歡迎簡書交流。

1. 安裝py庫

pytesseract弄息,詳細(xì)使用說明

pytesseract 0.1.7 
PIL圖片常用庫
安裝
pip install pytesseract
pip install pillow
查看安裝之后的庫
pip freeze

2. 使用pytesseract庫

首先進(jìn)入pytesseract網(wǎng)頁查看說明和使用例子.

pytesseract截圖

在使用例子中痊班,做了詳細(xì)說明:

  1. 需要使用一個(gè)Tesseract-OCR Engine的東西來做識別(第一個(gè)紅圈)。
  2. 需要找到Tesseract-OCR Engine來做識別(第一個(gè)方框)
  3. 需要識別的文字語言包(第二個(gè)方框)

3. 安裝Tesseract-OCR Engine摹量,語言包

  1. 點(diǎn)擊上圖紅圈中的Google's Tesseract-OCR Engine進(jìn)入pytesseract的github中涤伐,向下翻找到installing Tesseract
    tesseract github.png
  2. Install Tesseract via pre-built binary package 進(jìn)入,該頁面詳細(xì)記錄了安裝linux ,mac os ,window的安裝包或者源碼缨称。對應(yīng)下載安裝即可凝果。
  3. 我使用window系統(tǒng),所以下載即可睦尽。在下圖中說明了下載位置器净,語言包等,最重要的是需要配置環(huán)境變量当凡。但是發(fā)現(xiàn)配置了環(huán)境變量成功掌动,但是在使用過程中還是指定了tesseract引擎的位置。不然就報(bào)錯(cuò)宁玫。


    window系統(tǒng)說明粗恢,下載位置
  4. 在w中就是下一步安裝即可,此次安裝語言包我是在安裝的時(shí)候下載欧瘪,選擇簡體中文就可以咯眷射。

4. 代碼實(shí)戰(zhàn)

到了這里,所有的準(zhǔn)備工作和代碼其實(shí)都可以說是編寫完成了的佛掖,因?yàn)樵趐ytesseract的樣例中就已經(jīng)寫的很清楚了妖碉。下面我貼上我的代碼就行。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = "雷洪飛"

"""
 利用google pytesseract做文字識別芥被,目的是為了做12306的圖片校驗(yàn)欧宜。
"""
try:
    import Image
    import ImageEnhance
except ImportError:
    from PIL import Image, ImageEnhance

import pytesseract
import requests
import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)


def get_title_pic():
    # 讀取圖片
    image = Image.open("image/code.png")
    # image.convert("L")
    box = (116, 0, 180, 30)
    t = image.crop(box)
    t.save("image/temp_title.png")


def get_title_text():
    base_img_url = "image/temp_title.png"
    image = Image.open(base_img_url)
    ImageEnhance.Contrast(image).enhance(3.0).convert("L").save(base_img_url)
    really_image = Image.open(base_img_url)
    # 配置tesseract 引擎位置
    pytesseract.pytesseract.tesseract_cmd = 'K:\Program Files\Tesseract-OCR\\tesseract.exe'
    # 配置語言包
    tessdata_dir_config = '--tessdata-dir "K:\\Program Files\\Tesseract-OCR\\tessdata"'
    # 使用pytesseract文字識別
    return pytesseract.image_to_string(really_image, lang='chi_sim', config=tessdata_dir_config)

def get_picture(url):
    headers = {
        "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"}
    response = requests.get(url, headers=headers, verify=False)
    response.encoding = 'utf-8'
    if response.status_code == 200:
        with open("./image/code.png", "wb") as f:
            f.write(response.content)
            print("圖片下載成功")
            return True
    else:
        get_picture(url)


if __name__ == "__main__":
    url = "https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand&0.6523880813900003"
    # 下載圖片
    get_picture(url)
    # 得到圖片的標(biāo)題
    get_title_pic()
    # 獲取標(biāo)題文字
    text = get_title_text()
    print("識別結(jié)果:" + text)

6. 結(jié)果展示

對于識別12306的標(biāo)題,我是很不滿意的拴魄,只能識別很簡單的字冗茸,復(fù)雜的,字體很傾斜的都基本認(rèn)不出來匹中,效率太低了夏漱。


12306驗(yàn)證碼圖片

識別結(jié)果

這種識別率太低,而且還很多都不能識別顶捷。
我也不知道這個(gè)到底行不行了挂绰。

各位要是有好的識別方法,歡迎下方留言交流服赎。希望找出一種識別率很高的出來葵蒂。不然這個(gè)驗(yàn)證碼基本就gg了交播。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市践付,隨后出現(xiàn)的幾起案子秦士,更是在濱河造成了極大的恐慌,老刑警劉巖荔仁,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異芽死,居然都是意外死亡乏梁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進(jìn)店門关贵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來遇骑,“玉大人,你說我怎么就攤上這事揖曾÷湮” “怎么了?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵炭剪,是天一觀的道長练链。 經(jīng)常有香客問我,道長奴拦,這世上最難降的妖魔是什么媒鼓? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮错妖,結(jié)果婚禮上绿鸣,老公的妹妹穿的比我還像新娘。我一直安慰自己暂氯,他們只是感情好潮模,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著痴施,像睡著了一般擎厢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辣吃,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天锉矢,我揣著相機(jī)與錄音,去河邊找鬼齿尽。 笑死沽损,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的循头。 我是一名探鬼主播绵估,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼炎疆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了国裳?” 一聲冷哼從身側(cè)響起形入,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缝左,沒想到半個(gè)月后亿遂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡渺杉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年蛇数,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片是越。...
    茶點(diǎn)故事閱讀 40,973評論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡耳舅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出倚评,到底是詐尸還是另有隱情浦徊,我是刑警寧澤,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布天梧,位于F島的核電站盔性,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏呢岗。R本人自食惡果不足惜纯出,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望敷燎。 院中可真熱鬧暂筝,春花似錦、人聲如沸硬贯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饭豹。三九已至鸵赖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拄衰,已是汗流浹背它褪。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翘悉,地道東北人茫打。 一個(gè)月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親老赤。 傳聞我的和親對象是個(gè)殘疾皇子轮洋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 引 最近要倒騰一下文字識別,直接上手iOS的識別遇到了一些困難抬旺,于是決定先在Mac上做一做弊予,會比較簡單。 有一個(gè)經(jīng)...
    Cloudox_閱讀 4,718評論 1 3
  • Tesseract官方文檔頁面 https://github.com/tesseract-ocr/tesserac...
    毛毛卷彎彎閱讀 18,714評論 14 12
  • 前言 經(jīng)常大家在做自動化測試或者做網(wǎng)絡(luò)爬蟲的時(shí)候开财,都很容易遇到驗(yàn)證碼汉柒。今天,我們就簡單的說下责鳍,怎么用python來...
    浪晉閱讀 1,895評論 0 6
  • 【日精進(jìn)打卡第22天】 姓名:趙福緣 公司:青檸養(yǎng)車 【知~學(xué)習(xí)】 【行~實(shí)踐】 一碾褂、修身: 二、努力: 1薇搁、體現(xiàn)...
    夜勿憂閱讀 172評論 0 0
  • 今天公司年會斋扰,到家已經(jīng)九點(diǎn)多了渡八,閨女已經(jīng)睡著了啃洋。聽到我的聲音,又醒了屎鳍,因?yàn)橹缷寢尳o她帶零食回來了宏娄,她自己說她是一...
    我們的親子時(shí)光閱讀 105評論 0 0