Python機器學習訓練Tesseract

      網友投稿 1179 2022-05-30

      訓練Tesseract

      大多數其他的驗證碼都是比較簡單的。例如,流行的 PHP 內容管理系統 Drupal 有一個著 名的驗證碼模塊(https://www.drupal.org/project/captcha),可以生成不同難度的驗證碼。

      那么與其他驗證碼相比,究竟是什么讓這個驗證碼更容易被人類和機器讀懂呢?

      字母沒有相互疊加在一起,在水平方向上也沒有彼此交叉。也就是說,可以在每一個字 母外面畫一個方框,而不會重疊在一起。

      圖片沒有背景色、線條或其他對 OCR 程序產生干擾的噪點。

      雖然不能因一個圖片下定論,但是這個驗證碼用的字體種類很少,而且用的是 sans-serif 字體(像“4”和“M”)和一種手寫形式的字體(像“m”“C”和“3”)。

      白色背景色與深色字母之間的對比度很高。

      這個驗證碼只做了一點點改變,就讓 OCR 程序很難識別。

      字母和數據都使用了,這會增加待搜索字符的數量。

      字母隨機的傾斜程度會迷惑 OCR 軟件,但是人類還是很容易識別的。

      那個比較陌生的手寫字體很有挑戰性,在“C”和“3”里面還有額外的線條。另外這 個非常小的小寫“m”,計算機需要進行額外的訓練才能識別。 用下面的代碼運行 Tesseract 識別圖片:

      tesseract captchaExample.png output

      Python機器學習:訓練Tesseract

      我們得到的結果 output.txt 是: 4N\,,,C<3

      訓練Tesseract

      要訓練 Tesseract 識別一種文字,無論是晦澀難懂的字體還是驗證碼,你都需要向 Tesseract 提供每個字符不同形式的樣本。

      做這個枯燥的工作可能要花好幾個小時的時間,你可能更想用這點兒時間找個好看的視頻 或電影看看。首先要把大量的驗證碼樣本下載到一個文件夾里。

      下載的樣本數量由驗證碼 的復雜程度決定;我在訓練集里一共放了 100 個樣本(一共 500 個字符,平均每個字符 8 個樣本;a~z 大小寫字母加 0~9 數字,一共 62 個字符),應該足夠訓練的了。

      提示:建議使用驗證碼的真實結果給每個樣本文件命名(即4MmC3.jpg)。 這樣可以幫你 一次性對大量的文件進行快速檢查——你可以先把圖片調成縮略圖模式,然后通過文件名 對比不同的圖片。這樣在后面的步驟中進行訓練效果的檢查也會很方便。

      第二步是準確地告訴 Tesseract 一張圖片中的每個字符是什么,以及每個字符的具體位置。 這里需要創建一些矩形定位文件(box file),一個驗證碼圖片生成一個矩形定位文件。一 個圖片的矩形定位文件如下所示:

      4 15 26 33 55 0

      M 38 13 67 45 0

      m 79 15 101 26 0

      C 111 33 136 60 0

      3 147 17 176 45 0

      第一列符號是圖片中的每個字符,后面的 4 個數字分別是包圍這個字符的最小矩形的坐標 (圖片左下角是原點 (0,0),4 個數字分別對應每個字符的左下角 x 坐標、左下角 y 坐標、右上角 x 坐標和右上角 y 坐標),最后一個數字“0”表示圖片樣本的編號。

      顯然,手工創建這些圖片矩形定位文件很無聊,不過有一些工具可以幫你完成。我很喜歡 在線工具 Tesseract OCR Chopper(http://pp19dd.com/tesseract-ocr-chopper/),因為它不需要?安裝,也沒有其他依賴,只要有瀏覽器就可以運行,而且用法很簡單:上傳圖片,如果要 增加新矩形就單擊“add”按鈕,還可以根據需要調整矩形的尺寸,最后把新生成的矩形 定位文件復制到一個新文件里就可以了。

      矩形定位文件必須保存在一個 .box 后綴的文本文件中。和圖片文件一樣,文本文件也是用 驗證碼的實際結果命名(例如,4MmC3.box)。另外,這樣便于檢查 .box 文件的內容和文件的名稱,而且按文件名對目錄中的文件排序之后,就可以讓 .box 文件與對應的圖片文件 的實際結果進行對比。

      你還需要創建大約 100 個 .box 文件來保證你有足夠的訓練數據。因為 Tesseract 會忽略那 些不能讀取的文件,所以建議你盡量多做一些矩形定位文件,以保證訓練足夠充分。如果 你覺得訓練的 OCR 結果沒有達到你的目標,或者 Tesseract 識別某些字符時總是出錯,多 創建一些訓練數據然后重新訓練將是一個不錯的改進方法。

      創建完滿載 .box 文件和圖片文件的數據文件夾之后,在做進一步分析之前最好備份一下這 個文件夾。雖然在數據上運行訓練程序不太可能刪除任何數據,但是創建 .box 文件用了你 好幾個小時的時間,來之不易,穩妥一點兒總沒錯。此外,能夠抓取一個滿是編譯數據的 混亂目錄,然后再嘗試一次,總是好的。

      前面的內容只是對 Tesseract 庫強大的字體訓練和識別能力的一個簡略概述。如果你對 Tesseract 的其他訓練方法感興趣,甚至打算建立自己的驗證碼訓練文件庫,或者想和全世 界的 Tesseract 愛好者分享自己對一種新字體的識別成果,推薦閱讀 Tesseract 的文檔:https://github.com/tesseract-ocr/tesseract/wiki,加油!

      Python 機器學習

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:MySQL賬號登錄ip驗證機制
      下一篇:ZooKeeper安裝部署
      相關文章
      亚洲精品成a人在线观看☆| 亚洲欧洲日产国码www| 亚洲AV日韩综合一区尤物| 亚洲天堂视频在线观看| 亚洲国产精品一区二区久久hs| 亚洲午夜爱爱香蕉片| 亚洲综合久久夜AV | 国产精品V亚洲精品V日韩精品 | 亚洲人色大成年网站在线观看| 亚洲第一页中文字幕| 亚洲成aⅴ人片在线观| 亚洲国产精品成人精品小说| 91亚洲精品麻豆| 激情五月亚洲色图| 亚洲欧洲无码一区二区三区| 亚洲精品第一国产综合亚AV| 色偷偷亚洲第一综合| 国产精品亚洲综合天堂夜夜| 亚洲第一黄片大全| 不卡精品国产_亚洲人成在线| 亚洲第一页综合图片自拍| 亚洲国产aⅴ综合网| 亚洲精品国产高清不卡在线| ZZIJZZIJ亚洲日本少妇JIZJIZ| 国产偷窥女洗浴在线观看亚洲 | 精品国产日韩久久亚洲| 亚洲一本一道一区二区三区| 亚洲色大成网站www永久网站| 亚洲国产精品18久久久久久 | 亚洲制服中文字幕第一区| 亚洲综合久久久久久中文字幕| 亚洲综合激情九月婷婷| 亚洲乱码在线视频| 亚洲国产精品嫩草影院| 亚洲高清最新av网站| 日本亚洲欧洲免费天堂午夜看片女人员 | 亚洲国产天堂在线观看| 亚洲熟妇av一区二区三区下载| 亚洲一区在线观看视频| 伊人久久亚洲综合影院首页| 狼人大香伊蕉国产WWW亚洲|