第 11 章 圖像識(shí)別與文字處理

在這一章里,重點(diǎn)介紹機(jī)器視覺的一個(gè)分支:文字識(shí)別,介紹如何用一些 Python 庫(kù)來(lái)識(shí)別和使用在線圖片中的文字。
當(dāng)你不想讓自己的文字被網(wǎng)絡(luò)機(jī)器人采集時(shí),把文字做成圖片放在網(wǎng)頁(yè)上是常用的辦法。
利用這種人類用戶可以正常讀取但是大多數(shù)機(jī)器人都沒法讀取的圖片,驗(yàn)證碼 (CAPTCHA) 就出現(xiàn)了。
將圖像翻譯成文字一般被稱為光學(xué)文字識(shí)別(Optical Character Recognition,OCR)??梢詫?shí)現(xiàn) OCR 的底層庫(kù)并不多,目前很多庫(kù)都是使用共同的幾個(gè)底層 OCR 庫(kù),或者是在上面進(jìn)行定制。

11.1 OCR 庫(kù)概述

在讀取和處理圖像、圖像相關(guān)的機(jī)器學(xué)習(xí)以及創(chuàng)建圖像等任務(wù)中,Python 一直都是非常出 色的語(yǔ)言。雖然有很多庫(kù)可以進(jìn)行圖像處理,但在這里我們只重點(diǎn)介紹兩個(gè)庫(kù): PillowTesseract。
每個(gè)庫(kù)都可以從它們的網(wǎng)站上下載并安裝,或者用第三方管理器(像 pip)通過(guò) “pillow” 和
“pytesseract”進(jìn)行安裝 。

11.1.1 Pillow

Pillow 可以輕松地導(dǎo)入代碼,并通過(guò)大量的過(guò)濾、修飾甚至像素級(jí)的變換操作處理圖片。
我們可以用 Pillow 完成圖片的預(yù)處理,讓機(jī)器可以更方便地讀取圖片。除了這些簡(jiǎn)單的
事情之外,Pillow 還可以完成許多復(fù)雜的圖像處理工作。更多的信息,請(qǐng)查看 Pillow 文檔

11.1.2 Tesseract

Tesseract 是一個(gè) OCR 庫(kù),目前由 Google 贊助。Tesseract 是目前公認(rèn)最優(yōu)秀、最精確的開源 OCR 系統(tǒng)。 除了極高的精確度,Tesseract 也具有很高的靈活性。它可以通過(guò)訓(xùn)練識(shí)別出任何字體(只要這些字體的風(fēng)格保持不變就可以),也可以識(shí)別出任何 Unicode 字符。
Tesseract 是一個(gè) Python 的命令行工具,不是通過(guò) import 語(yǔ)句導(dǎo)入的庫(kù)。安裝之后,要用 tesseract 命令在 Python 的外面運(yùn)行。

11.1.3 NumPy

NumPy 是一個(gè)非常強(qiáng)大的庫(kù),具有大量線性代數(shù)以及大規(guī)模科學(xué)計(jì)算的方法。因?yàn)?NumPy 可以用數(shù)學(xué)方法把圖片表示成巨大的像素?cái)?shù)組, 所以它可以流暢地配合 Tesseract 完成任務(wù)。

11.2 處理格式規(guī)范的文字

通常,格式規(guī)范的文字具有以下特點(diǎn):
? 使用一個(gè)標(biāo)準(zhǔn)字體(不包含手寫體、草書,或者十分“花哨的”字體)
? 雖然被復(fù)印或拍照,字體還是很清晰,沒有多余的痕跡或污點(diǎn)
? 排列整齊,沒有歪歪斜斜的字
? 沒有超出圖片范圍,也沒有殘缺不全,或緊緊貼在圖片的邊緣
文字的一些格式問(wèn)題在圖片預(yù)處理時(shí)可以進(jìn)行解決。例如,可以把圖片轉(zhuǎn)換成灰度圖,調(diào) 整亮度和對(duì)比度,還可以根據(jù)需要進(jìn)行裁剪和旋轉(zhuǎn)。

11.3 讀取驗(yàn)證碼與訓(xùn)練 Tesseract

