Python進(jìn)行圖片信息提取并重命名
一、問(wèn)題
有人在微信群?jiǎn)柸绾慰焖侔岩恍﹫D片中的第一行或第二行的文字提取出來(lái),并將其重命名。人工操作費(fèi)時(shí)費(fèi)力,如果用Python就可以實(shí)現(xiàn)批量操作,而不必一張一張識(shí)別、校對(duì)再重命名了。
二、主要思路
Tesseract-OCR是一款優(yōu)秀的開(kāi)源OCR軟件,目前由Google維護(hù)改進(jìn),已發(fā)展到5.0版本,從4.0版本起增加了基于LSTM神經(jīng)網(wǎng)絡(luò)的識(shí)別引擎。
本項(xiàng)目的主要思路是用Tesseract-OCR工具來(lái)識(shí)別圖片,雖然這個(gè)工具的識(shí)別率并不高,但是免費(fèi)可以使用,親測(cè)效果不錯(cuò)。然后,提取圖片中的第一行和第二行的內(nèi)容為字符串,并將其中不能用于文件名的符號(hào)清除掉,再采用os.rename()來(lái)重命名。
1. 安裝相應(yīng)的包
要想識(shí)別圖片,就要安裝了 pytesseract 庫(kù)和PIL庫(kù)
pip install pytesseract,PIL
2. 下載Tessaract-OCR工具
如果光安裝pytesseract庫(kù),不安裝這個(gè)軟件也不行,大家可以去下面的地址下載。
https://github.com/UB-Mannheim/tesseract/wiki?github.com/UB-Mannheim/tesseract/wiki
下載和你系統(tǒng)警醒的軟件
3. 安裝Tesseract
下載到本地后,大約有49M,然后進(jìn)行安裝,注意下載過(guò)程中要識(shí)別不同的語(yǔ)言,就要勾選相應(yīng)的語(yǔ)種,如我要識(shí)別的是中文,語(yǔ)言那里勾選的是Chinese-Simplified。
安裝Tesseract
4. 配置環(huán)境
安裝完之后,我們還需要找到安裝目錄下這個(gè)Tesseract.exe的路徑,把它的路徑放到Python里。
pytesseract.pytesseract.tesseract_cmd = r'D:\Program Files\Tesseract-OCR\tesseract.exe'
5. 編寫(xiě)代碼
萬(wàn)事俱備,就可以編寫(xiě)代碼。編寫(xiě)時(shí),需要用到文件管理模塊os,正則表達(dá)式模塊re,圖像編輯模塊PIL等。
import os import re from PIL import Image import pytesseract pytesseract.pytesseract.tesseract_cmd = r'D:\Program Files\Tesseract-OCR\tesseract.exe' def sanitize_filename(name): """去除文件名中不允許的字符""" return re.sub(r'[<>:"/\\|?*]', '', name) def rename_images_with_first_line_text(folder_path): # 獲取文件夾中所有的jpg圖片 for filename in os.listdir(folder_path): if filename.lower().endswith(".jpg"): image_path = os.path.join(folder_path, filename) try: # 打開(kāi)圖片并使用 pytesseract 識(shí)別第一行文字 image = Image.open(image_path) text = pytesseract.image_to_string(image, lang="chi_sim") # 識(shí)別簡(jiǎn)體中文 first_line = "".join(text.splitlines()[0:2]).strip() # 僅取第一行和第二行文字并去除空格 if first_line: # 將文件名設(shè)為識(shí)別到的第一行文字 new_filename = f"{sanitize_filename(first_line)}.jpg" new_path = os.path.join(folder_path, new_filename) os.rename(image_path, new_path) print(f"文件已重命名為: {new_filename}") else: print(f"未檢測(cè)到文字,跳過(guò)文件: {filename}") except Exception as e: print(f"處理文件 {filename} 時(shí)出錯(cuò): {e}") # 使用文件夾路徑調(diào)用函數(shù) folder_path = "." # 替換為存放JPG圖片的文件夾路徑 rename_images_with_first_line_text(folder_path)
三、學(xué)后總結(jié)
1. 采用tesseract來(lái)進(jìn)行圖片識(shí)別效率還挺高,一秒基本上一張,就是準(zhǔn)備率還需要進(jìn)一步提升。據(jù)說(shuō)還可以進(jìn)行模型訓(xùn)練,進(jìn)一步提高其準(zhǔn)確率。
2. 后期可以采用百度等大廠的圖片識(shí)別api進(jìn)行語(yǔ)片識(shí)別,進(jìn)一步提高準(zhǔn)確率。
3. 采用指定模塊進(jìn)行圖片識(shí)別提供了一個(gè)不錯(cuò)的思路,畢竟現(xiàn)在api的調(diào)用費(fèi)也十分高昂。
到此這篇關(guān)于Python進(jìn)行圖片信息提取并重命名的文章就介紹到這了,更多相關(guān)Python提取圖片信息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python語(yǔ)言實(shí)現(xiàn)貪吃蛇游戲
這篇文章主要為大家詳細(xì)介紹了python語(yǔ)言實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11使用Python實(shí)現(xiàn)USB自動(dòng)復(fù)制文件
USB驅(qū)動(dòng)器作為常見(jiàn)的數(shù)據(jù)存儲(chǔ)設(shè)備,經(jīng)常用于數(shù)據(jù)傳輸和備份,本文將介紹如何利用Python編寫(xiě)腳本來(lái)自動(dòng)化這一過(guò)程,感興趣的小伙伴可以了解一下2025-02-02python向MySQL數(shù)據(jù)庫(kù)插入數(shù)據(jù)的操作方法
這篇文章主要介紹了python向MySQL數(shù)據(jù)庫(kù)插入數(shù)據(jù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11使用pyqt5 tablewidget 單元格設(shè)置正則表達(dá)式
今天小編就為大家分享一篇使用pyqt5 tablewidget 單元格設(shè)置正則表達(dá)式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12tkinter動(dòng)態(tài)顯示時(shí)間的兩種實(shí)現(xiàn)方法
這篇文章主要介紹了tkinter動(dòng)態(tài)顯示時(shí)間的兩種實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01用Python編寫(xiě)簡(jiǎn)單的微博爬蟲(chóng)
這篇文章主要介紹了如何利用Python編寫(xiě)一個(gè)簡(jiǎn)單的微博爬蟲(chóng),感興趣的小伙伴們可以參考一下2016-03-03使用jupyter notebook直接打開(kāi).md格式的文件
這篇文章主要介紹了使用jupyter notebook直接打開(kāi).md格式的文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04