python網絡數據採集-圖像識別與文字處理

第一部分:圖像識別和文字處理概述

      本篇文章主要學習通過Python的庫來是被和使用在線圖片中的文字。當你不想讓自己的文字被網絡機器人採集時,把文字做成圖片放在網頁上是常用的辦法。在一些聯繫人通訊錄經常可以看到,一個郵箱地址部分或全部轉換成圖片。人們可能察覺不出明顯的差異,但是機器人閱讀這些圖片時會非常困難,這種方法可以防止多數垃圾郵件發送器輕易地獲取你的郵箱地址。

    利用這種人類用戶可以正常讀取但是大多數機器人都沒法讀取的圖片,驗證碼(CAPTCHA)就出現了。驗證碼讀取的難易程度也大不相同,有些驗證碼比其他的更加難度,後面我們會介紹這種問題。

    但是,驗證碼不是網絡爬蟲數據採集時需要進行圖像轉文字翻譯工作的唯一對象。目前,有很多文檔都是簡單地掃描後直接放到網上,它們和互聯網上的很多文檔一樣都是沒法直接使用,儘管他們都“近在眼前”。如果無法圖形轉爲文字,要想使用這些文檔的內容,就只能人手工敲了。

    將圖像翻譯成文字一般被稱爲光學文字識別(Optical Character Recognition OCR)。可以實現OCR的底層庫並不多,目前很多庫都是使用共同的幾個底層OCR庫,或者在上面進行定製。這類OCR系統有時會變得非常複雜。

第二部分:OCR庫概述

           在讀取和處理圖像,圖像相關的機器學習以及創建圖像等任務中,Python一直都是非常出色的語言。雖然很多庫可以進行圖像處理,有兩個庫:Pillow和Tesseract。每個庫都可以從它們的網站上下載並安裝(http://pillow.readthedocs,org/installation.html和http://pypi.python.org/pypi/pytesseract),或者用第三方管理器(pip)通過"pillow"和"pytesseract"進行安裝。

2.1 Pillow

    儘管Pillow算不上是圖像處理功能最全的庫,但是它擁有你最需要使用的全部功能,除非你要用Python重寫一個Photoshop或進行更復雜的研究。它就是一個文檔健全且十分易用的庫。Pillow是從Python 2.x版本的Python圖像庫(Python Imaging Library PIL)分出來的,支持Python3.x版本。和PIL一樣,Pillow也可以輕鬆地導入代碼,並通過大量的過濾,修正甚至像素級變換操作處理圖片.

2.2 Tesseract

    Tesseract是一個OCR庫,目前有Google贊助。Tesseract是目前公認最優秀最精確的開源OCR系統。除了極高的精確度,Tesseract也具有很高的靈活性。它可以通過訓練識別出人格字體(只要這些字體的風格保持不變就可以),也可以識別出任何的Unicode字符。Tesseract是一個Python命令行工具,不是通過import語句導入的庫,要用tesseract命令在Python的外面運行。

2.2.1 安裝Tesseract

    在Window系統上,可以下載方便的可執行安裝文件(http://code.google.com/p/tesseract-ocr/download/list)安裝即可。Linux用戶可以通過apt-get 安裝:

sudo  apt-get tesseract-ocr
    要使用Tesseract的功能,比如後面的示例中訓練程序識別字母,你需要現在系統中設置一下新的環境變量$TESSDATA_PREFIX,讓Tesseract知道訓練的數據文件存儲在哪裏。

    大多數Linux和MacOS系統上,可以這麼設置:

$ export TESSDATA_PREFIX=/usr/local/share/

具體的安裝過程請參考我的文章

2.3 NumPy

     雖然NumPy並非解決OCR問題時必須使用的庫,但是如果你想訓練Tesseract識別後續要用的字符或字體,那麼就會用到它。NumPy是一個非常強大的庫,具有大量線性代數以及大規模科學計算的方法。因爲NumPy可以用數學方法把圖片表示成巨大的像素數組,所以它可以流暢地配合Tesseract完成任務。

    NumPy和其他的Python庫一樣,可以通過第三方包管理器(pip等)來安裝:

pip install numpy


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