Google 的 reCAPTCHA 難得令人發(fā)指,作為目前最具有安全意識(shí)的流行網(wǎng)站,Google 攔截了多達(dá) 25% 的準(zhǔn)備訪問(wèn)網(wǎng)站的正常人類用戶。
大多數(shù)其他的驗(yàn)證碼都是比較簡(jiǎn)單的。例如,流行的 PHP 內(nèi)容管理系統(tǒng) Drupal 有一個(gè)著名的驗(yàn)證碼模塊,可以生成不同難度的驗(yàn)證碼。
訓(xùn)練 Tesseract
要訓(xùn)練 Tesseract 識(shí)別一種文字,無(wú)論是晦澀難懂的字體還是驗(yàn)證碼,你都需要向 Tesseract 提供每個(gè)字符不同形式的樣本。
提示:建議使用驗(yàn)證碼的真實(shí)結(jié)果給每個(gè)樣本文件命名。這樣可以幫你一次性對(duì)大量的文件進(jìn)行快速檢查——你可以先把圖片調(diào)成縮略圖模式,然后通過(guò)文件名對(duì)比不同的圖片。這樣在后面的步驟中進(jìn)行訓(xùn)練效果的檢查也會(huì)很方便。
準(zhǔn)確地告訴 Tesseract 一張圖片中的每個(gè)字符是什么,以及每個(gè)字符的具體位置。
在線工具 Tesseract OCR Chopper,因?yàn)樗恍枰惭b,也沒有其他依賴,只要有瀏覽器就可以運(yùn)行,而且用法很簡(jiǎn)單:上傳圖片,如果要增加新矩形就單擊“add”按鈕,還可以根據(jù)需要調(diào)整矩形的尺寸,最后把新生成的矩形定位文件復(fù)制到一個(gè)新文件里就可以了。
如果你對(duì) Tesseract 的其他訓(xùn)練方法感興趣,甚至打算建立自己的驗(yàn)證碼訓(xùn)練文件庫(kù),或者想和全世界的 Tesseract 愛好者分享自己對(duì)一種新字體的識(shí)別成果,那么我推薦你仔細(xì)閱讀 Tesseract 的文檔。

11.4 獲取驗(yàn)證碼提交答案

大多數(shù)網(wǎng)站生成的驗(yàn)證碼圖片都具有以下屬性。
? 它們是服務(wù)器端的程序動(dòng)態(tài)生成的圖片。驗(yàn)證碼圖片的 src 屬性可能和普通圖片不太一 樣,比如 <img src="WebForm.aspx?id=8AP85CQKE9TJ">,但是可以和其他圖片一樣進(jìn)行下載和處理。
? 圖片的答案存儲(chǔ)在服務(wù)器端的數(shù)據(jù)庫(kù)里。
? 很多驗(yàn)證碼都有時(shí)間限制,如果你太長(zhǎng)時(shí)間沒解決就會(huì)失效。
常用的處理方法就是,首先把驗(yàn)證碼圖片下載到硬盤里,清理干凈,然后用 Tesseract 處理 圖片,最后返回符合網(wǎng)站要求的識(shí)別結(jié)果。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 21【習(xí)慣】高效能人士的睡眠 早睡早起是相對(duì)的 睡眠質(zhì)量的好壞非常重要。 早睡前注重一個(gè)字“靜” 早起后可以檢視、...
    依盈閱讀 249評(píng)論 0 0
  • 《秦時(shí)明月》系列動(dòng)漫里面,對(duì)農(nóng)家忠誠(chéng)的高手很多,有一直以來(lái)對(duì)農(nóng)家有著無(wú)私奉獻(xiàn)的神農(nóng)堂堂主朱家,神農(nóng)堂身為農(nóng)家實(shí)力第...
    蜂王醬閱讀 1,427評(píng)論 0 0
  • 管理是一門很深的學(xué)問(wèn),對(duì)于這個(gè)我思考了非常久,還是不能很深刻的去理解。管理物事都比較好梳理,因?yàn)樗麄兇蠖嗍庆o態(tài)的,...
    Y胡小瑤閱讀 427評(píng)論 0 1
  • 1. 開發(fā)環(huán)境搭建 首先在PyCharm中安裝Flask庫(kù),但是我的電腦在庫(kù)安裝成功后,在命令行試flask命令一...
    0x70e8閱讀 299評(píng)論 0 0
  • 這些字怎么念,扎心了 簡(jiǎn)介:張鈞甯中國(guó)臺(tái)灣影視女演員,憑借電影《情非得已之生存之道》入圍第44屆臺(tái)灣電影金馬獎(jiǎng)最佳...
    水星果凍閱讀 617評(píng)論 0 0

友情鏈接更多精彩內(nèi)容