1. 程式人生 > >批量識別圖中文字自動命名,讓你1秒找到騷圖

批量識別圖中文字自動命名,讓你1秒找到騷圖

自從上次批量的儲存了半佛老師的各種騷圖之後:[我用Python一鍵儲存了半佛老師所有的騷氣表情包](https://mp.weixin.qq.com/s/tZjWYQMspvIK94HtpVFCww),每次做視訊,找圖就相當的費勁,因為圖片太多,每次想要找到固定的圖的話。就像大海撈針一樣。因為上個版本的程式碼儲存圖片是擷取部分圖片連結進行命名的,所以名稱是隨機的。 所以今天我準備對這些圖片重新命名。按照表情包中的文字來命名。所以我得找到能夠識別圖片中文字的方法。基礎的方法的話,那就需要安裝影象處理相關的庫,像 pillow、pytesser3、Tesseract-OCR 等等庫。用這些庫識別圖片中的文字的成功率不是很高,所有我準備呼叫一下第三方的一些庫。我看了一下百度有個文字識別的API介面。我們需要在下面地址註冊應用。 ``` https://ai.baidu.com/tech/ocr ``` 我們在文字識別裡面去建立一個應用,選擇圖片文字識別。 ![](https://img2020.cnblogs.com/other/1229977/202004/1229977-20200426201134541-1626601226.png) 通用文字識別介面一天有5萬次免費呼叫次數,對我們儲存的幾千多張的圖片來說,綽綽有餘了。 ![](https://img2020.cnblogs.com/other/1229977/202004/1229977-20200426201134809-866182043.png) 建立成功之後返回應用列表,我們可以看到剛剛建立的應用,有三個重要的引數,我們等下會用到 AppID、API Key、Secret Key。 ![](https://img2020.cnblogs.com/other/1229977/202004/1229977-20200426201135009-1797540326.png) 我們就可以呼叫百度的這個識別圖片文字的API介面庫。我們首先需要安裝這個baidu-aip庫。 ``` pip install baidu-aip ``` 使用這個文字識別介面挑了幾張圖測試下效果: ![](https://img2020.cnblogs.com/other/1229977/202004/1229977-20200426201135298-1922220219.png) 總結下: 1、gif圖片不識別,只能識別靜態圖,jpg、png、jpeg等。 2、識別成功率並不是100%,比如「人」會被識別成「入」。 ![](https://img2020.cnblogs.com/other/1229977/202004/1229977-20200426201135773-1109738515.png) 3、圖片中文字有換行的,都會分開以字典形式儲存在 words_result 列表中。 我對有多行的文字全部加起來,組成一行文字。 ![](https://img2020.cnblogs.com/other/1229977/202004/1229977-20200426201136158-1863830273.png) 圖片中有時會存在無法儲存為名稱的符號。 我用 replace 方法對它進行替換去除。 ``` title = t.replace('/', '').replace('\\', '').replace(':', '').replace('*', '').replace('?', '').replace('<', '')\ .replace('>', '').replace('|', '').replace('.', '') ``` gif 動態圖無法識別,我們對它按照時間戳重新命名。 ![](https://img2020.cnblogs.com/other/1229977/202004/1229977-20200426201136350-244766780.png) 表情包中沒有文字的,我們也以時間戳命名。 ![](https://img2020.cnblogs.com/other/1229977/202004/1229977-20200426201136506-1320005101.png) 給出我們需要批量改名稱的資料夾目錄,使用 rename 方法就可以批量改名字。 當然,我們也可以對上個版本的程式碼進行優化,就是邊儲存圖片的時候邊重新命名。在下載圖片的 download 方法後面加下根據表情包中文字重新命名的方法即可。 ![](https://img2020.cnblogs.com/other/1229977/202004/1229977-20200426201136754-1790015888.png) 效果如下: ![](https://img2020.cnblogs.com/other/1229977/202004/1229977-20200426201137075-2145677079.png) 這樣,大部分的圖片名稱就是根據圖中文字命名的,搜尋起來更加方便了。比如,我要搜尋「川 人類之光 普 老師」的素材的時候,輸入「人類之光」就可以找到了。 ![](https://img2020.cnblogs.com/other/1229977/202004/1229977-20200426201140031-241312166.gif) 最後,原創視訊昨天已發到 B 站,很魔性,一起來欣賞下吧! [硬核加倍,識別表情包中文字當成名稱命名,1秒找到我要的表情包](https://www.bilibili.com/video/BV1u541147gQ) 本文兩個版本的程式碼(邊儲存變改名和對一個目錄下的所有圖片批量改名)全部發在 GitHub 上了,在本公眾號「Python知識圈」後臺輸入框回覆「重新命名」即可。 歡迎關注公眾號「Python知識圈」,公眾號後臺回覆關鍵字,獲取更多幹貨。 > 回覆「英語」:送你英語 7000 單詞速記法,親測非常有效。 > 回覆「程式設計」:免費獲贈2019最新程式設計資料,認真學完BAT offer 拿到手軟。 > 回覆「賺錢」:領取簡單可實操的 36 個賺錢的小專案,每天多賺100塊零